diff --git a/src/JTNewEnergy.sln b/JTNewEnergy.sln similarity index 85% rename from src/JTNewEnergy.sln rename to JTNewEnergy.sln index be5717c..323f7e2 100644 --- a/src/JTNewEnergy.sln +++ b/JTNewEnergy.sln @@ -3,11 +3,11 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 15 VisualStudioVersion = 15.0.28307.271 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JTNE.Protocol", "JTNE.Protocol\JTNE.Protocol.csproj", "{5B164F58-141D-474E-A82E-672A1C252029}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JTNE.Protocol", "src\JTNE.Protocol\JTNE.Protocol.csproj", "{5B164F58-141D-474E-A82E-672A1C252029}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JTNE.Protocol.Test", "JTNE.Protocol.Test\JTNE.Protocol.Test.csproj", "{30BB532E-4E49-4BB4-A1D4-61DC40F320DB}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JTNE.Protocol.Test", "test\JTNE.Protocol.Test\JTNE.Protocol.Test.csproj", "{30BB532E-4E49-4BB4-A1D4-61DC40F320DB}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JTNE.Protocol.Benchmark", "JTNE.Protocol.Benchmark\JTNE.Protocol.Benchmark.csproj", "{CC6DFCDE-4A75-4643-9416-D459EE9CC88C}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JTNE.Protocol.Benchmark", "test\JTNE.Protocol.Benchmark\JTNE.Protocol.Benchmark.csproj", "{CC6DFCDE-4A75-4643-9416-D459EE9CC88C}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution diff --git a/src/JTNE.Protocol/Attributes/JTNEBodiesTypeAttribute.cs b/src/JTNE.Protocol/Attributes/JTNEBodiesTypeAttribute.cs index 65dff14..620ad92 100644 --- a/src/JTNE.Protocol/Attributes/JTNEBodiesTypeAttribute.cs +++ b/src/JTNE.Protocol/Attributes/JTNEBodiesTypeAttribute.cs @@ -1,14 +1,11 @@ using System; -namespace JTNE.Protocol.Attributes -{ - [AttributeUsage(AttributeTargets.Field, Inherited = false, AllowMultiple = false)] - public sealed class JTNEBodiesTypeAttribute : Attribute - { - public JTNEBodiesTypeAttribute(Type jT808BodiesType) - { - JT808BodiesType = jT808BodiesType; +namespace JTNE.Protocol.Attributes { + [AttributeUsage (AttributeTargets.Field, Inherited = false, AllowMultiple = false)] + public sealed class JTNEBodiesTypeAttribute : Attribute { + public JTNEBodiesTypeAttribute (Type jT808BodiesType) { + BodyType = jT808BodiesType; } - public Type JT808BodiesType { get;} + public Type BodyType { get; } } -} +} \ No newline at end of file diff --git a/src/JTNE.Protocol/Formatters/JTNEHeaderPackageFormatter.cs b/src/JTNE.Protocol/Formatters/JTNEHeaderPackageFormatter.cs index 4632b21..124732d 100644 --- a/src/JTNE.Protocol/Formatters/JTNEHeaderPackageFormatter.cs +++ b/src/JTNE.Protocol/Formatters/JTNEHeaderPackageFormatter.cs @@ -8,9 +8,9 @@ using System.Text; namespace JTNE.Protocol.Formatters { - public class JTNEHeaderPackageFormatter : IJTNEFormatter + public class JTNEHeaderPackageFormatter : IJTNEFormatter { - public JTNEHeaderPackage Deserialize(ReadOnlySpan bytes, out int readSize) + public JTNEPackageHeader Deserialize(ReadOnlySpan bytes, out int readSize) { int offset = 0; // 1.进行固定头校验 @@ -25,7 +25,7 @@ namespace JTNE.Protocol.Formatters if (bCCCode != bCCCode2) throw new JTNEException(JTNEErrorCode.BCCCodeError, $"request:{bCCCode}!=calculate:{bCCCode2}"); } - JTNEHeaderPackage jTNEPackage = new JTNEHeaderPackage(); + JTNEPackageHeader jTNEPackage = new JTNEPackageHeader(); offset += 2; // 3.命令标识 jTNEPackage.MsgId = JTNEBinaryExtensions.ReadByteLittle(bytes, ref offset); @@ -42,7 +42,7 @@ namespace JTNE.Protocol.Formatters // todo: 8.2.解析出对应数据体 if (jTNEPackage.DataUnitLength > 0) { - Type jTNEBodiesImplType = JTNEMsgIdFactory.GetBodiesImplTypeByMsgId(jTNEPackage.MsgId); + Type jTNEBodiesImplType = JTNEMsgIdFactory.GetBodyTypeByMsgId(jTNEPackage.MsgId); if (jTNEBodiesImplType != null) { int bodyReadSize = 0; @@ -63,7 +63,7 @@ namespace JTNE.Protocol.Formatters return jTNEPackage; } - public int Serialize(ref byte[] bytes, int offset, JTNEHeaderPackage value) + public int Serialize(ref byte[] bytes, int offset, JTNEPackageHeader value) { // 1.起始符1 offset += JTNEBinaryExtensions.WriteByteLittle(bytes, offset, value.BeginFlag1); diff --git a/src/JTNE.Protocol/Formatters/JTNEPackageFormatter.cs b/src/JTNE.Protocol/Formatters/JTNEPackageFormatter.cs index 3b39944..aa6a547 100644 --- a/src/JTNE.Protocol/Formatters/JTNEPackageFormatter.cs +++ b/src/JTNE.Protocol/Formatters/JTNEPackageFormatter.cs @@ -39,7 +39,7 @@ namespace JTNE.Protocol.Formatters { // 8.1.根据数据加密方式进行解码 // 8.2.解析出对应数据体 if (jTNEPackage.DataUnitLength > 0) { - Type jTNEBodiesImplType = JTNEMsgIdFactory.GetBodiesImplTypeByMsgId ((byte)jTNEPackage.MsgId); + Type jTNEBodiesImplType = JTNEMsgIdFactory.GetBodyTypeByMsgId ((byte)jTNEPackage.MsgId); if (jTNEBodiesImplType != null) { int bodyReadSize = 0; try { @@ -86,7 +86,7 @@ namespace JTNE.Protocol.Formatters { // 7.记录当前偏移量 int tmpOffset = offset; // 8.数据体 - Type jTNEBodiesImplType = JTNEMsgIdFactory.GetBodiesImplTypeByMsgId ((byte)value.MsgId); + Type jTNEBodiesImplType = JTNEMsgIdFactory.GetBodyTypeByMsgId ((byte)value.MsgId); int messageBodyOffset = 0; if (jTNEBodiesImplType != null) { if (value.Bodies != null) { diff --git a/src/JTNE.Protocol/Internal/JTNEMsgIdFactory.cs b/src/JTNE.Protocol/Internal/JTNEMsgIdFactory.cs index 620cece..037162a 100644 --- a/src/JTNE.Protocol/Internal/JTNEMsgIdFactory.cs +++ b/src/JTNE.Protocol/Internal/JTNEMsgIdFactory.cs @@ -13,23 +13,26 @@ namespace JTNE.Protocol.Internal { InitMap (); } - internal static Type GetBodiesImplTypeByMsgId (byte msgId) => map.TryGetValue (msgId, out Type type) ? type : null; + /// + /// 根据 获取 body 类型 + /// + /// + /// + internal static Type GetBodyTypeByMsgId (byte msgId) => map.TryGetValue (msgId, out Type type) ? type : null; private static void InitMap () { foreach (JTNEMsgId msgId in Enum.GetValues (typeof (JTNEMsgId))) { - JTNEBodiesTypeAttribute jT808BodiesTypeAttribute = msgId.GetAttribute (); - map.Add ((byte) msgId, jT808BodiesTypeAttribute?.JT808BodiesType); + JTNEBodiesTypeAttribute attr = msgId.GetAttribute (); + map.Add ((byte) msgId, attr?.BodyType); } } - internal static void SetMap (byte msgId) - where TJTNEBodies : JTNEBodies { + internal static void SetMap (byte msgId) where TJTNEBodies : JTNEBodies { if (!map.ContainsKey (msgId)) map.Add (msgId, typeof (TJTNEBodies)); } - internal static void ReplaceMap (byte msgId) - where TJTNEBodies : JTNEBodies { + internal static void ReplaceMap (byte msgId) where TJTNEBodies : JTNEBodies { if (!map.ContainsKey (msgId)) map.Add (msgId, typeof (TJTNEBodies)); else diff --git a/src/JTNE.Protocol/JTNEHeaderPackage.cs b/src/JTNE.Protocol/JTNEHeaderPackage.cs index 01f7691..95b3288 100644 --- a/src/JTNE.Protocol/JTNEHeaderPackage.cs +++ b/src/JTNE.Protocol/JTNEHeaderPackage.cs @@ -11,7 +11,7 @@ namespace JTNE.Protocol /// 例如:不同的厂商可能加密方式不同,所以消息数据体不做加解密的判断。 /// [JTNEFormatter(typeof(JTNEHeaderPackageFormatter))] - public class JTNEHeaderPackage + public class JTNEPackageHeader { /// /// 起始符1 diff --git a/src/JTNE.Protocol.Benchmark/JTNE.Protocol.Benchmark.csproj b/test/JTNE.Protocol.Benchmark/JTNE.Protocol.Benchmark.csproj similarity index 87% rename from src/JTNE.Protocol.Benchmark/JTNE.Protocol.Benchmark.csproj rename to test/JTNE.Protocol.Benchmark/JTNE.Protocol.Benchmark.csproj index b172e9b..c8a8cab 100644 --- a/src/JTNE.Protocol.Benchmark/JTNE.Protocol.Benchmark.csproj +++ b/test/JTNE.Protocol.Benchmark/JTNE.Protocol.Benchmark.csproj @@ -14,6 +14,6 @@ - + diff --git a/src/JTNE.Protocol.Benchmark/JTNESerializerContext.cs b/test/JTNE.Protocol.Benchmark/JTNESerializerContext.cs similarity index 100% rename from src/JTNE.Protocol.Benchmark/JTNESerializerContext.cs rename to test/JTNE.Protocol.Benchmark/JTNESerializerContext.cs diff --git a/src/JTNE.Protocol.Benchmark/Program.cs b/test/JTNE.Protocol.Benchmark/Program.cs similarity index 100% rename from src/JTNE.Protocol.Benchmark/Program.cs rename to test/JTNE.Protocol.Benchmark/Program.cs diff --git a/src/JTNE.Protocol.Test/Extensions/JTNEPackageExtensionsTest.cs b/test/JTNE.Protocol.Test/Extensions/JTNEPackageExtensionsTest.cs similarity index 100% rename from src/JTNE.Protocol.Test/Extensions/JTNEPackageExtensionsTest.cs rename to test/JTNE.Protocol.Test/Extensions/JTNEPackageExtensionsTest.cs diff --git a/test/JTNE.Protocol.Test/Internal/JTNEMsgIdFactoryTests.cs b/test/JTNE.Protocol.Test/Internal/JTNEMsgIdFactoryTests.cs new file mode 100644 index 0000000..48fbf2e --- /dev/null +++ b/test/JTNE.Protocol.Test/Internal/JTNEMsgIdFactoryTests.cs @@ -0,0 +1,21 @@ +using System; +using JTNE.Protocol.Enums; +using JTNE.Protocol.Internal; +using Xunit; + +namespace JTNE.Protocol.Test.Internal { + public class JTNEMsgIdFactoryTests { + [Theory] + [InlineData (JTNEMsgId.Login)] + [InlineData (JTNEMsgId.UploadIM)] + [InlineData (JTNEMsgId.Logout)] + [InlineData (JTNEMsgId.PlatformLogin)] + [InlineData (JTNEMsgId.PlatformLogout)] + [InlineData (JTNEMsgId.HeartBeat)] + [InlineData (JTNEMsgId.CheckTime)] + public void TestGetBodiesImplTypeByMsgId (JTNEMsgId msgId) { + var body = JTNEMsgIdFactory.GetBodyTypeByMsgId ((byte) msgId); + Assert.NotNull (body); + } + } +} \ No newline at end of file diff --git a/src/JTNE.Protocol.Test/JTNE.Protocol.Test.csproj b/test/JTNE.Protocol.Test/JTNE.Protocol.Test.csproj similarity index 85% rename from src/JTNE.Protocol.Test/JTNE.Protocol.Test.csproj rename to test/JTNE.Protocol.Test/JTNE.Protocol.Test.csproj index 3d41a8c..2ab5bb8 100644 --- a/src/JTNE.Protocol.Test/JTNE.Protocol.Test.csproj +++ b/test/JTNE.Protocol.Test/JTNE.Protocol.Test.csproj @@ -15,7 +15,7 @@ - + diff --git a/src/JTNE.Protocol.Test/JTNEHeaderPackageTest.cs b/test/JTNE.Protocol.Test/JTNEHeaderPackageTest.cs similarity index 57% rename from src/JTNE.Protocol.Test/JTNEHeaderPackageTest.cs rename to test/JTNE.Protocol.Test/JTNEHeaderPackageTest.cs index 11ccbff..ad771a5 100644 --- a/src/JTNE.Protocol.Test/JTNEHeaderPackageTest.cs +++ b/test/JTNE.Protocol.Test/JTNEHeaderPackageTest.cs @@ -1,14 +1,13 @@ using System; using System.Collections.Generic; -using System.Text; using JTNE.Protocol.Enums; using JTNE.Protocol.Extensions; using JTNE.Protocol.MessageBody; -using Newtonsoft.Json; using Xunit; using Xunit.Abstractions; -namespace JTNE.Protocol.Test { +namespace JTNE.Protocol.Test +{ public class JTNEHeaderPackageTest { private readonly ITestOutputHelper output; @@ -18,7 +17,7 @@ namespace JTNE.Protocol.Test { [Fact] public void Test1 () { - JTNEHeaderPackage jTNEHeaderPackage = new JTNEHeaderPackage (); + JTNEPackageHeader jTNEHeaderPackage = new JTNEPackageHeader (); jTNEHeaderPackage.VIN = "123456789"; jTNEHeaderPackage.AskId = JTNEAskId.CMD.ToByteValue (); jTNEHeaderPackage.MsgId = JTNEMsgId.Login.ToByteValue (); @@ -40,7 +39,7 @@ namespace JTNE.Protocol.Test { [Fact] public void Test2 () { var data = "232301FE313233343536373839000000000000000001002A130116173738000131323334353637383939383736353433323130300304313233343435363739383730FD".ToHexBytes (); - JTNEHeaderPackage jTNEHeaderPackage = JTNESerializer.Deserialize (data); + JTNEPackageHeader jTNEHeaderPackage = JTNESerializer.Deserialize (data); Assert.Equal (JTNEAskId.CMD.ToByteValue (), jTNEHeaderPackage.AskId); Assert.Equal (JTNEMsgId.Login.ToByteValue (), jTNEHeaderPackage.MsgId); Assert.Equal ("123456789", jTNEHeaderPackage.VIN); @@ -55,42 +54,10 @@ namespace JTNE.Protocol.Test { Assert.Equal ("9870", jTNE_0X01.BatteryNos[2]); } - [Fact] - public void TestGuangtai () { - JTNEGlobalConfigs.Instance.Encoding = Encoding.GetEncoding ("GB18030"); - var data = "23 23 05 FE 30 30 30 30 30 30 30 30 30 30 30 30 30 32 31 31 31 01 00 29 14 07 14 13 26 22 00 01 CD FE BA A3 B9 E3 CC A9 BF D5 B8 DB CD FE BA A3 B9 E3 CC A9 BF D5 B8 DB B3 B5 C1 AA CD F2 01 02 01 A1".ToHexBytes (); - var package = JTNESerializer.Deserialize (data); - Assert.Equal (JTNEAskId.CMD, package.AskId); - Assert.Equal (JTNEMsgId.PlatformLogin, package.MsgId); - Assert.Equal (41, package.DataUnitLength); - Assert.NotNull (package.Bodies); - - Assert.IsType (package.Bodies); - - output.WriteLine (Newtonsoft.Json.JsonConvert.SerializeObject (package.Bodies, Formatting.Indented)); - - var loginbody = (JTNE_0x05) package.Bodies; - Assert.Equal ("威海广泰空港", loginbody.PlatformUserName); - Assert.Equal (1, loginbody.LoginNum); - Assert.Equal (JTNEEncryptMethod.None, loginbody.EncryptMethod); - - } - - [Fact] - public void TestGenerateReply(){ - JTNEGlobalConfigs.Instance.Encoding = Encoding.GetEncoding ("GB18030"); - var data = "23 23 05 FE 30 30 30 30 30 30 30 30 30 30 30 30 30 32 31 31 31 01 00 29 14 07 14 13 26 22 00 01 CD FE BA A3 B9 E3 CC A9 BF D5 B8 DB CD FE BA A3 B9 E3 CC A9 BF D5 B8 DB B3 B5 C1 AA CD F2 01 02 01 A1".ToHexBytes (); - var package = JTNESerializer.Deserialize (data); - var reply = package.GenerateReply(JTNEAskId.Success); - Assert.NotNull(reply); - var bytes = JTNESerializer.Serialize(reply); - output.WriteLine(bytes.ToHexString()); - - } + } public static class JTNEReplyExtensions{ - public static JTNEPackage GenerateReply(this JTNEPackage source,JTNEAskId askId){ return new JTNEPackage(){ MsgId = source.MsgId, diff --git a/test/JTNE.Protocol.Test/JTNEPackageParseTests.cs b/test/JTNE.Protocol.Test/JTNEPackageParseTests.cs new file mode 100644 index 0000000..e8958ce --- /dev/null +++ b/test/JTNE.Protocol.Test/JTNEPackageParseTests.cs @@ -0,0 +1,53 @@ +using System.Text; +using JTNE.Protocol.Enums; +using JTNE.Protocol.Extensions; +using JTNE.Protocol.MessageBody; +using Newtonsoft.Json; +using Xunit; +using Xunit.Abstractions; + +namespace JTNE.Protocol.Test +{ + public class JTNEPackageParseTests{ + + private readonly ITestOutputHelper output; + + public JTNEPackageParseTests (ITestOutputHelper outputHelper) { + this.output = outputHelper; + } + const string data="232302FE303030303030303030303032303037343101009C1407160B210801FF04010000FFFFFFFFE5F6280732FFFE03D1FFFF020101FFFF4E204E204BFFFFFFFF03FFFFFFFFFFFF3000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0401FFFFFFFFFFFFFFFFFFFFFF05FFFFFFFFFFFFFFFFFF06FFFFFFFFFFFFFFFF4800482502450700000000000000000049"; + + [Fact] + public void TestGuangtai () { + JTNEGlobalConfigs.Instance.Encoding = Encoding.GetEncoding ("GB18030"); + var data = "23 23 05 FE 30 30 30 30 30 30 30 30 30 30 30 30 30 32 31 31 31 01 00 29 14 07 14 13 26 22 00 01 CD FE BA A3 B9 E3 CC A9 BF D5 B8 DB CD FE BA A3 B9 E3 CC A9 BF D5 B8 DB B3 B5 C1 AA CD F2 01 02 01 A1".ToHexBytes (); + var package = JTNESerializer.Deserialize (data); + Assert.Equal (JTNEAskId.CMD, package.AskId); + Assert.Equal (JTNEMsgId.PlatformLogin, package.MsgId); + Assert.Equal (41, package.DataUnitLength); + Assert.NotNull (package.Bodies); + + Assert.IsType (package.Bodies); + + output.WriteLine (Newtonsoft.Json.JsonConvert.SerializeObject (package.Bodies, Formatting.Indented)); + + var loginbody = (JTNE_0x05) package.Bodies; + Assert.Equal ("威海广泰空港", loginbody.PlatformUserName); + Assert.Equal (1, loginbody.LoginNum); + Assert.Equal (JTNEEncryptMethod.None, loginbody.EncryptMethod); + + } + + [Fact] + public void TestGenerateReply(){ + JTNEGlobalConfigs.Instance.Encoding = Encoding.GetEncoding ("GB18030"); + var data = "23 23 05 FE 30 30 30 30 30 30 30 30 30 30 30 30 30 32 31 31 31 01 00 29 14 07 14 13 26 22 00 01 CD FE BA A3 B9 E3 CC A9 BF D5 B8 DB CD FE BA A3 B9 E3 CC A9 BF D5 B8 DB B3 B5 C1 AA CD F2 01 02 01 A1".ToHexBytes (); + var package = JTNESerializer.Deserialize (data); + var reply = package.GenerateReply(JTNEAskId.Success); + Assert.NotNull(reply); + var bytes = JTNESerializer.Serialize(reply); + output.WriteLine(bytes.ToHexString()); + + } + } +} \ No newline at end of file diff --git a/src/JTNE.Protocol.Test/MessageBody/JTNE_0x01Test.cs b/test/JTNE.Protocol.Test/MessageBody/JTNE_0x01Test.cs similarity index 100% rename from src/JTNE.Protocol.Test/MessageBody/JTNE_0x01Test.cs rename to test/JTNE.Protocol.Test/MessageBody/JTNE_0x01Test.cs diff --git a/src/JTNE.Protocol.Test/MessageBody/JTNE_0x02Test.cs b/test/JTNE.Protocol.Test/MessageBody/JTNE_0x02Test.cs similarity index 100% rename from src/JTNE.Protocol.Test/MessageBody/JTNE_0x02Test.cs rename to test/JTNE.Protocol.Test/MessageBody/JTNE_0x02Test.cs diff --git a/src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x01Test.cs b/test/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x01Test.cs similarity index 100% rename from src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x01Test.cs rename to test/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x01Test.cs diff --git a/src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x02Test.cs b/test/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x02Test.cs similarity index 100% rename from src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x02Test.cs rename to test/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x02Test.cs diff --git a/src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x03Test.cs b/test/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x03Test.cs similarity index 100% rename from src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x03Test.cs rename to test/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x03Test.cs diff --git a/src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x04Test.cs b/test/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x04Test.cs similarity index 100% rename from src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x04Test.cs rename to test/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x04Test.cs diff --git a/src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x05Test.cs b/test/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x05Test.cs similarity index 100% rename from src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x05Test.cs rename to test/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x05Test.cs diff --git a/src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x06Test.cs b/test/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x06Test.cs similarity index 100% rename from src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x06Test.cs rename to test/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x06Test.cs diff --git a/src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x07Test.cs b/test/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x07Test.cs similarity index 100% rename from src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x07Test.cs rename to test/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x07Test.cs diff --git a/src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x08Test.cs b/test/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x08Test.cs similarity index 100% rename from src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x08Test.cs rename to test/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x08Test.cs diff --git a/src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x09Test.cs b/test/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x09Test.cs similarity index 100% rename from src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x09Test.cs rename to test/JTNE.Protocol.Test/MessageBody/JTNE_0x02_0x09Test.cs diff --git a/src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_CompositeTest.cs b/test/JTNE.Protocol.Test/MessageBody/JTNE_0x02_CompositeTest.cs similarity index 100% rename from src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_CompositeTest.cs rename to test/JTNE.Protocol.Test/MessageBody/JTNE_0x02_CompositeTest.cs diff --git a/src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_CustomBodyTest.cs b/test/JTNE.Protocol.Test/MessageBody/JTNE_0x02_CustomBodyTest.cs similarity index 100% rename from src/JTNE.Protocol.Test/MessageBody/JTNE_0x02_CustomBodyTest.cs rename to test/JTNE.Protocol.Test/MessageBody/JTNE_0x02_CustomBodyTest.cs diff --git a/src/JTNE.Protocol.Test/MessageBody/JTNE_0x03Test.cs b/test/JTNE.Protocol.Test/MessageBody/JTNE_0x03Test.cs similarity index 100% rename from src/JTNE.Protocol.Test/MessageBody/JTNE_0x03Test.cs rename to test/JTNE.Protocol.Test/MessageBody/JTNE_0x03Test.cs diff --git a/src/JTNE.Protocol.Test/MessageBody/JTNE_0x04Test.cs b/test/JTNE.Protocol.Test/MessageBody/JTNE_0x04Test.cs similarity index 100% rename from src/JTNE.Protocol.Test/MessageBody/JTNE_0x04Test.cs rename to test/JTNE.Protocol.Test/MessageBody/JTNE_0x04Test.cs diff --git a/src/JTNE.Protocol.Test/MessageBody/JTNE_0x05Test.cs b/test/JTNE.Protocol.Test/MessageBody/JTNE_0x05Test.cs similarity index 100% rename from src/JTNE.Protocol.Test/MessageBody/JTNE_0x05Test.cs rename to test/JTNE.Protocol.Test/MessageBody/JTNE_0x05Test.cs diff --git a/src/JTNE.Protocol.Test/MessageBody/JTNE_0x06Test.cs b/test/JTNE.Protocol.Test/MessageBody/JTNE_0x06Test.cs similarity index 100% rename from src/JTNE.Protocol.Test/MessageBody/JTNE_0x06Test.cs rename to test/JTNE.Protocol.Test/MessageBody/JTNE_0x06Test.cs diff --git a/src/JTNE.Protocol.Test/MessageBody/JTNE_0x80ReplyTest.cs b/test/JTNE.Protocol.Test/MessageBody/JTNE_0x80ReplyTest.cs similarity index 100% rename from src/JTNE.Protocol.Test/MessageBody/JTNE_0x80ReplyTest.cs rename to test/JTNE.Protocol.Test/MessageBody/JTNE_0x80ReplyTest.cs diff --git a/src/JTNE.Protocol.Test/MessageBody/JTNE_0x80Reply_CustomBodyTest.cs b/test/JTNE.Protocol.Test/MessageBody/JTNE_0x80Reply_CustomBodyTest.cs similarity index 100% rename from src/JTNE.Protocol.Test/MessageBody/JTNE_0x80Reply_CustomBodyTest.cs rename to test/JTNE.Protocol.Test/MessageBody/JTNE_0x80Reply_CustomBodyTest.cs diff --git a/src/JTNE.Protocol.Test/MessageBody/JTNE_0x80Test.cs b/test/JTNE.Protocol.Test/MessageBody/JTNE_0x80Test.cs similarity index 100% rename from src/JTNE.Protocol.Test/MessageBody/JTNE_0x80Test.cs rename to test/JTNE.Protocol.Test/MessageBody/JTNE_0x80Test.cs diff --git a/src/JTNE.Protocol.Test/MessageBody/JTNE_0x81Test.cs b/test/JTNE.Protocol.Test/MessageBody/JTNE_0x81Test.cs similarity index 100% rename from src/JTNE.Protocol.Test/MessageBody/JTNE_0x81Test.cs rename to test/JTNE.Protocol.Test/MessageBody/JTNE_0x81Test.cs diff --git a/src/JTNE.Protocol.Test/MessageBody/JTNE_0x81_CustomBodyTest.cs b/test/JTNE.Protocol.Test/MessageBody/JTNE_0x81_CustomBodyTest.cs similarity index 100% rename from src/JTNE.Protocol.Test/MessageBody/JTNE_0x81_CustomBodyTest.cs rename to test/JTNE.Protocol.Test/MessageBody/JTNE_0x81_CustomBodyTest.cs diff --git a/src/JTNE.Protocol.Test/MessageBody/JTNE_0x82Test.cs b/test/JTNE.Protocol.Test/MessageBody/JTNE_0x82Test.cs similarity index 100% rename from src/JTNE.Protocol.Test/MessageBody/JTNE_0x82Test.cs rename to test/JTNE.Protocol.Test/MessageBody/JTNE_0x82Test.cs diff --git a/src/JTNE.Protocol.Test/MessageBody/JTNE_0x82_CustomBodyTest.cs b/test/JTNE.Protocol.Test/MessageBody/JTNE_0x82_CustomBodyTest.cs similarity index 100% rename from src/JTNE.Protocol.Test/MessageBody/JTNE_0x82_CustomBodyTest.cs rename to test/JTNE.Protocol.Test/MessageBody/JTNE_0x82_CustomBodyTest.cs diff --git a/src/JTNE.Protocol.Test/Package/JTNE_0x01_PackageTest.cs b/test/JTNE.Protocol.Test/Package/JTNE_0x01_PackageTest.cs similarity index 100% rename from src/JTNE.Protocol.Test/Package/JTNE_0x01_PackageTest.cs rename to test/JTNE.Protocol.Test/Package/JTNE_0x01_PackageTest.cs diff --git a/src/JTNE.Protocol.Test/Package/JTNE_0x02_PackageTest.cs b/test/JTNE.Protocol.Test/Package/JTNE_0x02_PackageTest.cs similarity index 100% rename from src/JTNE.Protocol.Test/Package/JTNE_0x02_PackageTest.cs rename to test/JTNE.Protocol.Test/Package/JTNE_0x02_PackageTest.cs diff --git a/src/JTNE.Protocol.Test/Package/JTNE_0x04_PackageTest.cs b/test/JTNE.Protocol.Test/Package/JTNE_0x04_PackageTest.cs similarity index 100% rename from src/JTNE.Protocol.Test/Package/JTNE_0x04_PackageTest.cs rename to test/JTNE.Protocol.Test/Package/JTNE_0x04_PackageTest.cs diff --git a/src/JTNE.Protocol.Test/Package/JTNE_0x05_PackageTest.cs b/test/JTNE.Protocol.Test/Package/JTNE_0x05_PackageTest.cs similarity index 100% rename from src/JTNE.Protocol.Test/Package/JTNE_0x05_PackageTest.cs rename to test/JTNE.Protocol.Test/Package/JTNE_0x05_PackageTest.cs diff --git a/src/JTNE.Protocol.Test/Package/JTNE_0x06_PackageTest.cs b/test/JTNE.Protocol.Test/Package/JTNE_0x06_PackageTest.cs similarity index 100% rename from src/JTNE.Protocol.Test/Package/JTNE_0x06_PackageTest.cs rename to test/JTNE.Protocol.Test/Package/JTNE_0x06_PackageTest.cs diff --git a/src/JTNE.Protocol.Test/Package/JTNE_0x07_PackageTest.cs b/test/JTNE.Protocol.Test/Package/JTNE_0x07_PackageTest.cs similarity index 100% rename from src/JTNE.Protocol.Test/Package/JTNE_0x07_PackageTest.cs rename to test/JTNE.Protocol.Test/Package/JTNE_0x07_PackageTest.cs diff --git a/src/JTNE.Protocol.Test/Package/JTNE_0x08_PackageTest.cs b/test/JTNE.Protocol.Test/Package/JTNE_0x08_PackageTest.cs similarity index 100% rename from src/JTNE.Protocol.Test/Package/JTNE_0x08_PackageTest.cs rename to test/JTNE.Protocol.Test/Package/JTNE_0x08_PackageTest.cs