Changed UnitTests for further improvements on testing
This commit is contained in:
@@ -105,16 +105,13 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Contracts
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentNullException))]
|
||||
public void ShouldThrowExceptionOnNullConnection()
|
||||
{
|
||||
// Arrange
|
||||
IModbusConnection connection = null;
|
||||
|
||||
// Act
|
||||
new ModbusClientBaseWrapper(connection);
|
||||
|
||||
// Assert - ArgumentNullException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentNullException>(() => new ModbusClientBaseWrapper(connection));
|
||||
}
|
||||
|
||||
[DataTestMethod]
|
||||
@@ -155,31 +152,25 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Contracts
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ObjectDisposedException))]
|
||||
public async Task ShouldAssertDisposed()
|
||||
{
|
||||
// Arrange
|
||||
var client = GetClient();
|
||||
client.Dispose();
|
||||
|
||||
// Act
|
||||
await client.ReadCoilsAsync(UNIT_ID, START_ADDRESS, READ_COUNT);
|
||||
|
||||
// Assert - ObjectDisposedException
|
||||
// Act + Assert
|
||||
await Assert.ThrowsExceptionAsync<ObjectDisposedException>(() => client.ReadCoilsAsync(UNIT_ID, START_ADDRESS, READ_COUNT));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentNullException))]
|
||||
public async Task ShouldAssertProtocolSet()
|
||||
{
|
||||
// Arrange
|
||||
var client = GetClient();
|
||||
client.Protocol = null;
|
||||
|
||||
// Act
|
||||
await client.ReadCoilsAsync(UNIT_ID, START_ADDRESS, READ_COUNT);
|
||||
|
||||
// Assert - ArgumentNullException
|
||||
// Act + Assert
|
||||
await Assert.ThrowsExceptionAsync<ArgumentNullException>(() => client.ReadCoilsAsync(UNIT_ID, START_ADDRESS, READ_COUNT));
|
||||
}
|
||||
|
||||
#endregion Common/Connection/Assertions
|
||||
|
||||
@@ -41,20 +41,16 @@
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentNullException))]
|
||||
public void ShouldThrowNullOnGetSingle()
|
||||
{
|
||||
// Arrange
|
||||
HoldingRegister[] registers = null;
|
||||
|
||||
// Act
|
||||
registers.GetSingle(0);
|
||||
|
||||
// Assert - ArgumentNullException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentNullException>(() => registers.GetSingle(0));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentException))]
|
||||
public void ShouldThrowArgumentOnGetSingleForLength()
|
||||
{
|
||||
// Arrange
|
||||
@@ -63,16 +59,13 @@
|
||||
new() { Address = 101, HighByte = 0x01, LowByte = 0x02 }
|
||||
};
|
||||
|
||||
// Act
|
||||
registers.GetSingle(0);
|
||||
|
||||
// Assert - ArgumentException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentException>(() => registers.GetSingle(0));
|
||||
}
|
||||
|
||||
[DataTestMethod]
|
||||
[DataRow(1)]
|
||||
[DataRow(-1)]
|
||||
[ExpectedException(typeof(ArgumentOutOfRangeException))]
|
||||
public void ShouldThrowArgumentOutOfRangeOnGetSingle(int startIndex)
|
||||
{
|
||||
// Arrange
|
||||
@@ -82,14 +75,11 @@
|
||||
new() { Address = 100, HighByte = 0x03, LowByte = 0x04 }
|
||||
};
|
||||
|
||||
// Act
|
||||
registers.GetSingle(startIndex);
|
||||
|
||||
// Assert - ArgumentOutOfRangeException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentOutOfRangeException>(() => registers.GetSingle(startIndex));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentException))]
|
||||
public void ShouldThrowArgumentOnGetSingleForType()
|
||||
{
|
||||
// Arrange
|
||||
@@ -99,10 +89,8 @@
|
||||
new InputRegister { Address = 101, HighByte = 0x03, LowByte = 0x04 }
|
||||
};
|
||||
|
||||
// Act
|
||||
registers.GetSingle(0);
|
||||
|
||||
// Assert - ArgumentException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentException>(() => registers.GetSingle(0));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
@@ -145,20 +133,16 @@
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentNullException))]
|
||||
public void ShouldThrowNullOnGetDouble()
|
||||
{
|
||||
// Arrange
|
||||
HoldingRegister[] registers = null;
|
||||
|
||||
// Act
|
||||
registers.GetDouble(0);
|
||||
|
||||
// Assert - ArgumentNullException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentNullException>(() => registers.GetDouble(0));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentException))]
|
||||
public void ShouldThrowArgumentOnGetDoubleForLength()
|
||||
{
|
||||
// Arrange
|
||||
@@ -169,16 +153,13 @@
|
||||
new() { Address = 102, HighByte = 0x7A, LowByte = 0xE1 }
|
||||
};
|
||||
|
||||
// Act
|
||||
registers.GetDouble(0);
|
||||
|
||||
// Assert - ArgumentException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentException>(() => registers.GetDouble(0));
|
||||
}
|
||||
|
||||
[DataTestMethod]
|
||||
[DataRow(1)]
|
||||
[DataRow(-1)]
|
||||
[ExpectedException(typeof(ArgumentOutOfRangeException))]
|
||||
public void ShouldThrowArgumentOutOfRangeOnGetDouble(int startIndex)
|
||||
{
|
||||
// Arrange
|
||||
@@ -190,14 +171,11 @@
|
||||
new() { Address = 103, HighByte = 0x47, LowByte = 0xAE }
|
||||
};
|
||||
|
||||
// Act
|
||||
registers.GetDouble(startIndex);
|
||||
|
||||
// Assert - ArgumentOutOfRangeException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentOutOfRangeException>(() => registers.GetDouble(startIndex));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentException))]
|
||||
public void ShouldThrowArgumentOnGetDoubleForType()
|
||||
{
|
||||
// Arrange
|
||||
@@ -209,10 +187,8 @@
|
||||
new InputRegister { Address = 103, HighByte = 0x47, LowByte = 0xAE }
|
||||
};
|
||||
|
||||
// Act
|
||||
registers.GetDouble(0);
|
||||
|
||||
// Assert - ArgumentException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentException>(() => registers.GetDouble(0));
|
||||
}
|
||||
|
||||
#endregion Modbus to value
|
||||
|
||||
@@ -30,16 +30,13 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Extensions
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentNullException))]
|
||||
public void ShouldThrowNullOnGetBoolean()
|
||||
{
|
||||
// Arrange
|
||||
Coil coil = null;
|
||||
|
||||
// Act
|
||||
coil.GetBoolean();
|
||||
|
||||
// Assert - ArgumentNullException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentNullException>(() => coil.GetBoolean());
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
@@ -95,35 +92,28 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Extensions
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentNullException))]
|
||||
public void ShouldThrowNullOnString()
|
||||
{
|
||||
// Arrange
|
||||
HoldingRegister[] list = null;
|
||||
|
||||
// Act
|
||||
list.GetString(2);
|
||||
|
||||
// Assert - ArgumentNullException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentNullException>(() => list.GetString(2));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentException))]
|
||||
public void ShouldThrowArgumentOnStringForEmptyList()
|
||||
{
|
||||
// Arrange
|
||||
var registers = Array.Empty<HoldingRegister>();
|
||||
|
||||
// Act
|
||||
registers.GetString(2);
|
||||
|
||||
// Assert - ArgumentException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentException>(() => registers.GetString(2));
|
||||
}
|
||||
|
||||
[DataTestMethod]
|
||||
[DataRow(1)]
|
||||
[DataRow(-1)]
|
||||
[ExpectedException(typeof(ArgumentOutOfRangeException))]
|
||||
public void ShouldThrowArgumentOutOfRangeOnString(int startIndex)
|
||||
{
|
||||
// Arrange
|
||||
@@ -133,14 +123,11 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Extensions
|
||||
new() { Address = 2, HighByte = 67, LowByte = 0 }
|
||||
};
|
||||
|
||||
// Act
|
||||
registers.GetString(2, startIndex);
|
||||
|
||||
// Assert - ArgumentOutOfRangeException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentOutOfRangeException>(() => registers.GetString(2, startIndex));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentException))]
|
||||
public void ShouldThrowArgumentOnStringForMixedTypes()
|
||||
{
|
||||
// Arrange
|
||||
@@ -150,10 +137,8 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Extensions
|
||||
new InputRegister { Address = 2, HighByte = 67, LowByte = 0 }
|
||||
};
|
||||
|
||||
// Act
|
||||
registers.GetString(2);
|
||||
|
||||
// Assert - ArgumentException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentException>(() => registers.GetString(2));
|
||||
}
|
||||
|
||||
#endregion Modbus to value
|
||||
@@ -272,16 +257,13 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Extensions
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentNullException))]
|
||||
public void ShouldThrowNullOnGetString()
|
||||
{
|
||||
// Arrange
|
||||
string str = null;
|
||||
|
||||
// Act
|
||||
_ = str.ToRegisters(100).ToArray();
|
||||
|
||||
// Assert - ArgumentNullException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentNullException>(() => str.ToRegisters(100).ToArray());
|
||||
}
|
||||
|
||||
#endregion Value to Modbus
|
||||
|
||||
@@ -32,31 +32,23 @@
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentNullException))]
|
||||
public void ShouldThrowNullForGetSByte()
|
||||
{
|
||||
// Arrange
|
||||
HoldingRegister register = null;
|
||||
|
||||
// Act
|
||||
register.GetSByte();
|
||||
|
||||
// Assert - ArgumentNullException
|
||||
Assert.Fail();
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentNullException>(() => register.GetSByte());
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentException))]
|
||||
public void ShouldThrowArgumentForGetSByte()
|
||||
{
|
||||
// Arrange
|
||||
var obj = new Coil();
|
||||
|
||||
// Act
|
||||
obj.GetSByte();
|
||||
|
||||
// Assert - ArgumentException
|
||||
Assert.Fail();
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentException>(() => obj.GetSByte());
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
@@ -86,31 +78,23 @@
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentNullException))]
|
||||
public void ShouldThrowNullForGetInt16()
|
||||
{
|
||||
// Arrange
|
||||
HoldingRegister register = null;
|
||||
|
||||
// Act
|
||||
register.GetInt16();
|
||||
|
||||
// Assert - ArgumentNullException
|
||||
Assert.Fail();
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentNullException>(() => register.GetInt16());
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentException))]
|
||||
public void ShouldThrowArgumentForGetInt16()
|
||||
{
|
||||
// Arrange
|
||||
var obj = new Coil();
|
||||
|
||||
// Act
|
||||
obj.GetInt16();
|
||||
|
||||
// Assert - ArgumentException
|
||||
Assert.Fail();
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentException>(() => obj.GetInt16());
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
@@ -149,21 +133,16 @@
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentNullException))]
|
||||
public void ShouldThrowNullOnGetInt32()
|
||||
{
|
||||
// Arrange
|
||||
HoldingRegister[] registers = null;
|
||||
|
||||
// Act
|
||||
registers.GetInt32(0);
|
||||
|
||||
// Assert - ArgumentNullException
|
||||
Assert.Fail();
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentNullException>(() => registers.GetInt32(0));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentException))]
|
||||
public void ShouldThrowArgumentOnGetInt32ForLength()
|
||||
{
|
||||
// Arrange
|
||||
@@ -172,17 +151,13 @@
|
||||
new HoldingRegister { Address = 101, HighByte = 0x01, LowByte = 0x02 }
|
||||
};
|
||||
|
||||
// Act
|
||||
registers.GetInt32(0);
|
||||
|
||||
// Assert - ArgumentException
|
||||
Assert.Fail();
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentException>(() => registers.GetInt32(0));
|
||||
}
|
||||
|
||||
[DataTestMethod]
|
||||
[DataRow(1)]
|
||||
[DataRow(-1)]
|
||||
[ExpectedException(typeof(ArgumentOutOfRangeException))]
|
||||
public void ShouldThrowArgumentOutOfRangeOnGetInt32(int startIndex)
|
||||
{
|
||||
// Arrange
|
||||
@@ -192,15 +167,11 @@
|
||||
new HoldingRegister { Address = 100, HighByte = 0x03, LowByte = 0x04 }
|
||||
};
|
||||
|
||||
// Act
|
||||
registers.GetInt32(startIndex);
|
||||
|
||||
// Assert - ArgumentOutOfRangeException
|
||||
Assert.Fail();
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentOutOfRangeException>(() => registers.GetInt32(startIndex));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentException))]
|
||||
public void ShouldThrowArgumentOnGetInt32ForType()
|
||||
{
|
||||
// Arrange
|
||||
@@ -210,11 +181,8 @@
|
||||
new InputRegister { Address = 101, HighByte = 0x03, LowByte = 0x04 }
|
||||
};
|
||||
|
||||
// Act
|
||||
registers.GetInt32(0);
|
||||
|
||||
// Assert - ArgumentException
|
||||
Assert.Fail();
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentException>(() => registers.GetInt32(0));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
@@ -257,21 +225,16 @@
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentNullException))]
|
||||
public void ShouldThrowNullOnGetInt64()
|
||||
{
|
||||
// Arrange
|
||||
HoldingRegister[] registers = null;
|
||||
|
||||
// Act
|
||||
registers.GetInt64(0);
|
||||
|
||||
// Assert - ArgumentNullException
|
||||
Assert.Fail();
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentNullException>(() => registers.GetInt64(0));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentException))]
|
||||
public void ShouldThrowArgumentOnGetInt64ForLength()
|
||||
{
|
||||
// Arrange
|
||||
@@ -282,17 +245,13 @@
|
||||
new HoldingRegister { Address = 103, HighByte = 0x03, LowByte = 0x04 }
|
||||
};
|
||||
|
||||
// Act
|
||||
registers.GetInt64(0);
|
||||
|
||||
// Assert - ArgumentException
|
||||
Assert.Fail();
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentException>(() => registers.GetInt64(0));
|
||||
}
|
||||
|
||||
[DataTestMethod]
|
||||
[DataRow(1)]
|
||||
[DataRow(-1)]
|
||||
[ExpectedException(typeof(ArgumentOutOfRangeException))]
|
||||
public void ShouldThrowArgumentOutOfRangeOnGetInt64(int startIndex)
|
||||
{
|
||||
// Arrange
|
||||
@@ -304,15 +263,11 @@
|
||||
new HoldingRegister { Address = 103, HighByte = 0x03, LowByte = 0x04 }
|
||||
};
|
||||
|
||||
// Act
|
||||
registers.GetInt64(startIndex);
|
||||
|
||||
// Assert - ArgumentOutOfRangeException
|
||||
Assert.Fail();
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentOutOfRangeException>(() => registers.GetInt64(startIndex));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentException))]
|
||||
public void ShouldThrowArgumentOnGetInt64ForType()
|
||||
{
|
||||
// Arrange
|
||||
@@ -324,11 +279,8 @@
|
||||
new InputRegister { Address = 103, HighByte = 0x03, LowByte = 0x04 }
|
||||
};
|
||||
|
||||
// Act
|
||||
registers.GetInt64(0);
|
||||
|
||||
// Assert - ArgumentException
|
||||
Assert.Fail();
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentException>(() => registers.GetInt64(0));
|
||||
}
|
||||
|
||||
#endregion Modbus to value
|
||||
|
||||
@@ -32,29 +32,23 @@
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentNullException))]
|
||||
public void ShouldThrowNullForGetByte()
|
||||
{
|
||||
// Arrange
|
||||
HoldingRegister register = null;
|
||||
|
||||
// Act
|
||||
register.GetByte();
|
||||
|
||||
// Assert - ArgumentNullException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentNullException>(() => register.GetByte());
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentException))]
|
||||
public void ShouldThrowArgumentForGetByte()
|
||||
{
|
||||
// Arrange
|
||||
var obj = new Coil();
|
||||
|
||||
// Act
|
||||
obj.GetByte();
|
||||
|
||||
// Assert - ArgumentException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentException>(() => obj.GetByte());
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
@@ -84,29 +78,23 @@
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentNullException))]
|
||||
public void ShouldThrowNullForGetUInt16()
|
||||
{
|
||||
// Arrange
|
||||
HoldingRegister register = null;
|
||||
|
||||
// Act
|
||||
register.GetUInt16();
|
||||
|
||||
// Assert - ArgumentNullException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentNullException>(() => register.GetUInt16());
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentException))]
|
||||
public void ShouldThrowArgumentForGetUInt16()
|
||||
{
|
||||
// Arrange
|
||||
var obj = new Coil();
|
||||
|
||||
// Act
|
||||
obj.GetUInt16();
|
||||
|
||||
// Assert - ArgumentException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentException>(() => obj.GetUInt16());
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
@@ -145,21 +133,16 @@
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentNullException))]
|
||||
public void ShouldThrowNullOnGetUInt32()
|
||||
{
|
||||
// Arrange
|
||||
HoldingRegister[] registers = null;
|
||||
|
||||
// Act
|
||||
registers.GetUInt32(0);
|
||||
|
||||
// Assert - ArgumentNullException
|
||||
Assert.Fail();
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentNullException>(() => registers.GetUInt32(0));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentException))]
|
||||
public void ShouldThrowArgumentOnGetUInt32ForLength()
|
||||
{
|
||||
// Arrange
|
||||
@@ -168,16 +151,13 @@
|
||||
new() { Address = 101, HighByte = 0x01, LowByte = 0x02 }
|
||||
};
|
||||
|
||||
// Act
|
||||
registers.GetUInt32(0);
|
||||
|
||||
// Assert - ArgumentException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentException>(() => registers.GetUInt32(1));
|
||||
}
|
||||
|
||||
[DataTestMethod]
|
||||
[DataRow(1)]
|
||||
[DataRow(-1)]
|
||||
[ExpectedException(typeof(ArgumentOutOfRangeException))]
|
||||
public void ShouldThrowArgumentOutOfRangeOnGetUInt32(int startIndex)
|
||||
{
|
||||
// Arrange
|
||||
@@ -187,14 +167,11 @@
|
||||
new() { Address = 100, HighByte = 0x03, LowByte = 0x04 }
|
||||
};
|
||||
|
||||
// Act
|
||||
registers.GetUInt32(startIndex);
|
||||
|
||||
// Assert - ArgumentOutOfRangeException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentOutOfRangeException>(() => registers.GetUInt32(startIndex));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentException))]
|
||||
public void ShouldThrowArgumentOnGetUInt32ForType()
|
||||
{
|
||||
// Arrange
|
||||
@@ -204,10 +181,8 @@
|
||||
new InputRegister { Address = 101, HighByte = 0x03, LowByte = 0x04 }
|
||||
};
|
||||
|
||||
// Act
|
||||
registers.GetUInt32(0);
|
||||
|
||||
// Assert - ArgumentException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentException>(() => registers.GetUInt32(0));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
@@ -250,21 +225,16 @@
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentNullException))]
|
||||
public void ShouldThrowNullOnGetUInt64()
|
||||
{
|
||||
// Arrange
|
||||
HoldingRegister[] registers = null;
|
||||
|
||||
// Act
|
||||
registers.GetUInt64(0);
|
||||
|
||||
// Assert - ArgumentNullException
|
||||
Assert.Fail();
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentNullException>(() => registers.GetUInt64(0));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentException))]
|
||||
public void ShouldThrowArgumentOnGetUInt64ForLength()
|
||||
{
|
||||
// Arrange
|
||||
@@ -275,16 +245,13 @@
|
||||
new() { Address = 103, HighByte = 0x03, LowByte = 0x04 }
|
||||
};
|
||||
|
||||
// Act
|
||||
registers.GetUInt64(0);
|
||||
|
||||
// Assert - ArgumentException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentException>(() => registers.GetUInt64(0));
|
||||
}
|
||||
|
||||
[DataTestMethod]
|
||||
[DataRow(1)]
|
||||
[DataRow(-1)]
|
||||
[ExpectedException(typeof(ArgumentOutOfRangeException))]
|
||||
public void ShouldThrowArgumentOutOfRangeOnGetUInt64(int startIndex)
|
||||
{
|
||||
// Arrange
|
||||
@@ -296,14 +263,11 @@
|
||||
new() { Address = 103, HighByte = 0x03, LowByte = 0x04 }
|
||||
};
|
||||
|
||||
// Act
|
||||
registers.GetUInt64(startIndex);
|
||||
|
||||
// Assert - ArgumentOutOfRangeException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentOutOfRangeException>(() => registers.GetUInt64(startIndex));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentException))]
|
||||
public void ShouldThrowArgumentOnGetUInt64ForType()
|
||||
{
|
||||
// Arrange
|
||||
@@ -315,10 +279,8 @@
|
||||
new InputRegister { Address = 103, HighByte = 0x03, LowByte = 0x04 }
|
||||
};
|
||||
|
||||
// Act
|
||||
registers.GetUInt64(0);
|
||||
|
||||
// Assert - ArgumentException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentException>(() => registers.GetUInt64(0));
|
||||
}
|
||||
|
||||
#endregion Modbus to value
|
||||
|
||||
@@ -32,29 +32,23 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
[DataTestMethod]
|
||||
[DataRow(0)]
|
||||
[DataRow(2001)]
|
||||
[ExpectedException(typeof(ArgumentOutOfRangeException))]
|
||||
public void ShouldThrowOutOfRangeForCountOnSerializeReadCoils(int count)
|
||||
{
|
||||
// Arrange
|
||||
var protocol = new AsciiProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeReadCoils(UNIT_ID, 19, (ushort)count);
|
||||
|
||||
// Assert - ArgumentOutOfRangeException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentOutOfRangeException>(() => protocol.SerializeReadCoils(UNIT_ID, 19, (ushort)count));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentOutOfRangeException))]
|
||||
public void ShouldThrowOutOfRangeForStartingAddressOnSerializeReadCoils()
|
||||
{
|
||||
// Arrange
|
||||
var protocol = new AsciiProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeReadCoils(UNIT_ID, ushort.MaxValue, 2);
|
||||
|
||||
// Assert - ArgumentOutOfRangeException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentOutOfRangeException>(() => protocol.SerializeReadCoils(UNIT_ID, ushort.MaxValue, 2));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
@@ -88,7 +82,6 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ModbusException))]
|
||||
public void ShouldThrowExceptionOnDeserializeReadCoils()
|
||||
{
|
||||
// Arrange
|
||||
@@ -98,10 +91,8 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
|
||||
var protocol = new AsciiProtocol();
|
||||
|
||||
// Act
|
||||
_ = protocol.DeserializeReadCoils(responseBytes);
|
||||
|
||||
// Assert - ModbusException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ModbusException>(() => protocol.DeserializeReadCoils(responseBytes));
|
||||
}
|
||||
|
||||
#endregion Read Coils
|
||||
@@ -129,29 +120,23 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
[DataTestMethod]
|
||||
[DataRow(0)]
|
||||
[DataRow(2001)]
|
||||
[ExpectedException(typeof(ArgumentOutOfRangeException))]
|
||||
public void ShouldThrowOutOfRangeForCountOnSerializeReadDiscreteInputs(int count)
|
||||
{
|
||||
// Arrange
|
||||
var protocol = new AsciiProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeReadDiscreteInputs(UNIT_ID, 19, (ushort)count);
|
||||
|
||||
// Assert - ArgumentOutOfRangeException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentOutOfRangeException>(() => protocol.SerializeReadDiscreteInputs(UNIT_ID, 19, (ushort)count));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentOutOfRangeException))]
|
||||
public void ShouldThrowOutOfRangeForStartingAddressOnSerializeReadDiscreteInputs()
|
||||
{
|
||||
// Arrange
|
||||
var protocol = new AsciiProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeReadDiscreteInputs(UNIT_ID, ushort.MaxValue, 2);
|
||||
|
||||
// Assert - ArgumentOutOfRangeException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentOutOfRangeException>(() => protocol.SerializeReadDiscreteInputs(UNIT_ID, ushort.MaxValue, 2));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
@@ -185,7 +170,6 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ModbusException))]
|
||||
public void ShouldThrowExceptionOnDeserializeReadDiscreteInputs()
|
||||
{
|
||||
// Arrange
|
||||
@@ -195,10 +179,8 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
|
||||
var protocol = new AsciiProtocol();
|
||||
|
||||
// Act
|
||||
protocol.DeserializeReadDiscreteInputs(responseBytes);
|
||||
|
||||
// Assert - ModbusException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ModbusException>(() => protocol.DeserializeReadDiscreteInputs(responseBytes));
|
||||
}
|
||||
|
||||
#endregion Read Discrete Inputs
|
||||
@@ -226,29 +208,23 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
[DataTestMethod]
|
||||
[DataRow(0)]
|
||||
[DataRow(2001)]
|
||||
[ExpectedException(typeof(ArgumentOutOfRangeException))]
|
||||
public void ShouldThrowOutOfRangeForCountOnSerializeReadHoldingRegisters(int count)
|
||||
{
|
||||
// Arrange
|
||||
var protocol = new AsciiProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeReadHoldingRegisters(UNIT_ID, 19, (ushort)count);
|
||||
|
||||
// Assert - ArgumentOutOfRangeException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentOutOfRangeException>(() => protocol.SerializeReadHoldingRegisters(UNIT_ID, 19, (ushort)count));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentOutOfRangeException))]
|
||||
public void ShouldThrowOutOfRangeForStartingAddressOnSerializeReadHoldingRegisters()
|
||||
{
|
||||
// Arrange
|
||||
var protocol = new AsciiProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeReadHoldingRegisters(UNIT_ID, ushort.MaxValue, 2);
|
||||
|
||||
// Assert - ArgumentOutOfRangeException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentOutOfRangeException>(() => protocol.SerializeReadHoldingRegisters(UNIT_ID, ushort.MaxValue, 2));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
@@ -276,7 +252,6 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ModbusException))]
|
||||
public void ShouldThrowExceptionOnDeserializeReadHoldingRegisters()
|
||||
{
|
||||
// Arrange
|
||||
@@ -286,10 +261,8 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
|
||||
var protocol = new AsciiProtocol();
|
||||
|
||||
// Act
|
||||
protocol.DeserializeReadHoldingRegisters(responseBytes);
|
||||
|
||||
// Assert - ModbusException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ModbusException>(() => protocol.DeserializeReadHoldingRegisters(responseBytes));
|
||||
}
|
||||
|
||||
#endregion Read Holding Registers
|
||||
@@ -317,29 +290,23 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
[DataTestMethod]
|
||||
[DataRow(0)]
|
||||
[DataRow(2001)]
|
||||
[ExpectedException(typeof(ArgumentOutOfRangeException))]
|
||||
public void ShouldThrowOutOfRangeForCountOnSerializeReadInputRegisters(int count)
|
||||
{
|
||||
// Arrange
|
||||
var protocol = new AsciiProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeReadInputRegisters(UNIT_ID, 19, (ushort)count);
|
||||
|
||||
// Assert - ArgumentOutOfRangeException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentOutOfRangeException>(() => protocol.SerializeReadInputRegisters(UNIT_ID, 19, (ushort)count));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentOutOfRangeException))]
|
||||
public void ShouldThrowOutOfRangeForStartingAddressOnSerializeReadInputRegisters()
|
||||
{
|
||||
// Arrange
|
||||
var protocol = new AsciiProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeReadInputRegisters(UNIT_ID, ushort.MaxValue, 2);
|
||||
|
||||
// Assert - ArgumentOutOfRangeException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentOutOfRangeException>(() => protocol.SerializeReadInputRegisters(UNIT_ID, ushort.MaxValue, 2));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
@@ -367,7 +334,6 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ModbusException))]
|
||||
public void ShouldThrowExceptionOnDeserializeReadInputRegisters()
|
||||
{
|
||||
// Arrange
|
||||
@@ -377,10 +343,8 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
|
||||
var protocol = new AsciiProtocol();
|
||||
|
||||
// Act
|
||||
protocol.DeserializeReadInputRegisters(responseBytes);
|
||||
|
||||
// Assert - ModbusException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ModbusException>(() => protocol.DeserializeReadInputRegisters(responseBytes));
|
||||
}
|
||||
|
||||
#endregion Read Input Registers
|
||||
@@ -410,16 +374,13 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentOutOfRangeException))]
|
||||
public void ShouldThrowOutOfRangeExceptionForCategoryOnSerializeReadDeviceIdentification()
|
||||
{
|
||||
// Arrange
|
||||
var protocol = new AsciiProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeReadDeviceIdentification(UNIT_ID, (ModbusDeviceIdentificationCategory)10, ModbusDeviceIdentificationObject.ProductCode);
|
||||
|
||||
// Assert - ArgumentOutOfRangeException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentOutOfRangeException>(() => protocol.SerializeReadDeviceIdentification(UNIT_ID, (ModbusDeviceIdentificationCategory)10, ModbusDeviceIdentificationObject.ProductCode));
|
||||
}
|
||||
|
||||
[DataTestMethod]
|
||||
@@ -449,7 +410,6 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ModbusException))]
|
||||
public void ShouldThrowExceptionOnDeserializeReadDeviceIdentificationForMeiType()
|
||||
{
|
||||
// Arrange
|
||||
@@ -459,12 +419,11 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
|
||||
var protocol = new AsciiProtocol();
|
||||
|
||||
// Act
|
||||
protocol.DeserializeReadDeviceIdentification(responseBytes);
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ModbusException>(() => protocol.DeserializeReadDeviceIdentification(responseBytes));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ModbusException))]
|
||||
public void ShouldThrowExceptionOnDeserializeReadDeviceIdentificationForCategory()
|
||||
{
|
||||
// Arrange
|
||||
@@ -474,8 +433,8 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
|
||||
var protocol = new AsciiProtocol();
|
||||
|
||||
// Act
|
||||
protocol.DeserializeReadDeviceIdentification(responseBytes);
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ModbusException>(() => protocol.DeserializeReadDeviceIdentification(responseBytes));
|
||||
}
|
||||
|
||||
#endregion Read Device Identification
|
||||
@@ -502,16 +461,13 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentNullException))]
|
||||
public void ShouldThrowArgumentNullOnSerializeWriteSingleCoil()
|
||||
{
|
||||
// Arrange
|
||||
var protocol = new AsciiProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeWriteSingleCoil(UNIT_ID, null);
|
||||
|
||||
// Assert - ArgumentNullException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentNullException>(() => protocol.SerializeWriteSingleCoil(UNIT_ID, null));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
@@ -557,16 +513,13 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentNullException))]
|
||||
public void ShouldThrowArgumentNullOnSerializeWriteSingleHoldingRegister()
|
||||
{
|
||||
// Arrange
|
||||
var protocol = new AsciiProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeWriteSingleHoldingRegister(UNIT_ID, null);
|
||||
|
||||
// Assert - ArgumentNullException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentNullException>(() => protocol.SerializeWriteSingleHoldingRegister(UNIT_ID, null));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
@@ -619,22 +572,18 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentNullException))]
|
||||
public void ShouldThrowArgumentNullOnSerializeWriteMultipleCoils()
|
||||
{
|
||||
// Arrange
|
||||
var protocol = new AsciiProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeWriteMultipleCoils(UNIT_ID, null);
|
||||
|
||||
// Assert - ArgumentNullException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentNullException>(() => protocol.SerializeWriteMultipleCoils(UNIT_ID, null));
|
||||
}
|
||||
|
||||
[DataTestMethod]
|
||||
[DataRow(0)]
|
||||
[DataRow(1969)]
|
||||
[ExpectedException(typeof(ArgumentOutOfRangeException))]
|
||||
public void ShouldThrowOutOfRangeForCountOnSerializeWriteMultipleCoils(int count)
|
||||
{
|
||||
// Arrange
|
||||
@@ -644,14 +593,11 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
|
||||
var protocol = new AsciiProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeWriteMultipleCoils(UNIT_ID, coils);
|
||||
|
||||
// Assert - ArgumentOutOfRangeException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentOutOfRangeException>(() => protocol.SerializeWriteMultipleCoils(UNIT_ID, coils));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentException))]
|
||||
public void ShouldThrowArgumentExceptionForDuplicateEntryOnSerializeMultipleCoils()
|
||||
{
|
||||
// Arrange
|
||||
@@ -662,14 +608,11 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
};
|
||||
var protocol = new AsciiProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeWriteMultipleCoils(UNIT_ID, coils);
|
||||
|
||||
// Assert - ArgumentException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentException>(() => protocol.SerializeWriteMultipleCoils(UNIT_ID, coils));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentException))]
|
||||
public void ShouldThrowArgumentExceptionForGapInAddressOnSerializeMultipleCoils()
|
||||
{
|
||||
// Arrange
|
||||
@@ -680,10 +623,8 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
};
|
||||
var protocol = new AsciiProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeWriteMultipleCoils(UNIT_ID, coils);
|
||||
|
||||
// Assert - ArgumentException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentException>(() => protocol.SerializeWriteMultipleCoils(UNIT_ID, coils));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
@@ -732,22 +673,18 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentNullException))]
|
||||
public void ShouldThrowArgumentNullOnSerializeWriteMultipleHoldingRegisters()
|
||||
{
|
||||
// Arrange
|
||||
var protocol = new AsciiProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeWriteMultipleHoldingRegisters(UNIT_ID, null);
|
||||
|
||||
// Assert - ArgumentNullException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentNullException>(() => protocol.SerializeWriteMultipleHoldingRegisters(UNIT_ID, null));
|
||||
}
|
||||
|
||||
[DataTestMethod]
|
||||
[DataRow(0)]
|
||||
[DataRow(124)]
|
||||
[ExpectedException(typeof(ArgumentOutOfRangeException))]
|
||||
public void ShouldThrowOutOfRangeForCountOnSerializeWriteMultipleHoldingRegisters(int count)
|
||||
{
|
||||
// Arrange
|
||||
@@ -757,14 +694,11 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
|
||||
var protocol = new AsciiProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeWriteMultipleHoldingRegisters(UNIT_ID, registers);
|
||||
|
||||
// Assert - ArgumentOutOfRangeException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentOutOfRangeException>(() => protocol.SerializeWriteMultipleHoldingRegisters(UNIT_ID, registers));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentException))]
|
||||
public void ShouldThrowArgumentExceptionForDuplicateEntryOnSerializeMultipleHoldingRegisters()
|
||||
{
|
||||
// Arrange
|
||||
@@ -775,14 +709,11 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
};
|
||||
var protocol = new AsciiProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeWriteMultipleHoldingRegisters(UNIT_ID, registers);
|
||||
|
||||
// Assert - ArgumentException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentException>(() => protocol.SerializeWriteMultipleHoldingRegisters(UNIT_ID, registers));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentException))]
|
||||
public void ShouldThrowArgumentExceptionForGapInAddressOnSerializeMultipleHoldingRegisters()
|
||||
{
|
||||
// Arrange
|
||||
@@ -793,10 +724,8 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
};
|
||||
var protocol = new AsciiProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeWriteMultipleHoldingRegisters(UNIT_ID, registers);
|
||||
|
||||
// Assert - ArgumentException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentException>(() => protocol.SerializeWriteMultipleHoldingRegisters(UNIT_ID, registers));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
@@ -898,7 +827,6 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ModbusException))]
|
||||
public void ShouldThrowForMissingHeaderOnValidateResponse()
|
||||
{
|
||||
// Arrange
|
||||
@@ -907,12 +835,11 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
AddTrailer(ref response);
|
||||
var protocol = new AsciiProtocol();
|
||||
|
||||
// Act
|
||||
protocol.ValidateResponse(Encoding.ASCII.GetBytes(request), Encoding.ASCII.GetBytes(response));
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ModbusException>(() => protocol.ValidateResponse(Encoding.ASCII.GetBytes(request), Encoding.ASCII.GetBytes(response)));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ModbusException))]
|
||||
public void ShouldThrowForMissingTrailerOnValidateResponse()
|
||||
{
|
||||
// Arrange
|
||||
@@ -920,12 +847,11 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
string response = $":{UNIT_ID:X2}010100";
|
||||
var protocol = new AsciiProtocol();
|
||||
|
||||
// Act
|
||||
protocol.ValidateResponse(Encoding.ASCII.GetBytes(request), Encoding.ASCII.GetBytes(response));
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ModbusException>(() => protocol.ValidateResponse(Encoding.ASCII.GetBytes(request), Encoding.ASCII.GetBytes(response)));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ModbusException))]
|
||||
public void ShouldThrowForUnitIdOnValidateResponse()
|
||||
{
|
||||
// Arrange
|
||||
@@ -934,12 +860,11 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
AddTrailer(ref response);
|
||||
var protocol = new AsciiProtocol();
|
||||
|
||||
// Act
|
||||
protocol.ValidateResponse(Encoding.ASCII.GetBytes(request), Encoding.ASCII.GetBytes(response));
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ModbusException>(() => protocol.ValidateResponse(Encoding.ASCII.GetBytes(request), Encoding.ASCII.GetBytes(response)));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ModbusException))]
|
||||
public void ShouldThrowForLrcOnValidateResponse()
|
||||
{
|
||||
// Arrange
|
||||
@@ -947,12 +872,11 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
string response = $":{UNIT_ID:X2}010001FF00XX\r\n";
|
||||
var protocol = new AsciiProtocol();
|
||||
|
||||
// Act
|
||||
protocol.ValidateResponse(Encoding.ASCII.GetBytes(request), Encoding.ASCII.GetBytes(response));
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ModbusException>(() => protocol.ValidateResponse(Encoding.ASCII.GetBytes(request), Encoding.ASCII.GetBytes(response)));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ModbusException))]
|
||||
public void ShouldThrowForFunctionCodeOnValidateResponse()
|
||||
{
|
||||
// Arrange
|
||||
@@ -961,12 +885,11 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
AddTrailer(ref response);
|
||||
var protocol = new AsciiProtocol();
|
||||
|
||||
// Act
|
||||
protocol.ValidateResponse(Encoding.ASCII.GetBytes(request), Encoding.ASCII.GetBytes(response));
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ModbusException>(() => protocol.ValidateResponse(Encoding.ASCII.GetBytes(request), Encoding.ASCII.GetBytes(response)));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ModbusException))]
|
||||
public void ShouldThrowForErrorOnValidateResponse()
|
||||
{
|
||||
// Arrange
|
||||
@@ -975,8 +898,8 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
AddTrailer(ref response);
|
||||
var protocol = new AsciiProtocol();
|
||||
|
||||
// Act
|
||||
protocol.ValidateResponse(Encoding.ASCII.GetBytes(request), Encoding.ASCII.GetBytes(response));
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ModbusException>(() => protocol.ValidateResponse(Encoding.ASCII.GetBytes(request), Encoding.ASCII.GetBytes(response)));
|
||||
}
|
||||
|
||||
[DataTestMethod]
|
||||
@@ -984,7 +907,6 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
[DataRow(0x02)]
|
||||
[DataRow(0x03)]
|
||||
[DataRow(0x04)]
|
||||
[ExpectedException(typeof(ModbusException))]
|
||||
public void ShouldThrowForReadLengthOnValidateResponse(int fn)
|
||||
{
|
||||
// Arrange
|
||||
@@ -993,8 +915,8 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
AddTrailer(ref response);
|
||||
var protocol = new AsciiProtocol();
|
||||
|
||||
// Act
|
||||
protocol.ValidateResponse(Encoding.ASCII.GetBytes(request), Encoding.ASCII.GetBytes(response));
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ModbusException>(() => protocol.ValidateResponse(Encoding.ASCII.GetBytes(request), Encoding.ASCII.GetBytes(response)));
|
||||
}
|
||||
|
||||
[DataTestMethod]
|
||||
@@ -1002,7 +924,6 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
[DataRow(0x06)]
|
||||
[DataRow(0x0F)]
|
||||
[DataRow(0x10)]
|
||||
[ExpectedException(typeof(ModbusException))]
|
||||
public void ShouldThrowForWriteLengthOnValidateResponse(int fn)
|
||||
{
|
||||
// Arrange
|
||||
@@ -1011,8 +932,8 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
AddTrailer(ref response);
|
||||
var protocol = new AsciiProtocol();
|
||||
|
||||
// Act
|
||||
protocol.ValidateResponse(Encoding.ASCII.GetBytes(request), Encoding.ASCII.GetBytes(response));
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ModbusException>(() => protocol.ValidateResponse(Encoding.ASCII.GetBytes(request), Encoding.ASCII.GetBytes(response)));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
@@ -1033,58 +954,46 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
[DataRow("")]
|
||||
[DataRow(" ")]
|
||||
[DataRow("\t")]
|
||||
[ExpectedException(typeof(ArgumentNullException))]
|
||||
public void ShouldThrowArgumentNullExceptionForMessageOnLrc(string msg)
|
||||
{
|
||||
// Arrange
|
||||
|
||||
// Act
|
||||
AsciiProtocol.LRC(msg);
|
||||
|
||||
// Assert - ArgumentNullException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentNullException>(() => AsciiProtocol.LRC(msg));
|
||||
}
|
||||
|
||||
[DataTestMethod]
|
||||
[DataRow(-1)]
|
||||
[DataRow(4)]
|
||||
[ExpectedException(typeof(ArgumentOutOfRangeException))]
|
||||
public void ShouldThrowArgumentOutOfRangeExceptionForStartOnLrc(int start)
|
||||
{
|
||||
// Arrange
|
||||
string msg = "0207";
|
||||
|
||||
// Act
|
||||
AsciiProtocol.LRC(msg, start);
|
||||
|
||||
// Assert - ArgumentOutOfRangeException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentOutOfRangeException>(() => AsciiProtocol.LRC(msg, start));
|
||||
}
|
||||
|
||||
[DataTestMethod]
|
||||
[DataRow(0)]
|
||||
[DataRow(5)]
|
||||
[ExpectedException(typeof(ArgumentOutOfRangeException))]
|
||||
public void ShouldThrowArgumentOutOfRangeExceptionForLengthOnLrc(int length)
|
||||
{
|
||||
// Arrange
|
||||
string msg = "0207";
|
||||
|
||||
// Act
|
||||
AsciiProtocol.LRC(msg, 0, length);
|
||||
|
||||
// Assert - ArgumentOutOfRangeException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentOutOfRangeException>(() => AsciiProtocol.LRC(msg, 0, length));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentException))]
|
||||
public void ShouldThrowArgumentExceptionForMessageLengthOnLrc()
|
||||
{
|
||||
// Arrange
|
||||
string msg = "0207";
|
||||
|
||||
// Act
|
||||
AsciiProtocol.LRC(msg);
|
||||
|
||||
// Assert - ArgumentException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentException>(() => AsciiProtocol.LRC(msg));
|
||||
}
|
||||
|
||||
#endregion Validation
|
||||
|
||||
@@ -55,29 +55,23 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
[DataTestMethod]
|
||||
[DataRow(0)]
|
||||
[DataRow(2001)]
|
||||
[ExpectedException(typeof(ArgumentOutOfRangeException))]
|
||||
public void ShouldThrowOutOfRangeForCountOnSerializeReadCoils(int count)
|
||||
{
|
||||
// Arrange
|
||||
var protocol = new RtuOverTcpProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeReadCoils(UNIT_ID, 19, (ushort)count);
|
||||
|
||||
// Assert - ArgumentOutOfRangeException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentOutOfRangeException>(() => protocol.SerializeReadCoils(UNIT_ID, 19, (ushort)count));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentOutOfRangeException))]
|
||||
public void ShouldThrowOutOfRangeForStartingAddressOnSerializeReadCoils()
|
||||
{
|
||||
// Arrange
|
||||
var protocol = new RtuOverTcpProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeReadCoils(UNIT_ID, ushort.MaxValue, 2);
|
||||
|
||||
// Assert - ArgumentOutOfRangeException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentOutOfRangeException>(() => protocol.SerializeReadCoils(UNIT_ID, ushort.MaxValue, 2));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
@@ -106,16 +100,13 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ModbusException))]
|
||||
public void ShouldThrowExceptionOnDeserializeReadCoils()
|
||||
{
|
||||
// Arrange
|
||||
var protocol = new RtuOverTcpProtocol();
|
||||
|
||||
// Act
|
||||
protocol.DeserializeReadCoils([0x00, 0x01, 0x00, 0x00, 0x00, 0x08, UNIT_ID, 0x01, 0x02, 0xCD, 0x6B, 0x05, 0x00, 0x00]);
|
||||
|
||||
// Assert - ModbusException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ModbusException>(() => protocol.DeserializeReadCoils([0x00, 0x01, 0x00, 0x00, 0x00, 0x08, UNIT_ID, 0x01, 0x02, 0xCD, 0x6B, 0x05, 0x00, 0x00]));
|
||||
}
|
||||
|
||||
#endregion Read Coils
|
||||
@@ -166,29 +157,23 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
[DataTestMethod]
|
||||
[DataRow(0)]
|
||||
[DataRow(2001)]
|
||||
[ExpectedException(typeof(ArgumentOutOfRangeException))]
|
||||
public void ShouldThrowOutOfRangeForCountOnSerializeReadDiscreteInputs(int count)
|
||||
{
|
||||
// Arrange
|
||||
var protocol = new RtuOverTcpProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeReadDiscreteInputs(UNIT_ID, 19, (ushort)count);
|
||||
|
||||
// Assert - ArgumentOutOfRangeException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentOutOfRangeException>(() => protocol.SerializeReadDiscreteInputs(UNIT_ID, 19, (ushort)count));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentOutOfRangeException))]
|
||||
public void ShouldThrowOutOfRangeForStartingAddressOnSerializeReadDiscreteInputs()
|
||||
{
|
||||
// Arrange
|
||||
var protocol = new RtuOverTcpProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeReadDiscreteInputs(UNIT_ID, ushort.MaxValue, 2);
|
||||
|
||||
// Assert - ArgumentOutOfRangeException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentOutOfRangeException>(() => protocol.SerializeReadDiscreteInputs(UNIT_ID, ushort.MaxValue, 2));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
@@ -217,16 +202,13 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ModbusException))]
|
||||
public void ShouldThrowExceptionOnDeserializeReadDiscreteInputs()
|
||||
{
|
||||
// Arrange
|
||||
var protocol = new RtuOverTcpProtocol();
|
||||
|
||||
// Act
|
||||
protocol.DeserializeReadDiscreteInputs([0x00, 0x01, 0x00, 0x00, 0x00, 0x08, UNIT_ID, 0x02, 0x02, 0xCD, 0x6B, 0x05, 0x00, 0x00]);
|
||||
|
||||
// Assert - ModbusException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ModbusException>(() => protocol.DeserializeReadDiscreteInputs([0x00, 0x01, 0x00, 0x00, 0x00, 0x08, UNIT_ID, 0x02, 0x02, 0xCD, 0x6B, 0x05, 0x00, 0x00]));
|
||||
}
|
||||
|
||||
#endregion Read Discrete Inputs
|
||||
@@ -277,29 +259,23 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
[DataTestMethod]
|
||||
[DataRow(0)]
|
||||
[DataRow(126)]
|
||||
[ExpectedException(typeof(ArgumentOutOfRangeException))]
|
||||
public void ShouldThrowOutOfRangeForCountOnSerializeReadHoldingRegisters(int count)
|
||||
{
|
||||
// Arrange
|
||||
var protocol = new RtuOverTcpProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeReadHoldingRegisters(UNIT_ID, 19, (ushort)count);
|
||||
|
||||
// Assert - ArgumentOutOfRangeException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentOutOfRangeException>(() => protocol.SerializeReadHoldingRegisters(UNIT_ID, 19, (ushort)count));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentOutOfRangeException))]
|
||||
public void ShouldThrowOutOfRangeForStartingAddressOnSerializeReadHoldingRegisters()
|
||||
{
|
||||
// Arrange
|
||||
var protocol = new RtuOverTcpProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeReadHoldingRegisters(UNIT_ID, ushort.MaxValue, 2);
|
||||
|
||||
// Assert - ArgumentOutOfRangeException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentOutOfRangeException>(() => protocol.SerializeReadHoldingRegisters(UNIT_ID, ushort.MaxValue, 2));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
@@ -323,16 +299,13 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ModbusException))]
|
||||
public void ShouldThrowExceptionOnDeserializeReadHoldingRegisters()
|
||||
{
|
||||
// Arrange
|
||||
var protocol = new RtuOverTcpProtocol();
|
||||
|
||||
// Act
|
||||
protocol.DeserializeReadHoldingRegisters([0x00, 0x01, 0x00, 0x00, 0x00, 0x07, UNIT_ID, 0x03, 0x04, 0x02, 0x2B, 0x00, 0x00]);
|
||||
|
||||
// Assert - ModbusException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ModbusException>(() => protocol.DeserializeReadHoldingRegisters([0x00, 0x01, 0x00, 0x00, 0x00, 0x08, UNIT_ID, 0x03, 0x04, 0x02, 0x2B, 0x00, 0x00]));
|
||||
}
|
||||
|
||||
#endregion Read Holding Registers
|
||||
@@ -383,29 +356,23 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
[DataTestMethod]
|
||||
[DataRow(0)]
|
||||
[DataRow(126)]
|
||||
[ExpectedException(typeof(ArgumentOutOfRangeException))]
|
||||
public void ShouldThrowOutOfRangeForCountOnSerializeReadInputRegisters(int count)
|
||||
{
|
||||
// Arrange
|
||||
var protocol = new RtuOverTcpProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeReadInputRegisters(UNIT_ID, 19, (ushort)count);
|
||||
|
||||
// Assert - ArgumentOutOfRangeException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentOutOfRangeException>(() => protocol.SerializeReadInputRegisters(UNIT_ID, 19, (ushort)count));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentOutOfRangeException))]
|
||||
public void ShouldThrowOutOfRangeForStartingAddressOnSerializeReadInputRegisters()
|
||||
{
|
||||
// Arrange
|
||||
var protocol = new RtuOverTcpProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeReadInputRegisters(UNIT_ID, ushort.MaxValue, 2);
|
||||
|
||||
// Assert - ArgumentOutOfRangeException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentOutOfRangeException>(() => protocol.SerializeReadInputRegisters(UNIT_ID, ushort.MaxValue, 2));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
@@ -429,16 +396,13 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ModbusException))]
|
||||
public void ShouldThrowExceptionOnDeserializeReadInputRegisters()
|
||||
{
|
||||
// Arrange
|
||||
var protocol = new RtuOverTcpProtocol();
|
||||
|
||||
// Act
|
||||
protocol.DeserializeReadInputRegisters([0x00, 0x01, 0x00, 0x00, 0x00, 0x07, UNIT_ID, 0x04, 0x04, 0x02, 0x2B, 0x00, 0x00]);
|
||||
|
||||
// Assert - ModbusException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ModbusException>(() => protocol.DeserializeReadInputRegisters([0x00, 0x01, 0x00, 0x00, 0x00, 0x08, UNIT_ID, 0x04, 0x04, 0x02, 0x2B, 0x00, 0x00]));
|
||||
}
|
||||
|
||||
#endregion Read Input Registers
|
||||
@@ -493,16 +457,13 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentOutOfRangeException))]
|
||||
public void ShouldThrowOutOfRangeExceptionForCategoryOnSerializeReadDeviceIdentification()
|
||||
{
|
||||
// Arrange
|
||||
var protocol = new RtuOverTcpProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeReadDeviceIdentification(UNIT_ID, (ModbusDeviceIdentificationCategory)10, ModbusDeviceIdentificationObject.ProductCode);
|
||||
|
||||
// Assert - ArgumentOutOfRangeException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentOutOfRangeException>(() => protocol.SerializeReadDeviceIdentification(UNIT_ID, (ModbusDeviceIdentificationCategory)10, ModbusDeviceIdentificationObject.ProductCode));
|
||||
}
|
||||
|
||||
[DataTestMethod]
|
||||
@@ -529,27 +490,25 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ModbusException))]
|
||||
public void ShouldThrowExceptionOnDeserializeReadDeviceIdentificationForMeiType()
|
||||
{
|
||||
// Arrange
|
||||
byte[] response = [0x00, 0x01, 0x00, 0x00, 0x00, 0x05, UNIT_ID, 0x2B, 0x0D, 0x00, 0x00];
|
||||
var protocol = new RtuOverTcpProtocol();
|
||||
|
||||
// Act
|
||||
protocol.DeserializeReadDeviceIdentification(response);
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ModbusException>(() => protocol.DeserializeReadDeviceIdentification(response));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ModbusException))]
|
||||
public void ShouldThrowExceptionOnDeserializeReadDeviceIdentificationForCategory()
|
||||
{
|
||||
// Arrange
|
||||
byte[] response = [0x00, 0x01, 0x00, 0x00, 0x00, 0x06, UNIT_ID, 0x2B, 0x0E, 0x08, 0x00, 0x00];
|
||||
var protocol = new RtuOverTcpProtocol();
|
||||
|
||||
// Act
|
||||
protocol.DeserializeReadDeviceIdentification(response);
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ModbusException>(() => protocol.DeserializeReadDeviceIdentification(response));
|
||||
}
|
||||
|
||||
#endregion Read Device Identification
|
||||
@@ -600,16 +559,13 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentNullException))]
|
||||
public void ShouldThrowArgumentNullOnSerializeWriteSingleCoil()
|
||||
{
|
||||
// Arrange
|
||||
var protocol = new RtuOverTcpProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeWriteSingleCoil(UNIT_ID, null);
|
||||
|
||||
// Assert - ArgumentNullException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentNullException>(() => protocol.SerializeWriteSingleCoil(UNIT_ID, null));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
@@ -676,16 +632,13 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentNullException))]
|
||||
public void ShouldThrowArgumentNullOnSerializeWriteSingleHoldingRegister()
|
||||
{
|
||||
// Arrange
|
||||
var protocol = new RtuOverTcpProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeWriteSingleHoldingRegister(UNIT_ID, null);
|
||||
|
||||
// Assert - ArgumentNullException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentNullException>(() => protocol.SerializeWriteSingleHoldingRegister(UNIT_ID, null));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
@@ -765,22 +718,18 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentNullException))]
|
||||
public void ShouldThrowArgumentNullOnSerializeWriteMultipleCoils()
|
||||
{
|
||||
// Arrange
|
||||
var protocol = new RtuOverTcpProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeWriteMultipleCoils(UNIT_ID, null);
|
||||
|
||||
// Assert - ArgumentNullException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentNullException>(() => protocol.SerializeWriteMultipleCoils(UNIT_ID, null));
|
||||
}
|
||||
|
||||
[DataTestMethod]
|
||||
[DataRow(0)]
|
||||
[DataRow(1969)]
|
||||
[ExpectedException(typeof(ArgumentOutOfRangeException))]
|
||||
public void ShouldThrowOutOfRangeForCountOnSerializeWriteMultipleCoils(int count)
|
||||
{
|
||||
// Arrange
|
||||
@@ -790,14 +739,11 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
|
||||
var protocol = new RtuOverTcpProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeWriteMultipleCoils(UNIT_ID, coils);
|
||||
|
||||
// Assert - ArgumentOutOfRangeException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentOutOfRangeException>(() => protocol.SerializeWriteMultipleCoils(UNIT_ID, coils));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentException))]
|
||||
public void ShouldThrowArgumentExceptionForDuplicateEntryOnSerializeMultipleCoils()
|
||||
{
|
||||
// Arrange
|
||||
@@ -808,14 +754,11 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
};
|
||||
var protocol = new RtuOverTcpProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeWriteMultipleCoils(UNIT_ID, coils);
|
||||
|
||||
// Assert - ArgumentException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentException>(() => protocol.SerializeWriteMultipleCoils(UNIT_ID, coils));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentException))]
|
||||
public void ShouldThrowArgumentExceptionForGapInAddressOnSerializeMultipleCoils()
|
||||
{
|
||||
// Arrange
|
||||
@@ -826,10 +769,8 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
};
|
||||
var protocol = new RtuOverTcpProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeWriteMultipleCoils(UNIT_ID, coils);
|
||||
|
||||
// Assert - ArgumentException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentException>(() => protocol.SerializeWriteMultipleCoils(UNIT_ID, coils));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
@@ -908,22 +849,18 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentNullException))]
|
||||
public void ShouldThrowArgumentNullOnSerializeWriteMultipleHoldingRegisters()
|
||||
{
|
||||
// Arrange
|
||||
var protocol = new RtuOverTcpProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeWriteMultipleHoldingRegisters(UNIT_ID, null);
|
||||
|
||||
// Assert - ArgumentNullException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentNullException>(() => protocol.SerializeWriteMultipleHoldingRegisters(UNIT_ID, null));
|
||||
}
|
||||
|
||||
[DataTestMethod]
|
||||
[DataRow(0)]
|
||||
[DataRow(124)]
|
||||
[ExpectedException(typeof(ArgumentOutOfRangeException))]
|
||||
public void ShouldThrowOutOfRangeForCountOnSerializeWriteMultipleHoldingRegisters(int count)
|
||||
{
|
||||
// Arrange
|
||||
@@ -933,14 +870,11 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
|
||||
var protocol = new RtuOverTcpProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeWriteMultipleHoldingRegisters(UNIT_ID, registers);
|
||||
|
||||
// Assert - ArgumentOutOfRangeException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentOutOfRangeException>(() => protocol.SerializeWriteMultipleHoldingRegisters(UNIT_ID, registers));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentException))]
|
||||
public void ShouldThrowArgumentExceptionForDuplicateEntryOnSerializeMultipleHoldingRegisters()
|
||||
{
|
||||
// Arrange
|
||||
@@ -951,14 +885,11 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
};
|
||||
var protocol = new RtuOverTcpProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeWriteMultipleHoldingRegisters(UNIT_ID, registers);
|
||||
|
||||
// Assert - ArgumentException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentException>(() => protocol.SerializeWriteMultipleHoldingRegisters(UNIT_ID, registers));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentException))]
|
||||
public void ShouldThrowArgumentExceptionForGapInAddressOnSerializeMultipleHoldingRegisters()
|
||||
{
|
||||
// Arrange
|
||||
@@ -969,10 +900,8 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
};
|
||||
var protocol = new RtuOverTcpProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeWriteMultipleHoldingRegisters(UNIT_ID, registers);
|
||||
|
||||
// Assert - ArgumentException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentException>(() => protocol.SerializeWriteMultipleHoldingRegisters(UNIT_ID, registers));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
@@ -1065,7 +994,6 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
[DataTestMethod]
|
||||
[DataRow(0x00, 0x00)]
|
||||
[DataRow(0x01, 0x01)]
|
||||
[ExpectedException(typeof(ModbusException))]
|
||||
public void ShouldThrowForTransactionIdOnValidateResponse(int hi, int lo)
|
||||
{
|
||||
// Arrange
|
||||
@@ -1074,14 +1002,13 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
SetCrc(response);
|
||||
var protocol = new RtuOverTcpProtocol();
|
||||
|
||||
// Act
|
||||
protocol.ValidateResponse(request, response);
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ModbusException>(() => protocol.ValidateResponse(request, response));
|
||||
}
|
||||
|
||||
[DataTestMethod]
|
||||
[DataRow(0x00, 0x01)]
|
||||
[DataRow(0x01, 0x00)]
|
||||
[ExpectedException(typeof(ModbusException))]
|
||||
public void ShouldThrowForProtocolIdOnValidateResponse(int hi, int lo)
|
||||
{
|
||||
// Arrange
|
||||
@@ -1090,12 +1017,11 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
SetCrc(response);
|
||||
var protocol = new RtuOverTcpProtocol();
|
||||
|
||||
// Act
|
||||
protocol.ValidateResponse(request, response);
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ModbusException>(() => protocol.ValidateResponse(request, response));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ModbusException))]
|
||||
public void ShouldThrowForFollowingBytesOnValidateResponse()
|
||||
{
|
||||
// Arrange
|
||||
@@ -1104,12 +1030,11 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
SetCrc(response);
|
||||
var protocol = new RtuOverTcpProtocol();
|
||||
|
||||
// Act
|
||||
protocol.ValidateResponse(request, response);
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ModbusException>(() => protocol.ValidateResponse(request, response));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ModbusException))]
|
||||
public void ShouldThrowForUnitIdOnValidateResponse()
|
||||
{
|
||||
// Arrange
|
||||
@@ -1118,12 +1043,11 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
SetCrc(response);
|
||||
var protocol = new RtuOverTcpProtocol();
|
||||
|
||||
// Act
|
||||
protocol.ValidateResponse(request, response);
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ModbusException>(() => protocol.ValidateResponse(request, response));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ModbusException))]
|
||||
public void ShouldThrowForFunctionCodeOnValidateResponse()
|
||||
{
|
||||
// Arrange
|
||||
@@ -1132,12 +1056,11 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
SetCrc(response);
|
||||
var protocol = new RtuOverTcpProtocol();
|
||||
|
||||
// Act
|
||||
protocol.ValidateResponse(request, response);
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ModbusException>(() => protocol.ValidateResponse(request, response));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ModbusException))]
|
||||
public void ShouldThrowForModbusErrorOnValidateResponse()
|
||||
{
|
||||
// Arrange
|
||||
@@ -1146,14 +1069,13 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
SetCrc(response);
|
||||
var protocol = new RtuOverTcpProtocol();
|
||||
|
||||
// Act
|
||||
protocol.ValidateResponse(request, response);
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ModbusException>(() => protocol.ValidateResponse(request, response));
|
||||
}
|
||||
|
||||
[DataTestMethod]
|
||||
[DataRow(0x59, 0x6C)]
|
||||
[DataRow(0x58, 0x6B)]
|
||||
[ExpectedException(typeof(ModbusException))]
|
||||
public void ShouldThrowForCrcOnValidateResponse(int hi, int lo)
|
||||
{
|
||||
// Arrange
|
||||
@@ -1161,8 +1083,8 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
byte[] response = [0x00, 0x01, 0x00, 0x00, 0x00, 0x06, UNIT_ID, 0x01, 0x01, 0x00, (byte)hi, (byte)lo];
|
||||
var protocol = new RtuOverTcpProtocol();
|
||||
|
||||
// Act
|
||||
protocol.ValidateResponse(request, response);
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ModbusException>(() => protocol.ValidateResponse(request, response));
|
||||
}
|
||||
|
||||
#endregion Validation
|
||||
|
||||
@@ -43,29 +43,23 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
[DataTestMethod]
|
||||
[DataRow(0)]
|
||||
[DataRow(2001)]
|
||||
[ExpectedException(typeof(ArgumentOutOfRangeException))]
|
||||
public void ShouldThrowOutOfRangeForCountOnSerializeReadCoils(int count)
|
||||
{
|
||||
// Arrange
|
||||
var protocol = new RtuProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeReadCoils(UNIT_ID, 19, (ushort)count);
|
||||
|
||||
// Assert - ArgumentOutOfRangeException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentOutOfRangeException>(() => protocol.SerializeReadCoils(UNIT_ID, 19, (ushort)count));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentOutOfRangeException))]
|
||||
public void ShouldThrowOutOfRangeForStartingAddressOnSerializeReadCoils()
|
||||
{
|
||||
// Arrange
|
||||
var protocol = new RtuProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeReadCoils(UNIT_ID, ushort.MaxValue, 2);
|
||||
|
||||
// Assert - ArgumentOutOfRangeException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentOutOfRangeException>(() => protocol.SerializeReadCoils(UNIT_ID, ushort.MaxValue, 2));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
@@ -94,16 +88,13 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ModbusException))]
|
||||
public void ShouldThrowExceptionOnDeserializeReadCoils()
|
||||
{
|
||||
// Arrange
|
||||
var protocol = new RtuProtocol();
|
||||
|
||||
// Act
|
||||
_ = protocol.DeserializeReadCoils([UNIT_ID, 0x01, 0x02, 0xCD, 0x6B, 0x05, 0x00, 0x00]);
|
||||
|
||||
// Assert - ModbusException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ModbusException>(() => protocol.DeserializeReadCoils([UNIT_ID, 0x01, 0x02, 0xCD, 0x6B, 0x05, 0x00, 0x00]));
|
||||
}
|
||||
|
||||
#endregion Read Coils
|
||||
@@ -142,29 +133,23 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
[DataTestMethod]
|
||||
[DataRow(0)]
|
||||
[DataRow(2001)]
|
||||
[ExpectedException(typeof(ArgumentOutOfRangeException))]
|
||||
public void ShouldThrowOutOfRangeForCountOnSerializeReadDiscreteInputs(int count)
|
||||
{
|
||||
// Arrange
|
||||
var protocol = new RtuProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeReadDiscreteInputs(UNIT_ID, 19, (ushort)count);
|
||||
|
||||
// Assert - ArgumentOutOfRangeException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentOutOfRangeException>(() => protocol.SerializeReadDiscreteInputs(UNIT_ID, 19, (ushort)count));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentOutOfRangeException))]
|
||||
public void ShouldThrowOutOfRangeForStartingAddressOnSerializeReadDiscreteInputs()
|
||||
{
|
||||
// Arrange
|
||||
var protocol = new RtuProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeReadDiscreteInputs(UNIT_ID, ushort.MaxValue, 2);
|
||||
|
||||
// Assert - ArgumentOutOfRangeException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentOutOfRangeException>(() => protocol.SerializeReadDiscreteInputs(UNIT_ID, ushort.MaxValue, 2));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
@@ -193,16 +178,13 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ModbusException))]
|
||||
public void ShouldThrowExceptionOnDeserializeReadDiscreteInputs()
|
||||
{
|
||||
// Arrange
|
||||
var protocol = new RtuProtocol();
|
||||
|
||||
// Act
|
||||
_ = protocol.DeserializeReadDiscreteInputs([UNIT_ID, 0x02, 0x02, 0xCD, 0x6B, 0x05, 0x00, 0x00]);
|
||||
|
||||
// Assert - ModbusException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ModbusException>(() => protocol.DeserializeReadDiscreteInputs([UNIT_ID, 0x02, 0x02, 0xCD, 0x6B, 0x05, 0x00, 0x00]));
|
||||
}
|
||||
|
||||
#endregion Read Discrete Inputs
|
||||
@@ -241,29 +223,23 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
[DataTestMethod]
|
||||
[DataRow(0)]
|
||||
[DataRow(126)]
|
||||
[ExpectedException(typeof(ArgumentOutOfRangeException))]
|
||||
public void ShouldThrowOutOfRangeForCountOnSerializeReadHoldingRegisters(int count)
|
||||
{
|
||||
// Arrange
|
||||
var protocol = new RtuProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeReadHoldingRegisters(UNIT_ID, 19, (ushort)count);
|
||||
|
||||
// Assert - ArgumentOutOfRangeException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentOutOfRangeException>(() => protocol.SerializeReadHoldingRegisters(UNIT_ID, 19, (ushort)count));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentOutOfRangeException))]
|
||||
public void ShouldThrowOutOfRangeForStartingAddressOnSerializeReadHoldingRegisters()
|
||||
{
|
||||
// Arrange
|
||||
var protocol = new RtuProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeReadHoldingRegisters(UNIT_ID, ushort.MaxValue, 2);
|
||||
|
||||
// Assert - ArgumentOutOfRangeException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentOutOfRangeException>(() => protocol.SerializeReadHoldingRegisters(UNIT_ID, ushort.MaxValue, 2));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
@@ -287,16 +263,13 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ModbusException))]
|
||||
public void ShouldThrowExceptionOnDeserializeReadHoldingRegisters()
|
||||
{
|
||||
// Arrange
|
||||
var protocol = new RtuProtocol();
|
||||
|
||||
// Act
|
||||
protocol.DeserializeReadHoldingRegisters([UNIT_ID, 0x03, 0x04, 0x02, 0x2B, 0x00, 0x00]);
|
||||
|
||||
// Assert - ModbusException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ModbusException>(() => protocol.DeserializeReadHoldingRegisters([UNIT_ID, 0x03, 0x04, 0x02, 0x2B, 0x00, 0x00]));
|
||||
}
|
||||
|
||||
#endregion Read Holding Registers
|
||||
@@ -335,29 +308,23 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
[DataTestMethod]
|
||||
[DataRow(0)]
|
||||
[DataRow(126)]
|
||||
[ExpectedException(typeof(ArgumentOutOfRangeException))]
|
||||
public void ShouldThrowOutOfRangeForCountOnSerializeReadInputRegisters(int count)
|
||||
{
|
||||
// Arrange
|
||||
var protocol = new RtuProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeReadInputRegisters(UNIT_ID, 19, (ushort)count);
|
||||
|
||||
// Assert - ArgumentOutOfRangeException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentOutOfRangeException>(() => protocol.SerializeReadInputRegisters(UNIT_ID, 19, (ushort)count));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentOutOfRangeException))]
|
||||
public void ShouldThrowOutOfRangeForStartingAddressOnSerializeReadInputRegisters()
|
||||
{
|
||||
// Arrange
|
||||
var protocol = new RtuProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeReadInputRegisters(UNIT_ID, ushort.MaxValue, 2);
|
||||
|
||||
// Assert - ArgumentOutOfRangeException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentOutOfRangeException>(() => protocol.SerializeReadInputRegisters(UNIT_ID, ushort.MaxValue, 2));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
@@ -381,16 +348,13 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ModbusException))]
|
||||
public void ShouldThrowExceptionOnDeserializeReadInputRegisters()
|
||||
{
|
||||
// Arrange
|
||||
var protocol = new RtuProtocol();
|
||||
|
||||
// Act
|
||||
protocol.DeserializeReadInputRegisters([UNIT_ID, 0x04, 0x04, 0x02, 0x2B, 0x00, 0x00]);
|
||||
|
||||
// Assert - ModbusException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ModbusException>(() => protocol.DeserializeReadInputRegisters([UNIT_ID, 0x04, 0x04, 0x02, 0x2B, 0x00, 0x00]));
|
||||
}
|
||||
|
||||
#endregion Read Input Registers
|
||||
@@ -433,16 +397,13 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentOutOfRangeException))]
|
||||
public void ShouldThrowOutOfRangeExceptionForCategoryOnSerializeReadDeviceIdentification()
|
||||
{
|
||||
// Arrange
|
||||
var protocol = new RtuProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeReadDeviceIdentification(UNIT_ID, (ModbusDeviceIdentificationCategory)10, ModbusDeviceIdentificationObject.ProductCode);
|
||||
|
||||
// Assert - ArgumentOutOfRangeException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentOutOfRangeException>(() => protocol.SerializeReadDeviceIdentification(UNIT_ID, (ModbusDeviceIdentificationCategory)10, ModbusDeviceIdentificationObject.ProductCode));
|
||||
}
|
||||
|
||||
[DataTestMethod]
|
||||
@@ -469,27 +430,25 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ModbusException))]
|
||||
public void ShouldThrowExceptionOnDeserializeReadDeviceIdentificationForMeiType()
|
||||
{
|
||||
// Arrange
|
||||
byte[] response = [UNIT_ID, 0x2B, 0x0D, 0x00, 0x00];
|
||||
var protocol = new RtuProtocol();
|
||||
|
||||
// Act
|
||||
protocol.DeserializeReadDeviceIdentification(response);
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ModbusException>(() => protocol.DeserializeReadDeviceIdentification(response));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ModbusException))]
|
||||
public void ShouldThrowExceptionOnDeserializeReadDeviceIdentificationForCategory()
|
||||
{
|
||||
// Arrange
|
||||
byte[] response = [UNIT_ID, 0x2B, 0x0E, 0x08, 0x00, 0x00];
|
||||
var protocol = new RtuProtocol();
|
||||
|
||||
// Act
|
||||
protocol.DeserializeReadDeviceIdentification(response);
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ModbusException>(() => protocol.DeserializeReadDeviceIdentification(response));
|
||||
}
|
||||
|
||||
#endregion Read Device Identification
|
||||
@@ -528,16 +487,13 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentNullException))]
|
||||
public void ShouldThrowArgumentNullOnSerializeWriteSingleCoil()
|
||||
{
|
||||
// Arrange
|
||||
var protocol = new RtuProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeWriteSingleCoil(UNIT_ID, null);
|
||||
|
||||
// Assert - ArgumentNullException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentNullException>(() => protocol.SerializeWriteSingleCoil(UNIT_ID, null));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
@@ -592,16 +548,13 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentNullException))]
|
||||
public void ShouldThrowArgumentNullOnSerializeWriteSingleHoldingRegister()
|
||||
{
|
||||
// Arrange
|
||||
var protocol = new RtuProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeWriteSingleHoldingRegister(UNIT_ID, null);
|
||||
|
||||
// Assert - ArgumentNullException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentNullException>(() => protocol.SerializeWriteSingleHoldingRegister(UNIT_ID, null));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
@@ -669,22 +622,18 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentNullException))]
|
||||
public void ShouldThrowArgumentNullOnSerializeWriteMultipleCoils()
|
||||
{
|
||||
// Arrange
|
||||
var protocol = new RtuProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeWriteMultipleCoils(UNIT_ID, null);
|
||||
|
||||
// Assert - ArgumentNullException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentNullException>(() => protocol.SerializeWriteMultipleCoils(UNIT_ID, null));
|
||||
}
|
||||
|
||||
[DataTestMethod]
|
||||
[DataRow(0)]
|
||||
[DataRow(1969)]
|
||||
[ExpectedException(typeof(ArgumentOutOfRangeException))]
|
||||
public void ShouldThrowOutOfRangeForCountOnSerializeWriteMultipleCoils(int count)
|
||||
{
|
||||
// Arrange
|
||||
@@ -694,14 +643,11 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
|
||||
var protocol = new RtuProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeWriteMultipleCoils(UNIT_ID, coils);
|
||||
|
||||
// Assert - ArgumentOutOfRangeException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentOutOfRangeException>(() => protocol.SerializeWriteMultipleCoils(UNIT_ID, coils));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentException))]
|
||||
public void ShouldThrowArgumentExceptionForDuplicateEntryOnSerializeMultipleCoils()
|
||||
{
|
||||
// Arrange
|
||||
@@ -712,14 +658,11 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
};
|
||||
var protocol = new RtuProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeWriteMultipleCoils(UNIT_ID, coils);
|
||||
|
||||
// Assert - ArgumentException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentException>(() => protocol.SerializeWriteMultipleCoils(UNIT_ID, coils));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentException))]
|
||||
public void ShouldThrowArgumentExceptionForGapInAddressOnSerializeMultipleCoils()
|
||||
{
|
||||
// Arrange
|
||||
@@ -730,10 +673,8 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
};
|
||||
var protocol = new RtuProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeWriteMultipleCoils(UNIT_ID, coils);
|
||||
|
||||
// Assert - ArgumentException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentException>(() => protocol.SerializeWriteMultipleCoils(UNIT_ID, coils));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
@@ -800,22 +741,18 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentNullException))]
|
||||
public void ShouldThrowArgumentNullOnSerializeWriteMultipleHoldingRegisters()
|
||||
{
|
||||
// Arrange
|
||||
var protocol = new RtuProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeWriteMultipleHoldingRegisters(UNIT_ID, null);
|
||||
|
||||
// Assert - ArgumentNullException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentNullException>(() => protocol.SerializeWriteMultipleHoldingRegisters(UNIT_ID, null));
|
||||
}
|
||||
|
||||
[DataTestMethod]
|
||||
[DataRow(0)]
|
||||
[DataRow(124)]
|
||||
[ExpectedException(typeof(ArgumentOutOfRangeException))]
|
||||
public void ShouldThrowOutOfRangeForCountOnSerializeWriteMultipleHoldingRegisters(int count)
|
||||
{
|
||||
// Arrange
|
||||
@@ -825,14 +762,11 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
|
||||
var protocol = new RtuProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeWriteMultipleHoldingRegisters(UNIT_ID, registers);
|
||||
|
||||
// Assert - ArgumentOutOfRangeException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentOutOfRangeException>(() => protocol.SerializeWriteMultipleHoldingRegisters(UNIT_ID, registers));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentException))]
|
||||
public void ShouldThrowArgumentExceptionForDuplicateEntryOnSerializeMultipleHoldingRegisters()
|
||||
{
|
||||
// Arrange
|
||||
@@ -843,14 +777,11 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
};
|
||||
var protocol = new RtuProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeWriteMultipleHoldingRegisters(UNIT_ID, registers);
|
||||
|
||||
// Assert - ArgumentException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentException>(() => protocol.SerializeWriteMultipleHoldingRegisters(UNIT_ID, registers));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentException))]
|
||||
public void ShouldThrowArgumentExceptionForGapInAddressOnSerializeMultipleHoldingRegisters()
|
||||
{
|
||||
// Arrange
|
||||
@@ -861,10 +792,8 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
};
|
||||
var protocol = new RtuProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeWriteMultipleHoldingRegisters(UNIT_ID, registers);
|
||||
|
||||
// Assert - ArgumentException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentException>(() => protocol.SerializeWriteMultipleHoldingRegisters(UNIT_ID, registers));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
@@ -1105,7 +1034,6 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ModbusException))]
|
||||
public void ShouldThrowForUnitIdOnValidateResponse()
|
||||
{
|
||||
// Arrange
|
||||
@@ -1114,14 +1042,13 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
SetCrc(response);
|
||||
var protocol = new RtuProtocol();
|
||||
|
||||
// Act
|
||||
protocol.ValidateResponse(request, response);
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ModbusException>(() => protocol.ValidateResponse(request, response));
|
||||
}
|
||||
|
||||
[DataTestMethod]
|
||||
[DataRow(0x57, 0x6C)]
|
||||
[DataRow(0x58, 0x6B)]
|
||||
[ExpectedException(typeof(ModbusException))]
|
||||
public void ShouldThrowForCrcOnValidateResponse(int hi, int lo)
|
||||
{
|
||||
// Arrange
|
||||
@@ -1129,12 +1056,11 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
byte[] response = [UNIT_ID, 0x01, 0x01, 0x00, (byte)hi, (byte)lo];
|
||||
var protocol = new RtuProtocol();
|
||||
|
||||
// Act
|
||||
protocol.ValidateResponse(request, response);
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ModbusException>(() => protocol.ValidateResponse(request, response));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ModbusException))]
|
||||
public void ShouldThrowForFunctionCodeOnValidateResponse()
|
||||
{
|
||||
// Arrange
|
||||
@@ -1143,12 +1069,11 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
SetCrc(response);
|
||||
var protocol = new RtuProtocol();
|
||||
|
||||
// Act
|
||||
protocol.ValidateResponse(request, response);
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ModbusException>(() => protocol.ValidateResponse(request, response));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ModbusException))]
|
||||
public void ShouldThrowForErrorOnValidateResponse()
|
||||
{
|
||||
// Arrange
|
||||
@@ -1157,8 +1082,8 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
SetCrc(response);
|
||||
var protocol = new RtuProtocol();
|
||||
|
||||
// Act
|
||||
protocol.ValidateResponse(request, response);
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ModbusException>(() => protocol.ValidateResponse(request, response));
|
||||
}
|
||||
|
||||
[DataTestMethod]
|
||||
@@ -1166,7 +1091,6 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
[DataRow(0x02)]
|
||||
[DataRow(0x03)]
|
||||
[DataRow(0x04)]
|
||||
[ExpectedException(typeof(ModbusException))]
|
||||
public void ShouldThrowForReadLengthOnValidateResponse(int fn)
|
||||
{
|
||||
// Arrange
|
||||
@@ -1175,8 +1099,8 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
SetCrc(response);
|
||||
var protocol = new RtuProtocol();
|
||||
|
||||
// Act
|
||||
protocol.ValidateResponse(request, response);
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ModbusException>(() => protocol.ValidateResponse(request, response));
|
||||
}
|
||||
|
||||
[DataTestMethod]
|
||||
@@ -1184,7 +1108,6 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
[DataRow(0x06)]
|
||||
[DataRow(0x0F)]
|
||||
[DataRow(0x10)]
|
||||
[ExpectedException(typeof(ModbusException))]
|
||||
public void ShouldThrowForWriteLengthOnValidateResponse(int fn)
|
||||
{
|
||||
// Arrange
|
||||
@@ -1193,8 +1116,8 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
SetCrc(response);
|
||||
var protocol = new RtuProtocol();
|
||||
|
||||
// Act
|
||||
protocol.ValidateResponse(request, response);
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ModbusException>(() => protocol.ValidateResponse(request, response));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
@@ -1217,43 +1140,36 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
[DataTestMethod]
|
||||
[DataRow(null)]
|
||||
[DataRow(new byte[0])]
|
||||
[ExpectedException(typeof(ArgumentNullException))]
|
||||
public void ShuldThrowArgumentNullExceptionForBytesOnCrc16(byte[] bytes)
|
||||
{
|
||||
// Act
|
||||
_ = RtuProtocol.CRC16(bytes);
|
||||
// Arrange
|
||||
|
||||
// Assert - ArgumentNullException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentNullException>(() => RtuProtocol.CRC16(bytes));
|
||||
}
|
||||
|
||||
[DataTestMethod]
|
||||
[DataRow(-1)]
|
||||
[DataRow(10)]
|
||||
[ExpectedException(typeof(ArgumentOutOfRangeException))]
|
||||
public void ShouldThrowArgumentOutOfRangeForStartOnCrc16(int start)
|
||||
{
|
||||
// Arrange
|
||||
byte[] bytes = Encoding.UTF8.GetBytes("0123456789");
|
||||
|
||||
// Act
|
||||
_ = RtuProtocol.CRC16(bytes, start);
|
||||
|
||||
// Assert - ArgumentOutOfRangeException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentOutOfRangeException>(() => RtuProtocol.CRC16(bytes, start));
|
||||
}
|
||||
|
||||
[DataTestMethod]
|
||||
[DataRow(0)]
|
||||
[DataRow(11)]
|
||||
[ExpectedException(typeof(ArgumentOutOfRangeException))]
|
||||
public void ShouldThrowArgumentOutOfRangeForLengthOnCrc16(int length)
|
||||
{
|
||||
// Arrange
|
||||
byte[] bytes = Encoding.UTF8.GetBytes("0123456789");
|
||||
|
||||
// Act
|
||||
_ = RtuProtocol.CRC16(bytes, 0, length);
|
||||
|
||||
// Assert - ArgumentOutOfRangeException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentOutOfRangeException>(() => RtuProtocol.CRC16(bytes, 0, length));
|
||||
}
|
||||
|
||||
#endregion Validation
|
||||
|
||||
@@ -53,29 +53,23 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
[DataTestMethod]
|
||||
[DataRow(0)]
|
||||
[DataRow(2001)]
|
||||
[ExpectedException(typeof(ArgumentOutOfRangeException))]
|
||||
public void ShouldThrowOutOfRangeForCountOnSerializeReadCoils(int count)
|
||||
{
|
||||
// Arrange
|
||||
var protocol = new TcpProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeReadCoils(UNIT_ID, 19, (ushort)count);
|
||||
|
||||
// Assert - ArgumentOutOfRangeException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentOutOfRangeException>(() => protocol.SerializeReadCoils(UNIT_ID, 19, (ushort)count));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentOutOfRangeException))]
|
||||
public void ShouldThrowOutOfRangeForStartingAddressOnSerializeReadCoils()
|
||||
{
|
||||
// Arrange
|
||||
var protocol = new TcpProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeReadCoils(UNIT_ID, ushort.MaxValue, 2);
|
||||
|
||||
// Assert - ArgumentOutOfRangeException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentOutOfRangeException>(() => protocol.SerializeReadCoils(UNIT_ID, ushort.MaxValue, 2));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
@@ -104,16 +98,13 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ModbusException))]
|
||||
public void ShouldThrowExceptionOnDeserializeReadCoils()
|
||||
{
|
||||
// Arrange
|
||||
var protocol = new TcpProtocol();
|
||||
|
||||
// Act
|
||||
var coils = protocol.DeserializeReadCoils([0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x2A, 0x01, 0x02, 0xCD, 0x6B, 0x05]);
|
||||
|
||||
// Assert - ModbusException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ModbusException>(() => protocol.DeserializeReadCoils([0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x2A, 0x01, 0x02, 0xCD, 0x6B, 0x05]));
|
||||
}
|
||||
|
||||
#endregion Read Coils
|
||||
@@ -162,29 +153,23 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
[DataTestMethod]
|
||||
[DataRow(0)]
|
||||
[DataRow(2001)]
|
||||
[ExpectedException(typeof(ArgumentOutOfRangeException))]
|
||||
public void ShouldThrowOutOfRangeForCountOnSerializeReadDiscreteInputs(int count)
|
||||
{
|
||||
// Arrange
|
||||
var protocol = new TcpProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeReadDiscreteInputs(UNIT_ID, 19, (ushort)count);
|
||||
|
||||
// Assert - ArgumentOutOfRangeException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentOutOfRangeException>(() => protocol.SerializeReadDiscreteInputs(UNIT_ID, 19, (ushort)count));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentOutOfRangeException))]
|
||||
public void ShouldThrowOutOfRangeForStartingAddressOnSerializeReadDiscreteInputs()
|
||||
{
|
||||
// Arrange
|
||||
var protocol = new TcpProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeReadDiscreteInputs(UNIT_ID, ushort.MaxValue, 2);
|
||||
|
||||
// Assert - ArgumentOutOfRangeException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentOutOfRangeException>(() => protocol.SerializeReadDiscreteInputs(UNIT_ID, ushort.MaxValue, 2));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
@@ -213,16 +198,13 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ModbusException))]
|
||||
public void ShouldThrowExceptionOnDeserializeReadDiscreteInputs()
|
||||
{
|
||||
// Arrange
|
||||
var protocol = new TcpProtocol();
|
||||
|
||||
// Act
|
||||
protocol.DeserializeReadDiscreteInputs([0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x2A, 0x02, 0x03, 0xCD, 0x6B]);
|
||||
|
||||
// Assert - ModbusException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ModbusException>(() => protocol.DeserializeReadDiscreteInputs([0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x2A, 0x02, 0x03, 0xCD, 0x6B]));
|
||||
}
|
||||
|
||||
#endregion Read Discrete Inputs
|
||||
@@ -271,29 +253,23 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
[DataTestMethod]
|
||||
[DataRow(0)]
|
||||
[DataRow(126)]
|
||||
[ExpectedException(typeof(ArgumentOutOfRangeException))]
|
||||
public void ShouldThrowOutOfRangeForCountOnSerializeReadHoldingRegisters(int count)
|
||||
{
|
||||
// Arrange
|
||||
var protocol = new TcpProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeReadHoldingRegisters(UNIT_ID, 19, (ushort)count);
|
||||
|
||||
// Assert - ArgumentOutOfRangeException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentOutOfRangeException>(() => protocol.SerializeReadHoldingRegisters(UNIT_ID, 19, (ushort)count));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentOutOfRangeException))]
|
||||
public void ShouldThrowOutOfRangeForStartingAddressOnSerializeReadHoldingRegisters()
|
||||
{
|
||||
// Arrange
|
||||
var protocol = new TcpProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeReadHoldingRegisters(UNIT_ID, ushort.MaxValue, 2);
|
||||
|
||||
// Assert - ArgumentOutOfRangeException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentOutOfRangeException>(() => protocol.SerializeReadHoldingRegisters(UNIT_ID, ushort.MaxValue, 2));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
@@ -317,16 +293,13 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ModbusException))]
|
||||
public void ShouldThrowExceptionOnDeserializeReadHoldingRegisters()
|
||||
{
|
||||
// Arrange
|
||||
var protocol = new TcpProtocol();
|
||||
|
||||
// Act
|
||||
protocol.DeserializeReadHoldingRegisters([0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x2A, 0x03, 0x04, 0x02, 0x2B]);
|
||||
|
||||
// Assert - ModbusException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ModbusException>(() => protocol.DeserializeReadHoldingRegisters([0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x2A, 0x03, 0x04, 0x02, 0x2B]));
|
||||
}
|
||||
|
||||
#endregion Read Holding Registers
|
||||
@@ -375,29 +348,23 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
[DataTestMethod]
|
||||
[DataRow(0)]
|
||||
[DataRow(126)]
|
||||
[ExpectedException(typeof(ArgumentOutOfRangeException))]
|
||||
public void ShouldThrowOutOfRangeForCountOnSerializeReadInputRegisters(int count)
|
||||
{
|
||||
// Arrange
|
||||
var protocol = new TcpProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeReadInputRegisters(UNIT_ID, 19, (ushort)count);
|
||||
|
||||
// Assert - ArgumentOutOfRangeException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentOutOfRangeException>(() => protocol.SerializeReadInputRegisters(UNIT_ID, 19, (ushort)count));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentOutOfRangeException))]
|
||||
public void ShouldThrowOutOfRangeForStartingAddressOnSerializeReadInputRegisters()
|
||||
{
|
||||
// Arrange
|
||||
var protocol = new TcpProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeReadInputRegisters(UNIT_ID, ushort.MaxValue, 2);
|
||||
|
||||
// Assert - ArgumentOutOfRangeException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentOutOfRangeException>(() => protocol.SerializeReadInputRegisters(UNIT_ID, ushort.MaxValue, 2));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
@@ -421,16 +388,13 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ModbusException))]
|
||||
public void ShouldThrowExceptionOnDeserializeReadInputRegisters()
|
||||
{
|
||||
// Arrange
|
||||
var protocol = new TcpProtocol();
|
||||
|
||||
// Act
|
||||
protocol.DeserializeReadInputRegisters([0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x2A, 0x04, 0x04, 0x02, 0x2B]);
|
||||
|
||||
// Assert - ModbusException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ModbusException>(() => protocol.DeserializeReadInputRegisters([0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x2A, 0x04, 0x04, 0x02, 0x2B]));
|
||||
}
|
||||
|
||||
#endregion Read Input Registers
|
||||
@@ -483,16 +447,13 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentOutOfRangeException))]
|
||||
public void ShouldThrowOutOfRangeExceptionOnSerializeReadDeviceIdentification()
|
||||
{
|
||||
// Arrange
|
||||
var protocol = new TcpProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeReadDeviceIdentification(UNIT_ID, (ModbusDeviceIdentificationCategory)10, ModbusDeviceIdentificationObject.ProductCode);
|
||||
|
||||
// Assert - ArgumentOutOfRangeException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentOutOfRangeException>(() => protocol.SerializeReadDeviceIdentification(UNIT_ID, (ModbusDeviceIdentificationCategory)10, ModbusDeviceIdentificationObject.ProductCode));
|
||||
}
|
||||
|
||||
[DataTestMethod]
|
||||
@@ -519,27 +480,25 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ModbusException))]
|
||||
public void ShouldThrowExceptionOnDeserializeReadDeviceIdentificationForMeiType()
|
||||
{
|
||||
// Arrange
|
||||
byte[] response = [0x00, 0x01, 0x00, 0x00, 0x00, 0x0D, 0x2A, 0x2B, 0x0D];
|
||||
var protocol = new TcpProtocol();
|
||||
|
||||
// Act
|
||||
protocol.DeserializeReadDeviceIdentification(response);
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ModbusException>(() => protocol.DeserializeReadDeviceIdentification(response));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ModbusException))]
|
||||
public void ShouldThrowExceptionOnDeserializeReadDeviceIdentificationForCategory()
|
||||
{
|
||||
// Arrange
|
||||
byte[] response = [0x00, 0x01, 0x00, 0x00, 0x00, 0x0D, 0x2A, 0x2B, 0x0E, 0x08];
|
||||
var protocol = new TcpProtocol();
|
||||
|
||||
// Act
|
||||
protocol.DeserializeReadDeviceIdentification(response);
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ModbusException>(() => protocol.DeserializeReadDeviceIdentification(response));
|
||||
}
|
||||
|
||||
#endregion Read Device Identification
|
||||
@@ -588,16 +547,13 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentNullException))]
|
||||
public void ShouldThrowArgumentNullOnSerializeWriteSingleCoil()
|
||||
{
|
||||
// Arrange
|
||||
var protocol = new TcpProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeWriteSingleCoil(UNIT_ID, null);
|
||||
|
||||
// Assert - ArgumentNullException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentNullException>(() => protocol.SerializeWriteSingleCoil(UNIT_ID, null));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
@@ -662,16 +618,13 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentNullException))]
|
||||
public void ShouldThrowArgumentNullOnSerializeWriteSingleHoldingRegister()
|
||||
{
|
||||
// Arrange
|
||||
var protocol = new TcpProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeWriteSingleHoldingRegister(UNIT_ID, null);
|
||||
|
||||
// Assert - ArgumentNullException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentNullException>(() => protocol.SerializeWriteSingleHoldingRegister(UNIT_ID, null));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
@@ -749,22 +702,18 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentNullException))]
|
||||
public void ShouldThrowArgumentNullOnSerializeWriteMultipleCoils()
|
||||
{
|
||||
// Arrange
|
||||
var protocol = new TcpProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeWriteMultipleCoils(UNIT_ID, null);
|
||||
|
||||
// Assert - ArgumentNullException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentNullException>(() => protocol.SerializeWriteMultipleCoils(UNIT_ID, null));
|
||||
}
|
||||
|
||||
[DataTestMethod]
|
||||
[DataRow(0)]
|
||||
[DataRow(1969)]
|
||||
[ExpectedException(typeof(ArgumentOutOfRangeException))]
|
||||
public void ShouldThrowOutOfRangeForCountOnSerializeWriteMultipleCoils(int count)
|
||||
{
|
||||
// Arrange
|
||||
@@ -774,14 +723,11 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
|
||||
var protocol = new TcpProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeWriteMultipleCoils(UNIT_ID, coils);
|
||||
|
||||
// Assert - ArgumentOutOfRangeException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentOutOfRangeException>(() => protocol.SerializeWriteMultipleCoils(UNIT_ID, coils));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentException))]
|
||||
public void ShouldThrowArgumentExceptionForDuplicateEntryOnSerializeMultipleCoils()
|
||||
{
|
||||
// Arrange
|
||||
@@ -792,14 +738,11 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
};
|
||||
var protocol = new TcpProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeWriteMultipleCoils(UNIT_ID, coils);
|
||||
|
||||
// Assert - ArgumentException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentException>(() => protocol.SerializeWriteMultipleCoils(UNIT_ID, coils));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentException))]
|
||||
public void ShouldThrowArgumentExceptionForGapInAddressOnSerializeMultipleCoils()
|
||||
{
|
||||
// Arrange
|
||||
@@ -810,10 +753,8 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
};
|
||||
var protocol = new TcpProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeWriteMultipleCoils(UNIT_ID, coils);
|
||||
|
||||
// Assert - ArgumentException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentException>(() => protocol.SerializeWriteMultipleCoils(UNIT_ID, coils));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
@@ -890,22 +831,18 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentNullException))]
|
||||
public void ShouldThrowArgumentNullOnSerializeWriteMultipleHoldingRegisters()
|
||||
{
|
||||
// Arrange
|
||||
var protocol = new TcpProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeWriteMultipleHoldingRegisters(UNIT_ID, null);
|
||||
|
||||
// Assert - ArgumentNullException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentNullException>(() => protocol.SerializeWriteMultipleHoldingRegisters(UNIT_ID, null));
|
||||
}
|
||||
|
||||
[DataTestMethod]
|
||||
[DataRow(0)]
|
||||
[DataRow(124)]
|
||||
[ExpectedException(typeof(ArgumentOutOfRangeException))]
|
||||
public void ShouldThrowOutOfRangeForCountOnSerializeWriteMultipleHoldingRegisters(int count)
|
||||
{
|
||||
// Arrange
|
||||
@@ -915,14 +852,11 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
|
||||
var protocol = new TcpProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeWriteMultipleHoldingRegisters(UNIT_ID, registers);
|
||||
|
||||
// Assert - ArgumentOutOfRangeException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentOutOfRangeException>(() => protocol.SerializeWriteMultipleHoldingRegisters(UNIT_ID, registers));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentException))]
|
||||
public void ShouldThrowArgumentExceptionForDuplicateEntryOnSerializeMultipleHoldingRegisters()
|
||||
{
|
||||
// Arrange
|
||||
@@ -933,14 +867,11 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
};
|
||||
var protocol = new TcpProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeWriteMultipleHoldingRegisters(UNIT_ID, registers);
|
||||
|
||||
// Assert - ArgumentException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentException>(() => protocol.SerializeWriteMultipleHoldingRegisters(UNIT_ID, registers));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ArgumentException))]
|
||||
public void ShouldThrowArgumentExceptionForGapInAddressOnSerializeMultipleHoldingRegisters()
|
||||
{
|
||||
// Arrange
|
||||
@@ -951,10 +882,8 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
};
|
||||
var protocol = new TcpProtocol();
|
||||
|
||||
// Act
|
||||
protocol.SerializeWriteMultipleHoldingRegisters(UNIT_ID, registers);
|
||||
|
||||
// Assert - ArgumentException
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ArgumentException>(() => protocol.SerializeWriteMultipleHoldingRegisters(UNIT_ID, registers));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
@@ -1045,7 +974,6 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
[DataTestMethod]
|
||||
[DataRow(0x00, 0x00)]
|
||||
[DataRow(0x01, 0x01)]
|
||||
[ExpectedException(typeof(ModbusException))]
|
||||
public void ShouldThrowForTransactionIdOnValidateResponse(int hi, int lo)
|
||||
{
|
||||
// Arrange
|
||||
@@ -1053,14 +981,13 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
byte[] response = [0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x2A, 0x01, 0x01, 0x00];
|
||||
var protocol = new TcpProtocol();
|
||||
|
||||
// Act
|
||||
protocol.ValidateResponse(request, response);
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ModbusException>(() => protocol.ValidateResponse(request, response));
|
||||
}
|
||||
|
||||
[DataTestMethod]
|
||||
[DataRow(0x00, 0x01)]
|
||||
[DataRow(0x01, 0x00)]
|
||||
[ExpectedException(typeof(ModbusException))]
|
||||
public void ShouldThrowForProtocolIdOnValidateResponse(int hi, int lo)
|
||||
{
|
||||
// Arrange
|
||||
@@ -1068,12 +995,11 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
byte[] response = [0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x2A, 0x01, 0x01, 0x00];
|
||||
var protocol = new TcpProtocol();
|
||||
|
||||
// Act
|
||||
protocol.ValidateResponse(request, response);
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ModbusException>(() => protocol.ValidateResponse(request, response));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ModbusException))]
|
||||
public void ShouldThrowForFollowingBytesOnValidateResponse()
|
||||
{
|
||||
// Arrange
|
||||
@@ -1081,12 +1007,11 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
byte[] response = [0x00, 0x01, 0x00, 0x00, 0x00, 0x05, 0x2A, 0x01, 0x01, 0x00];
|
||||
var protocol = new TcpProtocol();
|
||||
|
||||
// Act
|
||||
protocol.ValidateResponse(request, response);
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ModbusException>(() => protocol.ValidateResponse(request, response));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ModbusException))]
|
||||
public void ShouldThrowForUnitIdOnValidateResponse()
|
||||
{
|
||||
// Arrange
|
||||
@@ -1094,12 +1019,11 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
byte[] response = [0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x2B, 0x01, 0x01, 0x00];
|
||||
var protocol = new TcpProtocol();
|
||||
|
||||
// Act
|
||||
protocol.ValidateResponse(request, response);
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ModbusException>(() => protocol.ValidateResponse(request, response));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ModbusException))]
|
||||
public void ShouldThrowForFunctionCodeOnValidateResponse()
|
||||
{
|
||||
// Arrange
|
||||
@@ -1107,12 +1031,11 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
byte[] response = [0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x2A, 0x02, 0x01, 0x00];
|
||||
var protocol = new TcpProtocol();
|
||||
|
||||
// Act
|
||||
protocol.ValidateResponse(request, response);
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ModbusException>(() => protocol.ValidateResponse(request, response));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(ModbusException))]
|
||||
public void ShouldThrowForModbusErrorOnValidateResponse()
|
||||
{
|
||||
// Arrange
|
||||
@@ -1120,8 +1043,8 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
|
||||
byte[] response = [0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x2A, 0x81, 0x01];
|
||||
var protocol = new TcpProtocol();
|
||||
|
||||
// Act
|
||||
protocol.ValidateResponse(request, response);
|
||||
// Act + Assert
|
||||
Assert.ThrowsException<ModbusException>(() => protocol.ValidateResponse(request, response));
|
||||
}
|
||||
|
||||
#endregion Validation
|
||||
|
||||
Reference in New Issue
Block a user