From 0f151e49472f0e2c1ead499a65a07bc63adb8d66 Mon Sep 17 00:00:00 2001 From: Michael Croes Date: Wed, 27 Jun 2018 21:24:23 +0200 Subject: [PATCH] Add tests for ConnectionRequest --- S7.Net.UnitTest/ConnectionRequestTest.cs | 82 ++++++++++++++++++++++++ S7.Net.UnitTest/S7.Net.UnitTest.csproj | 3 +- 2 files changed, 84 insertions(+), 1 deletion(-) create mode 100644 S7.Net.UnitTest/ConnectionRequestTest.cs diff --git a/S7.Net.UnitTest/ConnectionRequestTest.cs b/S7.Net.UnitTest/ConnectionRequestTest.cs new file mode 100644 index 0000000..4615c3a --- /dev/null +++ b/S7.Net.UnitTest/ConnectionRequestTest.cs @@ -0,0 +1,82 @@ +using Microsoft.VisualStudio.TestTools.UnitTesting; +using S7.Net.Protocol; + +namespace S7.Net.UnitTest +{ + [TestClass] + public class ConnectionRequestTest + { + [TestMethod] + public void Test_ConnectionRequest_S7_200() + { + CollectionAssert.AreEqual(MakeConnectionRequest(16, 0, 16, 0), + ConnectionRequest.GetCOTPConnectionRequest(CpuType.S7200, 0, 0)); + } + + [TestMethod] + public void Test_ConnectionRequest_S7_300() + { + CollectionAssert.AreEqual(MakeConnectionRequest(1, 0, 3, 0), + ConnectionRequest.GetCOTPConnectionRequest(CpuType.S7300, 0, 0)); + CollectionAssert.AreEqual(MakeConnectionRequest(1, 0, 3, 1), + ConnectionRequest.GetCOTPConnectionRequest(CpuType.S7300, 0, 1)); + CollectionAssert.AreEqual(MakeConnectionRequest(1, 0, 3, 33), + ConnectionRequest.GetCOTPConnectionRequest(CpuType.S7300, 1, 1)); + } + + [TestMethod] + public void Test_ConnectionRequest_S7_400() + { + CollectionAssert.AreEqual(MakeConnectionRequest(1, 0, 3, 0), + ConnectionRequest.GetCOTPConnectionRequest(CpuType.S7400, 0, 0)); + CollectionAssert.AreEqual(MakeConnectionRequest(1, 0, 3, 1), + ConnectionRequest.GetCOTPConnectionRequest(CpuType.S7400, 0, 1)); + CollectionAssert.AreEqual(MakeConnectionRequest(1, 0, 3, 33), + ConnectionRequest.GetCOTPConnectionRequest(CpuType.S7400, 1, 1)); + } + + [TestMethod] + public void Test_ConnectionRequest_S7_1200() + { + CollectionAssert.AreEqual(MakeConnectionRequest(1, 0, 3, 0), + ConnectionRequest.GetCOTPConnectionRequest(CpuType.S71200, 0, 0)); + CollectionAssert.AreEqual(MakeConnectionRequest(1, 0, 3, 1), + ConnectionRequest.GetCOTPConnectionRequest(CpuType.S71200, 0, 1)); + CollectionAssert.AreEqual(MakeConnectionRequest(1, 0, 3, 33), + ConnectionRequest.GetCOTPConnectionRequest(CpuType.S71200, 1, 1)); + } + + [TestMethod] + public void Test_ConnectionRequest_S7_1500() + { + CollectionAssert.AreEqual(MakeConnectionRequest(0x10, 0x2, 3, 0), + ConnectionRequest.GetCOTPConnectionRequest(CpuType.S71500, 0, 0)); + CollectionAssert.AreEqual(MakeConnectionRequest(0x10, 0x2, 3, 1), + ConnectionRequest.GetCOTPConnectionRequest(CpuType.S71500, 0, 1)); + CollectionAssert.AreEqual(MakeConnectionRequest(0x10, 0x2, 3, 33), + ConnectionRequest.GetCOTPConnectionRequest(CpuType.S71500, 1, 1)); + } + + private static byte[] MakeConnectionRequest(byte sourceTsap1, byte sourceTsap2, byte destTsap1, byte destTsap2) + { + return new byte[] + { + 3, 0, 0, 22, //TPKT + 17, //COTP Header Length + 224, //Connect Request + 0, 0, //Destination Reference + 0, 46, //Source Reference + 0, //Flags + 193, //Parameter Code (src-tasp) + 2, //Parameter Length + sourceTsap1, sourceTsap2, //Source TASP + 194, //Parameter Code (dst-tasp) + 2, //Parameter Length + destTsap1, destTsap2, //Destination TASP + 192, //Parameter Code (tpdu-size) + 1, //Parameter Length + 9 //TPDU Size (2^9 = 512) + }; + } + } +} diff --git a/S7.Net.UnitTest/S7.Net.UnitTest.csproj b/S7.Net.UnitTest/S7.Net.UnitTest.csproj index 1ead757..bfaa48e 100644 --- a/S7.Net.UnitTest/S7.Net.UnitTest.csproj +++ b/S7.Net.UnitTest/S7.Net.UnitTest.csproj @@ -60,6 +60,7 @@ + @@ -119,4 +120,4 @@ --> - + \ No newline at end of file