using JT809.Protocol.Extensions.JT1078.Enums; using JT809.Protocol.Extensions.JT1078.MessageBody; using Microsoft.Extensions.DependencyInjection; using System; using System.Linq; using System.Collections.Generic; using Xunit; using Newtonsoft.Json; namespace JT809.Protocol.Extensions.JT1078.Test { public class JT809_JT1078_0x9900Test { JT809Serializer JT809Serializer; public JT809_JT1078_0x9900Test() { IServiceCollection serviceDescriptors1 = new ServiceCollection(); serviceDescriptors1 .AddJT809Configure() .AddJT1078Configure(); var ServiceProvider1 = serviceDescriptors1.BuildServiceProvider(); var defaultConfig = ServiceProvider1.GetRequiredService(); JT809Serializer = defaultConfig.GetSerializer(); Newtonsoft.Json.JsonConvert.DefaultSettings = new Func(() => { //日期类型默认格式化处理 return new Newtonsoft.Json.JsonSerializerSettings { DateFormatHandling = Newtonsoft.Json.DateFormatHandling.MicrosoftDateFormat, DateFormatString = "yyyy-MM-dd HH:mm:ss" }; }); } [Fact] public void Test1() { JT809_JT1078_0x9900 jT809_JT1078_0x9900 = new JT809_JT1078_0x9900() { VehicleNo="粤B12345", VehicleColor= Protocol.Enums.JT809VehicleColorType.黄色, SubBusinessType= (ushort)JT809_JT1078_SubBusinessType.主动上传音视频资源目录信息应答消息, SubBodies= new JT809_JT1078_0x9900_0x9901() { Result=1, ItemNumber=2 } }; var hex = JT809Serializer.Serialize(jT809_JT1078_0x9900).ToHexString(); Assert.Equal("D4C142313233343500000000000000000000000000029901000000020102", hex); } [Fact] public void Test2() { var jT809_JT1078_0x9900 = JT809Serializer.Deserialize("D4C142313233343500000000000000000000000000029901000000020102".ToHexBytes()); Assert.Equal("粤B12345", jT809_JT1078_0x9900.VehicleNo); Assert.Equal(Protocol.Enums.JT809VehicleColorType.黄色, jT809_JT1078_0x9900.VehicleColor); Assert.Equal((ushort)JT809_JT1078_SubBusinessType.主动上传音视频资源目录信息应答消息, jT809_JT1078_0x9900.SubBusinessType); var jT809_JT1078_0x9900_0x9901 = jT809_JT1078_0x9900.SubBodies as JT809_JT1078_0x9900_0x9901; Assert.Equal(1, jT809_JT1078_0x9900_0x9901.Result); Assert.Equal(2, jT809_JT1078_0x9900_0x9901.ItemNumber); } [Fact] public void Test3() { var GnssDatas = Enumerable.Range(0, 36).Select(m => (byte)m).ToArray(); var AuthorizeCodes = Enumerable.Range(0, 64).Select(m => (byte)m).ToArray(); JT809_JT1078_0x9900 jT809_JT1078_0x9900 = new JT809_JT1078_0x9900() { VehicleNo = "粤B12345", VehicleColor = Protocol.Enums.JT809VehicleColorType.黄色, SubBusinessType = (ushort)JT809_JT1078_SubBusinessType.查询音视频资源目录请求消息, SubBodies = new JT809_JT1078_0x9900_0x9902() { ChannelId = 1, AlarmType = 2, AVItemType = 3, MemType = 4, StartTime = Convert.ToDateTime("2017-07-15 10:10:10"), EndTime = Convert.ToDateTime("2017-07-16 10:10:10"), StreamType =5, AuthorizeCode= AuthorizeCodes, GnssData= GnssDatas } }; var hex = JT809Serializer.Serialize(jT809_JT1078_0x9900).ToHexString(); Assert.Equal("D4C1423132333435000000000000000000000000000299020000008001000000005969798200000000596ACB020000000000000002030504000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F20212223", hex); } [Fact] public void Test4() { var GnssDatas = Enumerable.Range(0, 36).Select(m => (byte)m).ToArray(); var AuthorizeCodes = Enumerable.Range(0, 64).Select(m => (byte)m).ToArray(); var jT809_JT1078_0x9900 = JT809Serializer.Deserialize("D4C1423132333435000000000000000000000000000299020000008001000000005969798200000000596ACB020000000000000002030504000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F20212223".ToHexBytes()); Assert.Equal("粤B12345", jT809_JT1078_0x9900.VehicleNo); Assert.Equal(Protocol.Enums.JT809VehicleColorType.黄色, jT809_JT1078_0x9900.VehicleColor); Assert.Equal((ushort)JT809_JT1078_SubBusinessType.查询音视频资源目录请求消息, jT809_JT1078_0x9900.SubBusinessType); var jT809_JT1078_0x9900_0x9902 = jT809_JT1078_0x9900.SubBodies as JT809_JT1078_0x9900_0x9902; Assert.Equal(1, jT809_JT1078_0x9900_0x9902.ChannelId); Assert.Equal(2u, jT809_JT1078_0x9900_0x9902.AlarmType); Assert.Equal(3, jT809_JT1078_0x9900_0x9902.AVItemType); Assert.Equal(4, jT809_JT1078_0x9900_0x9902.MemType); Assert.Equal(Convert.ToDateTime("2017-07-15 10:10:10"), jT809_JT1078_0x9900_0x9902.StartTime); Assert.Equal(Convert.ToDateTime("2017-07-16 10:10:10"), jT809_JT1078_0x9900_0x9902.EndTime); Assert.Equal(5, jT809_JT1078_0x9900_0x9902.StreamType); Assert.Equal(AuthorizeCodes, jT809_JT1078_0x9900_0x9902.AuthorizeCode); Assert.Equal(GnssDatas, jT809_JT1078_0x9900_0x9902.GnssData); } } }