forked from S7NetPlus/s7netplus
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Release highlights: - Add support for (I|O|Q)(B|D|W) addressing - Fix Type for Mxxxx.x addresses - Align array offsets to even bytes in classes - Improve exceptions on failed reads
- Loading branch information
Showing
8 changed files
with
236 additions
and
9 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,156 @@ | ||
using Microsoft.VisualStudio.TestTools.UnitTesting; | ||
using S7.Net.Types; | ||
using System; | ||
|
||
namespace S7.Net.UnitTest | ||
{ | ||
[TestClass] | ||
public class PLCAddressParsingTests | ||
{ | ||
[TestMethod] | ||
public void T01_ParseM2000_1() | ||
{ | ||
DataItem dataItem = DataItem.FromAddress("M2000.1"); | ||
|
||
Assert.AreEqual(DataType.Memory, dataItem.DataType, "Wrong datatype for M2000.1"); | ||
Assert.AreEqual(0, dataItem.DB, "Wrong dbnumber for M2000.1"); | ||
Assert.AreEqual(VarType.Bit, dataItem.VarType, "Wrong vartype for M2000.1"); | ||
Assert.AreEqual(2000, dataItem.StartByteAdr, "Wrong startbyte for M2000.1"); | ||
Assert.AreEqual(1, dataItem.BitAdr, "Wrong bit for M2000.1"); | ||
} | ||
|
||
[TestMethod] | ||
public void T02_ParseMB200() | ||
{ | ||
DataItem dataItem = DataItem.FromAddress("MB200"); | ||
|
||
Assert.AreEqual(DataType.Memory, dataItem.DataType, "Wrong datatype for MB200"); | ||
Assert.AreEqual(0, dataItem.DB, "Wrong dbnumber for MB200"); | ||
Assert.AreEqual(VarType.Byte, dataItem.VarType, "Wrong vartype for MB200"); | ||
Assert.AreEqual(200, dataItem.StartByteAdr, "Wrong startbyte for MB200"); | ||
Assert.AreEqual(0, dataItem.BitAdr, "Wrong bit for MB200"); | ||
} | ||
|
||
[TestMethod] | ||
public void T03_ParseMW200() | ||
{ | ||
DataItem dataItem = DataItem.FromAddress("MW200"); | ||
|
||
Assert.AreEqual(DataType.Memory, dataItem.DataType, "Wrong datatype for MW200"); | ||
Assert.AreEqual(0, dataItem.DB, "Wrong dbnumber for MW200"); | ||
Assert.AreEqual(VarType.Word, dataItem.VarType, "Wrong vartype for MW200"); | ||
Assert.AreEqual(200, dataItem.StartByteAdr, "Wrong startbyte for MW200"); | ||
Assert.AreEqual(0, dataItem.BitAdr, "Wrong bit for MW200"); | ||
} | ||
|
||
[TestMethod] | ||
public void T04_ParseMD200() | ||
{ | ||
DataItem dataItem = DataItem.FromAddress("MD200"); | ||
|
||
Assert.AreEqual(DataType.Memory, dataItem.DataType, "Wrong datatype for MD200"); | ||
Assert.AreEqual(0, dataItem.DB, "Wrong dbnumber for MD200"); | ||
Assert.AreEqual(VarType.DWord, dataItem.VarType, "Wrong vartype for MD200"); | ||
Assert.AreEqual(200, dataItem.StartByteAdr, "Wrong startbyte for MD200"); | ||
Assert.AreEqual(0, dataItem.BitAdr, "Wrong bit for MD200"); | ||
} | ||
|
||
|
||
[TestMethod] | ||
public void T05_ParseI2000_1() | ||
{ | ||
DataItem dataItem = DataItem.FromAddress("I2000.1"); | ||
|
||
Assert.AreEqual(DataType.Input, dataItem.DataType, "Wrong datatype for I2000.1"); | ||
Assert.AreEqual(0, dataItem.DB, "Wrong dbnumber for I2000.1"); | ||
Assert.AreEqual(VarType.Bit, dataItem.VarType, "Wrong vartype for I2000.1"); | ||
Assert.AreEqual(2000, dataItem.StartByteAdr, "Wrong startbyte for I2000.1"); | ||
Assert.AreEqual(1, dataItem.BitAdr, "Wrong bit for I2000.1"); | ||
} | ||
|
||
[TestMethod] | ||
public void T06_ParseIB200() | ||
{ | ||
DataItem dataItem = DataItem.FromAddress("IB200"); | ||
|
||
Assert.AreEqual(DataType.Input, dataItem.DataType, "Wrong datatype for IB200"); | ||
Assert.AreEqual(0, dataItem.DB, "Wrong dbnumber for IB200"); | ||
Assert.AreEqual(VarType.Byte, dataItem.VarType, "Wrong vartype for IB200"); | ||
Assert.AreEqual(200, dataItem.StartByteAdr, "Wrong startbyte for IB200"); | ||
Assert.AreEqual(0, dataItem.BitAdr, "Wrong bit for IB200"); | ||
} | ||
|
||
[TestMethod] | ||
public void T07_ParseIW200() | ||
{ | ||
DataItem dataItem = DataItem.FromAddress("IW200"); | ||
|
||
Assert.AreEqual(DataType.Input, dataItem.DataType, "Wrong datatype for IW200"); | ||
Assert.AreEqual(0, dataItem.DB, "Wrong dbnumber for IW200"); | ||
Assert.AreEqual(VarType.Word, dataItem.VarType, "Wrong vartype for IW200"); | ||
Assert.AreEqual(200, dataItem.StartByteAdr, "Wrong startbyte for IW200"); | ||
Assert.AreEqual(0, dataItem.BitAdr, "Wrong bit for IW200"); | ||
} | ||
|
||
[TestMethod] | ||
public void T08_ParseID200() | ||
{ | ||
DataItem dataItem = DataItem.FromAddress("ID200"); | ||
|
||
Assert.AreEqual(DataType.Input, dataItem.DataType, "Wrong datatype for ID200"); | ||
Assert.AreEqual(0, dataItem.DB, "Wrong dbnumber for ID200"); | ||
Assert.AreEqual(VarType.DWord, dataItem.VarType, "Wrong vartype for ID200"); | ||
Assert.AreEqual(200, dataItem.StartByteAdr, "Wrong startbyte for ID200"); | ||
Assert.AreEqual(0, dataItem.BitAdr, "Wrong bit for ID200"); | ||
} | ||
|
||
|
||
[TestMethod] | ||
public void T09_ParseQ2000_1() | ||
{ | ||
DataItem dataItem = DataItem.FromAddress("Q2000.1"); | ||
|
||
Assert.AreEqual(DataType.Output, dataItem.DataType, "Wrong datatype for Q2000.1"); | ||
Assert.AreEqual(0, dataItem.DB, "Wrong dbnumber for Q2000.1"); | ||
Assert.AreEqual(VarType.Bit, dataItem.VarType, "Wrong vartype for Q2000.1"); | ||
Assert.AreEqual(2000, dataItem.StartByteAdr, "Wrong startbyte for Q2000.1"); | ||
Assert.AreEqual(1, dataItem.BitAdr, "Wrong bit for Q2000.1"); | ||
} | ||
|
||
[TestMethod] | ||
public void T10_ParseQB200() | ||
{ | ||
DataItem dataItem = DataItem.FromAddress("QB200"); | ||
|
||
Assert.AreEqual(DataType.Output, dataItem.DataType, "Wrong datatype for QB200"); | ||
Assert.AreEqual(0, dataItem.DB, "Wrong dbnumber for QB200"); | ||
Assert.AreEqual(VarType.Byte, dataItem.VarType, "Wrong vartype for QB200"); | ||
Assert.AreEqual(200, dataItem.StartByteAdr, "Wrong startbyte for QB200"); | ||
Assert.AreEqual(0, dataItem.BitAdr, "Wrong bit for QB200"); | ||
} | ||
|
||
[TestMethod] | ||
public void T11_ParseQW200() | ||
{ | ||
DataItem dataItem = DataItem.FromAddress("QW200"); | ||
|
||
Assert.AreEqual(DataType.Output, dataItem.DataType, "Wrong datatype for QW200"); | ||
Assert.AreEqual(0, dataItem.DB, "Wrong dbnumber for QW200"); | ||
Assert.AreEqual(VarType.Word, dataItem.VarType, "Wrong vartype for QW200"); | ||
Assert.AreEqual(200, dataItem.StartByteAdr, "Wrong startbyte for QW200"); | ||
Assert.AreEqual(0, dataItem.BitAdr, "Wrong bit for QW200"); | ||
} | ||
|
||
[TestMethod] | ||
public void T12_ParseQD200() | ||
{ | ||
DataItem dataItem = DataItem.FromAddress("QD200"); | ||
|
||
Assert.AreEqual(DataType.Output, dataItem.DataType, "Wrong datatype for QD200"); | ||
Assert.AreEqual(0, dataItem.DB, "Wrong dbnumber for QD200"); | ||
Assert.AreEqual(VarType.DWord, dataItem.VarType, "Wrong vartype for QD200"); | ||
Assert.AreEqual(200, dataItem.StartByteAdr, "Wrong startbyte for QD200"); | ||
Assert.AreEqual(0, dataItem.BitAdr, "Wrong bit for QD200"); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
using Microsoft.VisualStudio.TestTools.UnitTesting; | ||
using S7.Net.Types; | ||
|
||
namespace S7.Net.UnitTest.TypeTests | ||
{ | ||
[TestClass] | ||
public class ClassTests | ||
{ | ||
[TestMethod] | ||
public void GetClassSizeTest() | ||
{ | ||
Assert.AreEqual(Class.GetClassSize(new TestClassUnevenSize(1, 1)), 6); | ||
Assert.AreEqual(Class.GetClassSize(new TestClassUnevenSize(2, 15)), 6); | ||
Assert.AreEqual(Class.GetClassSize(new TestClassUnevenSize(2, 16)), 6); | ||
Assert.AreEqual(Class.GetClassSize(new TestClassUnevenSize(2, 17)), 8); | ||
Assert.AreEqual(Class.GetClassSize(new TestClassUnevenSize(3, 15)), 8); | ||
Assert.AreEqual(Class.GetClassSize(new TestClassUnevenSize(3, 17)), 10); | ||
} | ||
|
||
private class TestClassUnevenSize | ||
{ | ||
public bool Bool { get; set; } | ||
public byte[] Bytes { get; set; } | ||
public bool[] Bools { get; set; } | ||
|
||
public TestClassUnevenSize(int byteCount, int bitCount) | ||
{ | ||
Bytes = new byte[byteCount]; | ||
Bools = new bool[bitCount]; | ||
} | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters