選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

59 行
3.1 KiB

  1. using JT808.Protocol.Enums;
  2. using JT808.Protocol.Extensions;
  3. using JT808.Protocol.Interfaces;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Diagnostics;
  7. using System.Linq;
  8. using System.Reflection;
  9. using Xunit;
  10. namespace JT808.Protocol.Test.Extensions
  11. {
  12. public class JT808EnumExtensionsTest
  13. {
  14. [Fact]
  15. public void Test1()
  16. {
  17. var list0 = JT808EnumExtensions.GetEnumTypes<JT808.Protocol.Enums.JT808Alarm>(5, 32);
  18. var list1 = JT808EnumExtensions.GetEnumTypes<JT808.Protocol.Enums.JT808Alarm>(16, 32);
  19. var list2 = JT808EnumExtensions.GetEnumTypes<JT808.Protocol.Enums.JT808Alarm>(18, 32);
  20. var list3 = JT808EnumExtensions.GetEnumTypes<JT808.Protocol.Enums.JT808Alarm>(24, 32);
  21. var list4 = JT808EnumExtensions.GetEnumTypes<JT808.Protocol.Enums.JT808Alarm>(31, 32);
  22. var list5= JT808EnumExtensions.GetEnumTypes<JT808.Protocol.Enums.JT808Alarm>(2147483679, 33);
  23. Assert.Equal(list0, new List<JT808Alarm>() { JT808Alarm.紧急报警_触动报警开关后触发,JT808Alarm.疲劳驾驶 } );
  24. Assert.Equal(list1, new List<JT808Alarm>() { JT808Alarm.GNSS模块发生故障} );
  25. Assert.Equal(list2, new List<JT808Alarm>() { JT808Alarm.超速报警, JT808Alarm.GNSS模块发生故障 });
  26. Assert.Equal(list3, new List<JT808Alarm>() { JT808Alarm.危险预警, JT808Alarm.GNSS模块发生故障 });
  27. Assert.Equal(list3, new List<JT808Alarm>() { JT808Alarm.危险预警, JT808Alarm.GNSS模块发生故障 });
  28. Assert.Equal(list4, new List<JT808Alarm>() { JT808Alarm.紧急报警_触动报警开关后触发, JT808Alarm.超速报警,JT808Alarm.疲劳驾驶, JT808Alarm.危险预警, JT808Alarm.GNSS模块发生故障 });
  29. Assert.Equal(list5, new List<JT808Alarm>() { JT808Alarm.紧急报警_触动报警开关后触发, JT808Alarm.超速报警, JT808Alarm.疲劳驾驶, JT808Alarm.危险预警, JT808Alarm.GNSS模块发生故障, JT808Alarm.非法开门报警 });
  30. }
  31. [Fact]
  32. public void Test2()
  33. {
  34. var types = Enum.GetNames(typeof(JT808MsgId));
  35. var bodyTypes = Assembly.GetAssembly(typeof(JT808Package)).GetTypes().Where(w => w.BaseType == typeof(JT808Bodies)).ToList();
  36. Assert.Equal(types.Length, bodyTypes.Count);
  37. }
  38. [Fact]
  39. public void Test3()
  40. {
  41. var types = Enum.GetNames(typeof(JT808MsgId));
  42. var bodyTypes = Assembly.GetAssembly(typeof(JT808Package)).GetTypes().Where(w => w.BaseType == typeof(JT808Bodies)).ToList();
  43. foreach (var type in bodyTypes)
  44. {
  45. var instance = Activator.CreateInstance(type);
  46. if(instance is JT808Bodies jT808Bodies)
  47. {
  48. string code = $"0x{jT808Bodies.MsgId.ToString("X2").PadLeft(4, '0')}";
  49. string name = jT808Bodies.Description;
  50. Debug.WriteLine(type.FullName);
  51. }
  52. }
  53. Assert.Equal(types.Length, bodyTypes.Count);
  54. }
  55. }
  56. }