Ver código fonte

完善附件协议的测试

pull/4/head
SmallChi(Koike) 4 anos atrás
pai
commit
25ea865904
6 arquivos alterados com 134 adições e 19 exclusões
  1. +4
    -0
      src/JTActiveSafety.Protocol.Test/JTActiveSafety.Protocol.Test.csproj
  2. +40
    -0
      src/JTActiveSafety.Protocol.Test/JTActiveSafetySerializerTest.cs
  3. +0
    -14
      src/JTActiveSafety.Protocol.Test/UnitTest1.cs
  4. +9
    -1
      src/JTActiveSafety.Protocol/JTActiveSafety.Protocol.csproj
  5. +77
    -0
      src/JTActiveSafety.Protocol/JTActiveSafety.Protocol.xml
  6. +4
    -4
      src/JTActiveSafety.Protocol/JTActiveSafetySerializer.cs

+ 4
- 0
src/JTActiveSafety.Protocol.Test/JTActiveSafety.Protocol.Test.csproj Ver arquivo

@@ -15,4 +15,8 @@
</PackageReference>
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\JTActiveSafety.Protocol\JTActiveSafety.Protocol.csproj" />
</ItemGroup>

</Project>

+ 40
- 0
src/JTActiveSafety.Protocol.Test/JTActiveSafetySerializerTest.cs Ver arquivo

@@ -0,0 +1,40 @@
using System;
using Xunit;
using JTActiveSafety.Protocol;
using JTActiveSafety.Protocol.Extensions;

namespace JTActiveSafety.Protocol.Test
{
public class JTActiveSafetySerializerTest
{
[Fact]
public void SerializeTest1()
{
JTActiveSafetyPackage package = new JTActiveSafetyPackage();
package.FileName = "alarm.xlsx";
package.Offset = 1;
package.Bodies = new byte[5] { 1, 2, 3, 4, 5 };
var hex = JTActiveSafetySerializer.Serialize(package).ToHexString();
Assert.Equal("3031636400000000000000000000000000000000000000000000000000000000000000000000000000000000616C61726D2E786C737800000001000000050102030405", hex);
}

[Fact]
public void DeserializeTest1()
{
var data = "3031636400000000000000000000000000000000000000000000000000000000000000000000000000000000616C61726D2E786C737800000001000000050102030405".ToHexBytes();
var package = JTActiveSafetySerializer.Deserialize(data);
Assert.Equal(JTActiveSafetyPackage.FH, package.FH_Flag);
Assert.Equal("alarm.xlsx", package.FileName.TrimStart('\0'));
Assert.Equal(1u, package.Offset);
Assert.Equal(5u, package.Length);
Assert.Equal(new byte[5] { 1, 2, 3, 4, 5 }, package.Bodies);
}

[Fact]
public void AnalyzeTest1()
{
var data = "3031636400000000000000000000000000000000000000000000000000000000000000000000000000000000616C61726D2E786C737800000001000000050102030405".ToHexBytes();
var json = JTActiveSafetySerializer.Analyze(data);
}
}
}

+ 0
- 14
src/JTActiveSafety.Protocol.Test/UnitTest1.cs Ver arquivo

@@ -1,14 +0,0 @@
using System;
using Xunit;

namespace JTActiveSafety.Protocol.Test
{
public class UnitTest1
{
[Fact]
public void Test1()
{

}
}
}

+ 9
- 1
src/JTActiveSafety.Protocol/JTActiveSafety.Protocol.csproj Ver arquivo

@@ -15,9 +15,17 @@
<licenseUrl>https://github.com/SmallChi/JTActiveSafety/blob/master/LICENSE</licenseUrl>
<license>https://github.com/SmallChi/JTActiveSafety/blob/master/LICENSE</license>
<GeneratePackageOnBuild>false</GeneratePackageOnBuild>
<Version>1.0.0</Version>
<Version>1.0.0-preview1</Version>
<PackageLicenseFile>LICENSE</PackageLicenseFile>
</PropertyGroup>

<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Debug|netstandard2.0|AnyCPU'">
<DocumentationFile>JTActiveSafety.Protocol.xml</DocumentationFile>
</PropertyGroup>

<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Release|netstandard2.0|AnyCPU'">
<DocumentationFile>JTActiveSafety.Protocol.xml</DocumentationFile>
</PropertyGroup>
<ItemGroup Condition=" '$(TargetFramework)' == 'netstandard2.0' ">
<PackageReference Include="System.Memory" Version="4.5.4" />
</ItemGroup>


