using JT808.Protocol.Enums; using JT808.Protocol.Extensions; using JT808.Protocol.Interfaces; using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; using Xunit; namespace JT808.Protocol.Test.Extensions { public class JT808EnumExtensionsTest { [Fact] public void Test1() { var list0 = JT808EnumExtensions.GetEnumTypes(5, 32); var list1 = JT808EnumExtensions.GetEnumTypes(16, 32); var list2 = JT808EnumExtensions.GetEnumTypes(18, 32); var list3 = JT808EnumExtensions.GetEnumTypes(24, 32); var list4 = JT808EnumExtensions.GetEnumTypes(31, 32); var list5= JT808EnumExtensions.GetEnumTypes(2147483679, 33); Assert.Equal(list0, new List() { JT808Alarm.紧急报警_触动报警开关后触发,JT808Alarm.疲劳驾驶 } ); Assert.Equal(list1, new List() { JT808Alarm.GNSS模块发生故障} ); Assert.Equal(list2, new List() { JT808Alarm.超速报警, JT808Alarm.GNSS模块发生故障 }); Assert.Equal(list3, new List() { JT808Alarm.危险预警, JT808Alarm.GNSS模块发生故障 }); Assert.Equal(list3, new List() { JT808Alarm.危险预警, JT808Alarm.GNSS模块发生故障 }); Assert.Equal(list4, new List() { JT808Alarm.紧急报警_触动报警开关后触发, JT808Alarm.超速报警,JT808Alarm.疲劳驾驶, JT808Alarm.危险预警, JT808Alarm.GNSS模块发生故障 }); Assert.Equal(list5, new List() { JT808Alarm.紧急报警_触动报警开关后触发, JT808Alarm.超速报警, JT808Alarm.疲劳驾驶, JT808Alarm.危险预警, JT808Alarm.GNSS模块发生故障, JT808Alarm.非法开门报警 }); } [Fact] public void Test2() { var types = Enum.GetNames(typeof(JT808MsgId)); var bodyTypes = Assembly.GetAssembly(typeof(JT808Package)).GetTypes().Where(w => w.BaseType == typeof(JT808Bodies)).ToList(); Assert.Equal(types.Length, bodyTypes.Count); } [Fact] public void Test3() { var types = Enum.GetNames(typeof(JT808MsgId)); var bodyTypes = Assembly.GetAssembly(typeof(JT808Package)).GetTypes().Where(w => w.BaseType == typeof(JT808Bodies)).ToList(); foreach (var type in bodyTypes) { var instance = Activator.CreateInstance(type); if(instance is JT808Bodies jT808Bodies) { string code = $"0x{jT808Bodies.MsgId.ToString("X2").PadLeft(4, '0')}"; string name = jT808Bodies.Description; Debug.WriteLine(type.FullName); } } Assert.Equal(types.Length, bodyTypes.Count); } } }