+ 77
- 0
src/JTActiveSafety.Protocol/JTActiveSafety.Protocol.xml Ver arquivo

@@ -0,0 +1,77 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>JTActiveSafety.Protocol</name>
</assembly>
<members>
<member name="T:JTActiveSafety.Protocol.Buffers.JTActiveSafetyBufferWriter">
<summary>
<see cref="!:System.Buffers.Writer"/>
</summary>
</member>
<member name="T:JTActiveSafety.Protocol.Extensions.HexExtensions">
<summary>
ref:"www.codeproject.com/tips/447938/high-performance-csharp-byte-array-to-hex-string-t"
</summary>
</member>
<member name="M:JTActiveSafety.Protocol.Extensions.HexExtensions.ToHexBytes(System.String)">
<summary>
16进制字符串转16进制数组
</summary>
<param name="hexString"></param>
<param name="separator"></param>
<returns></returns>
</member>
<member name="F:JTActiveSafety.Protocol.JTActiveSafetyPackage.FH_Bytes">
<summary>
帧头标识
</summary>
</member>
<member name="F:JTActiveSafety.Protocol.JTActiveSafetyPackage.FH">
<summary>
帧头标识
</summary>
</member>
<member name="P:JTActiveSafety.Protocol.JTActiveSafetyPackage.FH_Flag">
<summary>
帧头标识
固定为0x30 0x31 0x63 0x64
</summary>
</member>
<member name="P:JTActiveSafety.Protocol.JTActiveSafetyPackage.FileName">
<summary>
文件名称
</summary>
</member>
<member name="P:JTActiveSafety.Protocol.JTActiveSafetyPackage.Offset">
<summary>
数据偏移量
</summary>
</member>
<member name="P:JTActiveSafety.Protocol.JTActiveSafetyPackage.Length">
<summary>
数据长度
</summary>
</member>
<member name="P:JTActiveSafety.Protocol.JTActiveSafetyPackage.Bodies">
<summary>
数据体
默认长度64K,文件小于64K 则为实际长度
</summary>
</member>
<member name="M:JTActiveSafety.Protocol.MessagePack.JTActiveSafetyMessagePackReader.ReadBigNumber(System.Int32)">
<summary>
数字编码 大端模式、高位在前
</summary>
<param name="len"></param>
</member>
<member name="M:JTActiveSafety.Protocol.MessagePack.JTActiveSafetyMessagePackWriter.WriteBigNumber(System.String,System.Int32)">
<summary>
数字编码 大端模式、高位在前
</summary>
<param name="value"></param>
<param name="len"></param>
</member>
</members>
</doc>

+ 4
- 4
src/JTActiveSafety.Protocol/JTActiveSafetySerializer.cs Ver arquivo

@@ -19,7 +19,7 @@ namespace JTActiveSafety.Protocol
{
JTActiveSafetyMessagePackWriter writer = new JTActiveSafetyMessagePackWriter(buffer);
writer.WriteUInt32(package.FH_Flag);
writer.WriteString(package.FileName);
writer.WriteString(package.FileName.PadLeft(50, '\0'));
writer.WriteUInt32(package.Offset);
writer.WriteUInt32((uint)package.Bodies.Length);
writer.WriteArray(package.Bodies);
@@ -51,13 +51,13 @@ namespace JTActiveSafety.Protocol
{
writer.WriteStartObject();
var header = reader.ReadUInt32();
writer.WriteString($"[{header}]头部", header.ReadNumber());
writer.WriteNumber($"[{ header.ReadNumber()}]头部", header);
var FileName = reader.ReadString(50);
writer.WriteString($"[文件名称]", FileName);
var offset = reader.ReadUInt32();
writer.WriteNumber($"{offset}[数据偏移量]", offset);
writer.WriteNumber($"{offset.ReadNumber()}[数据偏移量]", offset);
var length = reader.ReadUInt32();
writer.WriteNumber($"{length}[数据长度]", length);
writer.WriteNumber($"{length.ReadNumber()}[数据长度]", length);
var bodies = reader.ReadRemainArray().ToArray();
writer.WriteString("[数据体]", string.Join(" ", (bodies).Select(p => p.ToString("X2"))));
writer.WriteEndObject();


Carregando…
Cancelar
Salvar