WeighingTests: Move all scale handlers into ScaleHandlers.cs
This commit is contained in:
@ -1,7 +1,6 @@
|
|||||||
using System.Net.Sockets;
|
using System.Net.Sockets;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.IO;
|
|
||||||
|
|
||||||
namespace Tests.WeighingTests {
|
namespace Tests.WeighingTests {
|
||||||
public abstract class MockScale : IDisposable {
|
public abstract class MockScale : IDisposable {
|
||||||
|
104
Tests/WeighingTests/ScaleHandlers.cs
Normal file
104
Tests/WeighingTests/ScaleHandlers.cs
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
namespace Tests.WeighingTests {
|
||||||
|
public static class ScaleHandlers {
|
||||||
|
|
||||||
|
public static (string, bool) Handle_IT3000A(string req, int weight, string? error, int identNr) {
|
||||||
|
var modes = error?.Split(';') ?? [];
|
||||||
|
var overloaded = modes.Contains("overloaded");
|
||||||
|
var moving = modes.Contains("moving");
|
||||||
|
var invalid = modes.Contains("invalid");
|
||||||
|
var crc = modes.Contains("crc");
|
||||||
|
var unit = modes.Contains("unit");
|
||||||
|
|
||||||
|
Thread.Sleep(100);
|
||||||
|
|
||||||
|
if (invalid) {
|
||||||
|
return ("abcd\r\n", false);
|
||||||
|
} else if (!req.StartsWith('<') || !req.EndsWith('>')) {
|
||||||
|
return ("<31>\r\n", false);
|
||||||
|
}
|
||||||
|
req = req[1..^1];
|
||||||
|
|
||||||
|
bool incr;
|
||||||
|
if (req.Length > 3) {
|
||||||
|
return ("<32>\r\n", false);
|
||||||
|
} else if (req.StartsWith("RN")) {
|
||||||
|
incr = true;
|
||||||
|
} else if (req.StartsWith("RM")) {
|
||||||
|
incr = false;
|
||||||
|
} else {
|
||||||
|
return ("<32>\r\n", false);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (overloaded) {
|
||||||
|
return ("<12>\r\n", false);
|
||||||
|
} else if (weight == 0) {
|
||||||
|
incr = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (moving && incr)
|
||||||
|
return ("<13>\r\n", false);
|
||||||
|
|
||||||
|
string data = $"00{(moving ? 1 : 0)}0{new DateTime(2020, 10, 15, 12, 34, 0):dd.MM.yyHH:mm}{(incr ? identNr : 0),4}1" +
|
||||||
|
$"{weight,8}{0,8}{weight,8}{(unit ? "lb" : "kg")} {"1",3}";
|
||||||
|
ushort checksum = Elwig.Helpers.Utils.CalcCrc16Modbus(data);
|
||||||
|
if (crc) checksum += 10;
|
||||||
|
return ($"<{data}{checksum,8}>\r\n", incr);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static (string, bool) Handle_L246(string req, int weight, string? error, int identNr) {
|
||||||
|
var modes = error?.Split(';') ?? [];
|
||||||
|
var overloaded = modes.Contains("overloaded");
|
||||||
|
var moving = modes.Contains("moving");
|
||||||
|
var invalid = modes.Contains("invalid");
|
||||||
|
var crc = modes.Contains("crc");
|
||||||
|
var unit = modes.Contains("unit");
|
||||||
|
|
||||||
|
Thread.Sleep(100);
|
||||||
|
|
||||||
|
if (invalid) {
|
||||||
|
return ("abcd\r\n", false);
|
||||||
|
} else if (!req.StartsWith('<') || !req.EndsWith('>')) {
|
||||||
|
return ("<31>\r\n", false);
|
||||||
|
}
|
||||||
|
req = req[1..^1];
|
||||||
|
|
||||||
|
bool incr;
|
||||||
|
if (req.Length > 3) {
|
||||||
|
return ("<32>\r\n", false);
|
||||||
|
} else if (req.StartsWith("RN")) {
|
||||||
|
incr = true;
|
||||||
|
} else if (req.StartsWith("RM")) {
|
||||||
|
incr = false;
|
||||||
|
} else {
|
||||||
|
return ("<32>\r\n", false);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (overloaded)
|
||||||
|
return ("<12>\r\n", false);
|
||||||
|
|
||||||
|
if (moving && incr)
|
||||||
|
return ("<13>\r\n", false);
|
||||||
|
|
||||||
|
string data = $"00{(moving ? 1 : 0)}0{new DateTime(2020, 10, 17, 14, 23, 0):dd.MM.yyHH:mm}{(incr ? identNr : 0),4}1" +
|
||||||
|
$"{weight,8}{0,8}{weight,8}{(unit ? "lb" : "kg")} {"001",3}";
|
||||||
|
ushort checksum = Elwig.Helpers.Utils.CalcCrc16Modbus(data);
|
||||||
|
if (crc) checksum += 10;
|
||||||
|
return ($"<{data}{checksum,8}>\r\n", incr);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static (string, bool) Handle_L320(int weight, string? error, int identNr) {
|
||||||
|
var modes = error?.Split(';') ?? [];
|
||||||
|
var invalid = modes.Contains("invalid");
|
||||||
|
var unit = modes.Contains("unit");
|
||||||
|
|
||||||
|
Thread.Sleep(100);
|
||||||
|
|
||||||
|
if (invalid) {
|
||||||
|
return ("abcd\r\n", false);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool incr = true;
|
||||||
|
return ($" {new DateTime(2020, 9, 28, 9, 8, 0):dd.MM.yy HH:mm} {identNr,4} {weight,9}{(unit ? "lb" : "kg")} \r\n", incr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -4,49 +4,36 @@ namespace Tests.WeighingTests {
|
|||||||
[TestFixture]
|
[TestFixture]
|
||||||
public class ScaleTestBadenL320 {
|
public class ScaleTestBadenL320 {
|
||||||
|
|
||||||
private EventMockScale? Mock;
|
private EventMockScale Mock;
|
||||||
private AveryEventScale? Scale;
|
private AveryEventScale Scale;
|
||||||
|
|
||||||
private static (string, bool) ScaleHandler(int weight, string? error, int identNr) {
|
|
||||||
var modes = error?.Split(';') ?? [];
|
|
||||||
var invalid = modes.Contains("invalid");
|
|
||||||
var unit = modes.Contains("unit");
|
|
||||||
|
|
||||||
if (invalid) {
|
|
||||||
return ("abcd\r\n", false);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool incr = true;
|
|
||||||
return ($" {new DateTime(2020, 9, 28, 9, 8, 0):dd.MM.yy HH:mm} {identNr,4} {weight,9}{(unit ? "lb" : "kg")} \r\n", incr);
|
|
||||||
}
|
|
||||||
|
|
||||||
[OneTimeSetUp]
|
[OneTimeSetUp]
|
||||||
public void SetupScale() {
|
public void SetupScale() {
|
||||||
Mock = new EventMockScale(12345, ScaleHandler);
|
Mock = new EventMockScale(12345, ScaleHandlers.Handle_L320);
|
||||||
Scale = new("1", "L320", "tcp://127.0.0.1:12345");
|
Scale = new("1", "L320", "tcp://127.0.0.1:12345");
|
||||||
}
|
}
|
||||||
|
|
||||||
[OneTimeTearDown]
|
[OneTimeTearDown]
|
||||||
public void TeardownScale() {
|
public void TeardownScale() {
|
||||||
Mock?.Dispose();
|
Mock.Dispose();
|
||||||
Scale?.Dispose();
|
Scale.Dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
[SetUp]
|
[SetUp]
|
||||||
public void ResetScale() {
|
public void ResetScale() {
|
||||||
Mock!.IdentNr = 0;
|
Mock.IdentNr = 0;
|
||||||
Mock!.Weight = 0;
|
Mock.Weight = 0;
|
||||||
Mock!.Error = null;
|
Mock.Error = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public async Task Test_01_Normal() {
|
public async Task Test_01_Normal() {
|
||||||
WeighingResult? res = null;
|
WeighingResult? res = null;
|
||||||
Scale!.WeighingEvent += (sender, evt) => {
|
Scale.WeighingEvent += (sender, evt) => {
|
||||||
res = evt.Result;
|
res = evt.Result;
|
||||||
};
|
};
|
||||||
|
|
||||||
await Mock!.Weigh(2345);
|
await Mock.Weigh(2345);
|
||||||
await Task.Delay(100);
|
await Task.Delay(100);
|
||||||
Assert.That(res, Is.Not.Null);
|
Assert.That(res, Is.Not.Null);
|
||||||
Assert.That(res, Is.EqualTo(new WeighingResult {
|
Assert.That(res, Is.EqualTo(new WeighingResult {
|
||||||
@ -55,7 +42,7 @@ namespace Tests.WeighingTests {
|
|||||||
Date = new DateOnly(2020, 9, 28), Time = new TimeOnly(9, 8),
|
Date = new DateOnly(2020, 9, 28), Time = new TimeOnly(9, 8),
|
||||||
}));
|
}));
|
||||||
|
|
||||||
await Mock!.Weigh(4215);
|
await Mock.Weigh(4215);
|
||||||
await Task.Delay(100);
|
await Task.Delay(100);
|
||||||
Assert.That(res, Is.Not.Null);
|
Assert.That(res, Is.Not.Null);
|
||||||
Assert.That(res, Is.EqualTo(new WeighingResult {
|
Assert.That(res, Is.EqualTo(new WeighingResult {
|
||||||
|
@ -4,78 +4,39 @@ namespace Tests.WeighingTests {
|
|||||||
[TestFixture]
|
[TestFixture]
|
||||||
class ScaleTestGrInzersdorfL246 {
|
class ScaleTestGrInzersdorfL246 {
|
||||||
|
|
||||||
private MockScale? Mock;
|
private MockScale Mock;
|
||||||
private SysTecITScale? Scale;
|
private SysTecITScale Scale;
|
||||||
|
|
||||||
private static (string, bool) ScaleHandler(string req, int weight, string? error, int identNr) {
|
|
||||||
var modes = error?.Split(';') ?? [];
|
|
||||||
var overloaded = modes.Contains("overloaded");
|
|
||||||
var moving = modes.Contains("moving");
|
|
||||||
var invalid = modes.Contains("invalid");
|
|
||||||
var crc = modes.Contains("crc");
|
|
||||||
var unit = modes.Contains("unit");
|
|
||||||
|
|
||||||
if (invalid) {
|
|
||||||
return ("abcd\r\n", false);
|
|
||||||
} else if (!req.StartsWith('<') || !req.EndsWith('>')) {
|
|
||||||
return ("<31>\r\n", false);
|
|
||||||
}
|
|
||||||
req = req[1..^1];
|
|
||||||
|
|
||||||
bool incr;
|
|
||||||
if (req.Length > 3) {
|
|
||||||
return ("<32>\r\n", false);
|
|
||||||
} else if (req.StartsWith("RN")) {
|
|
||||||
incr = true;
|
|
||||||
} else if (req.StartsWith("RM")) {
|
|
||||||
incr = false;
|
|
||||||
} else {
|
|
||||||
return ("<32>\r\n", false);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (overloaded)
|
|
||||||
return ("<12>\r\n", false);
|
|
||||||
|
|
||||||
if (moving && incr)
|
|
||||||
return ("<13>\r\n", false);
|
|
||||||
|
|
||||||
string data = $"00{(moving ? 1 : 0)}0{new DateTime(2020, 10, 17, 14, 23, 0):dd.MM.yyHH:mm}{(incr ? identNr : 0),4}1" +
|
|
||||||
$"{weight,8}{0,8}{weight,8}{(unit ? "lb" : "kg")} {"001",3}";
|
|
||||||
ushort checksum = Elwig.Helpers.Utils.CalcCrc16Modbus(data);
|
|
||||||
if (crc) checksum += 10;
|
|
||||||
return ($"<{data}{checksum,8}>\r\n", incr);
|
|
||||||
}
|
|
||||||
|
|
||||||
[OneTimeSetUp]
|
[OneTimeSetUp]
|
||||||
public void SetupScale() {
|
public void SetupScale() {
|
||||||
Mock = new CommandMockScale(12345, ScaleHandler);
|
Mock = new CommandMockScale(12345, ScaleHandlers.Handle_L246);
|
||||||
Scale = new("1", "L246", "tcp://127.0.0.1:12345");
|
Scale = new("1", "L246", "tcp://127.0.0.1:12345");
|
||||||
}
|
}
|
||||||
|
|
||||||
[OneTimeTearDown]
|
[OneTimeTearDown]
|
||||||
public void TeardownScale() {
|
public void TeardownScale() {
|
||||||
Mock?.Dispose();
|
Mock.Dispose();
|
||||||
Scale?.Dispose();
|
Scale.Dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
[SetUp]
|
[SetUp]
|
||||||
public void ResetScale() {
|
public void ResetScale() {
|
||||||
Mock!.IdentNr = 0;
|
Mock.IdentNr = 0;
|
||||||
Mock!.Weight = 0;
|
Mock.Weight = 0;
|
||||||
Mock!.Error = null;
|
Mock.Error = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public async Task Test_01_CurrentWeight() {
|
public async Task Test_01_CurrentWeight() {
|
||||||
Mock!.Weight = 1235;
|
Mock.Weight = 1235;
|
||||||
Assert.That(await Scale!.GetCurrentWeight(), Is.EqualTo(new WeighingResult {
|
Assert.That(await Scale!.GetCurrentWeight(), Is.EqualTo(new WeighingResult {
|
||||||
Weight = 1235, Date = new DateOnly(2020, 10, 17), Time = new TimeOnly(14, 23),
|
Weight = 1235, Date = new DateOnly(2020, 10, 17), Time = new TimeOnly(14, 23),
|
||||||
}));
|
}));
|
||||||
Mock!.Weight = 1240;
|
Mock.Weight = 1240;
|
||||||
Assert.That(await Scale!.GetCurrentWeight(), Is.EqualTo(new WeighingResult {
|
Assert.That(await Scale!.GetCurrentWeight(), Is.EqualTo(new WeighingResult {
|
||||||
Weight = 1240, Date = new DateOnly(2020, 10, 17), Time = new TimeOnly(14, 23),
|
Weight = 1240, Date = new DateOnly(2020, 10, 17), Time = new TimeOnly(14, 23),
|
||||||
}));
|
}));
|
||||||
Mock!.Weight = 1245;
|
Mock.Weight = 1245;
|
||||||
Assert.That(await Scale!.GetCurrentWeight(), Is.EqualTo(new WeighingResult {
|
Assert.That(await Scale!.GetCurrentWeight(), Is.EqualTo(new WeighingResult {
|
||||||
Weight = 1245, Date = new DateOnly(2020, 10, 17), Time = new TimeOnly(14, 23),
|
Weight = 1245, Date = new DateOnly(2020, 10, 17), Time = new TimeOnly(14, 23),
|
||||||
}));
|
}));
|
||||||
@ -83,19 +44,19 @@ namespace Tests.WeighingTests {
|
|||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public async Task Test_02_Normal() {
|
public async Task Test_02_Normal() {
|
||||||
Mock!.Weight = 1235;
|
Mock.Weight = 1235;
|
||||||
Assert.That(await Scale!.Weigh(), Is.EqualTo(new WeighingResult {
|
Assert.That(await Scale!.Weigh(), Is.EqualTo(new WeighingResult {
|
||||||
Weight = 1235, WeighingId = "1",
|
Weight = 1235, WeighingId = "1",
|
||||||
FullWeighingId = $"2020-10-17/1",
|
FullWeighingId = $"2020-10-17/1",
|
||||||
Date = new DateOnly(2020, 10, 17), Time = new TimeOnly(14, 23),
|
Date = new DateOnly(2020, 10, 17), Time = new TimeOnly(14, 23),
|
||||||
}));
|
}));
|
||||||
Mock!.Weight = 3335;
|
Mock.Weight = 3335;
|
||||||
Assert.That(await Scale!.Weigh(), Is.EqualTo(new WeighingResult {
|
Assert.That(await Scale!.Weigh(), Is.EqualTo(new WeighingResult {
|
||||||
Weight = 3335, WeighingId = "2",
|
Weight = 3335, WeighingId = "2",
|
||||||
FullWeighingId = $"2020-10-17/2",
|
FullWeighingId = $"2020-10-17/2",
|
||||||
Date = new DateOnly(2020, 10, 17), Time = new TimeOnly(14, 23),
|
Date = new DateOnly(2020, 10, 17), Time = new TimeOnly(14, 23),
|
||||||
}));
|
}));
|
||||||
Mock!.Weight = 6420;
|
Mock.Weight = 6420;
|
||||||
Assert.That(await Scale!.Weigh(), Is.EqualTo(new WeighingResult {
|
Assert.That(await Scale!.Weigh(), Is.EqualTo(new WeighingResult {
|
||||||
Weight = 6420, WeighingId = "3",
|
Weight = 6420, WeighingId = "3",
|
||||||
FullWeighingId = $"2020-10-17/3",
|
FullWeighingId = $"2020-10-17/3",
|
||||||
@ -105,39 +66,39 @@ namespace Tests.WeighingTests {
|
|||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void Test_03_Moving() {
|
public void Test_03_Moving() {
|
||||||
Mock!.Weight = 1_000;
|
Mock.Weight = 1_000;
|
||||||
Mock!.Error = "moving";
|
Mock.Error = "moving";
|
||||||
IOException ex = Assert.ThrowsAsync<IOException>(async () => await Scale!.Weigh());
|
IOException ex = Assert.ThrowsAsync<IOException>(async () => await Scale!.Weigh());
|
||||||
Assert.That(ex.Message, Contains.Substring("Waage in Bewegung"));
|
Assert.That(ex.Message, Contains.Substring("Waage in Bewegung"));
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void Test_04_Overloaded() {
|
public void Test_04_Overloaded() {
|
||||||
Mock!.Weight = 10_000;
|
Mock.Weight = 10_000;
|
||||||
Mock!.Error = "overloaded";
|
Mock.Error = "overloaded";
|
||||||
IOException ex = Assert.ThrowsAsync<IOException>(async () => await Scale!.Weigh());
|
IOException ex = Assert.ThrowsAsync<IOException>(async () => await Scale!.Weigh());
|
||||||
Assert.That(ex.Message, Contains.Substring("Waage in Überlast"));
|
Assert.That(ex.Message, Contains.Substring("Waage in Überlast"));
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void Test_05_InvalidResponse() {
|
public void Test_05_InvalidResponse() {
|
||||||
Mock!.Weight = 1_000;
|
Mock.Weight = 1_000;
|
||||||
Mock!.Error = "invalid";
|
Mock.Error = "invalid";
|
||||||
Assert.ThrowsAsync<IOException>(async () => await Scale!.Weigh());
|
Assert.ThrowsAsync<IOException>(async () => await Scale!.Weigh());
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void Test_06_InvalidCrc() {
|
public void Test_06_InvalidCrc() {
|
||||||
Mock!.Weight = 1_000;
|
Mock.Weight = 1_000;
|
||||||
Mock!.Error = "crc";
|
Mock.Error = "crc";
|
||||||
IOException ex = Assert.ThrowsAsync<IOException>(async () => await Scale!.Weigh());
|
IOException ex = Assert.ThrowsAsync<IOException>(async () => await Scale!.Weigh());
|
||||||
Assert.That(ex.Message, Contains.Substring("Invalid CRC16 checksum"));
|
Assert.That(ex.Message, Contains.Substring("Invalid CRC16 checksum"));
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void Test_07_InvalidUnit() {
|
public void Test_07_InvalidUnit() {
|
||||||
Mock!.Weight = 1_000;
|
Mock.Weight = 1_000;
|
||||||
Mock!.Error = "unit";
|
Mock.Error = "unit";
|
||||||
IOException ex = Assert.ThrowsAsync<IOException>(async () => await Scale!.Weigh());
|
IOException ex = Assert.ThrowsAsync<IOException>(async () => await Scale!.Weigh());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,81 +4,39 @@ namespace Tests.WeighingTests {
|
|||||||
[TestFixture]
|
[TestFixture]
|
||||||
class ScaleTestMatzenIT3000A {
|
class ScaleTestMatzenIT3000A {
|
||||||
|
|
||||||
private MockScale? Mock;
|
private MockScale Mock;
|
||||||
private SysTecITScale? Scale;
|
private SysTecITScale Scale;
|
||||||
|
|
||||||
private static (string, bool) ScaleHandler(string req, int weight, string? error, int identNr) {
|
|
||||||
var modes = error?.Split(';') ?? [];
|
|
||||||
var overloaded = modes.Contains("overloaded");
|
|
||||||
var moving = modes.Contains("moving");
|
|
||||||
var invalid = modes.Contains("invalid");
|
|
||||||
var crc = modes.Contains("crc");
|
|
||||||
var unit = modes.Contains("unit");
|
|
||||||
|
|
||||||
if (invalid) {
|
|
||||||
return ("abcd\r\n", false);
|
|
||||||
} else if (!req.StartsWith('<') || !req.EndsWith('>')) {
|
|
||||||
return ("<31>\r\n", false);
|
|
||||||
}
|
|
||||||
req = req[1..^1];
|
|
||||||
|
|
||||||
bool incr;
|
|
||||||
if (req.Length > 3) {
|
|
||||||
return ("<32>\r\n", false);
|
|
||||||
} else if (req.StartsWith("RN")) {
|
|
||||||
incr = true;
|
|
||||||
} else if (req.StartsWith("RM")) {
|
|
||||||
incr = false;
|
|
||||||
} else {
|
|
||||||
return ("<32>\r\n", false);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (overloaded) {
|
|
||||||
return ("<12>\r\n", false);
|
|
||||||
} else if (weight == 0) {
|
|
||||||
incr = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (moving && incr)
|
|
||||||
return ("<13>\r\n", false);
|
|
||||||
|
|
||||||
string data = $"00{(moving ? 1 : 0)}0{new DateTime(2020, 10, 15, 12, 34, 0):dd.MM.yyHH:mm}{(incr ? identNr : 0),4}1" +
|
|
||||||
$"{weight,8}{0,8}{weight,8}{(unit ? "lb" : "kg")} {"1",3}";
|
|
||||||
ushort checksum = Elwig.Helpers.Utils.CalcCrc16Modbus(data);
|
|
||||||
if (crc) checksum += 10;
|
|
||||||
return ($"<{data}{checksum,8}>\r\n", incr);
|
|
||||||
}
|
|
||||||
|
|
||||||
[OneTimeSetUp]
|
[OneTimeSetUp]
|
||||||
public void SetupScale() {
|
public void SetupScale() {
|
||||||
Mock = new CommandMockScale(12345, ScaleHandler);
|
Mock = new CommandMockScale(12345, ScaleHandlers.Handle_IT3000A);
|
||||||
Scale = new("1", "IT3000A", "tcp://127.0.0.1:12345");
|
Scale = new("1", "IT3000A", "tcp://127.0.0.1:12345");
|
||||||
}
|
}
|
||||||
|
|
||||||
[OneTimeTearDown]
|
[OneTimeTearDown]
|
||||||
public void TeardownScale() {
|
public void TeardownScale() {
|
||||||
Mock?.Dispose();
|
Mock.Dispose();
|
||||||
Scale?.Dispose();
|
Scale.Dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
[SetUp]
|
[SetUp]
|
||||||
public void ResetScale() {
|
public void ResetScale() {
|
||||||
Mock!.IdentNr = 0;
|
Mock.IdentNr = 0;
|
||||||
Mock!.Weight = 0;
|
Mock.Weight = 0;
|
||||||
Mock!.Error = null;
|
Mock.Error = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public async Task Test_01_CurrentWeight() {
|
public async Task Test_01_CurrentWeight() {
|
||||||
Mock!.Weight = 1234;
|
Mock.Weight = 1234;
|
||||||
Assert.That(await Scale!.GetCurrentWeight(), Is.EqualTo(new WeighingResult {
|
Assert.That(await Scale!.GetCurrentWeight(), Is.EqualTo(new WeighingResult {
|
||||||
Weight = 1234, Date = new DateOnly(2020, 10, 15), Time = new TimeOnly(12, 34),
|
Weight = 1234, Date = new DateOnly(2020, 10, 15), Time = new TimeOnly(12, 34),
|
||||||
}));
|
}));
|
||||||
Mock!.Weight = 1235;
|
Mock.Weight = 1235;
|
||||||
Assert.That(await Scale!.GetCurrentWeight(), Is.EqualTo(new WeighingResult {
|
Assert.That(await Scale!.GetCurrentWeight(), Is.EqualTo(new WeighingResult {
|
||||||
Weight = 1235, Date = new DateOnly(2020, 10, 15), Time = new TimeOnly(12, 34),
|
Weight = 1235, Date = new DateOnly(2020, 10, 15), Time = new TimeOnly(12, 34),
|
||||||
}));
|
}));
|
||||||
Mock!.Weight = 1236;
|
Mock.Weight = 1236;
|
||||||
Assert.That(await Scale!.GetCurrentWeight(), Is.EqualTo(new WeighingResult {
|
Assert.That(await Scale!.GetCurrentWeight(), Is.EqualTo(new WeighingResult {
|
||||||
Weight = 1236, Date = new DateOnly(2020, 10, 15), Time = new TimeOnly(12, 34),
|
Weight = 1236, Date = new DateOnly(2020, 10, 15), Time = new TimeOnly(12, 34),
|
||||||
}));
|
}));
|
||||||
@ -86,19 +44,19 @@ namespace Tests.WeighingTests {
|
|||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public async Task Test_02_Normal() {
|
public async Task Test_02_Normal() {
|
||||||
Mock!.Weight = 1234;
|
Mock.Weight = 1234;
|
||||||
Assert.That(await Scale!.Weigh(), Is.EqualTo(new WeighingResult {
|
Assert.That(await Scale!.Weigh(), Is.EqualTo(new WeighingResult {
|
||||||
Weight = 1234, WeighingId = "1",
|
Weight = 1234, WeighingId = "1",
|
||||||
FullWeighingId = $"2020-10-15/1",
|
FullWeighingId = $"2020-10-15/1",
|
||||||
Date = new DateOnly(2020, 10, 15), Time = new TimeOnly(12, 34),
|
Date = new DateOnly(2020, 10, 15), Time = new TimeOnly(12, 34),
|
||||||
}));
|
}));
|
||||||
Mock!.Weight = 3333;
|
Mock.Weight = 3333;
|
||||||
Assert.That(await Scale!.Weigh(), Is.EqualTo(new WeighingResult {
|
Assert.That(await Scale!.Weigh(), Is.EqualTo(new WeighingResult {
|
||||||
Weight = 3333, WeighingId = "2",
|
Weight = 3333, WeighingId = "2",
|
||||||
FullWeighingId = $"2020-10-15/2",
|
FullWeighingId = $"2020-10-15/2",
|
||||||
Date = new DateOnly(2020, 10, 15), Time = new TimeOnly(12, 34),
|
Date = new DateOnly(2020, 10, 15), Time = new TimeOnly(12, 34),
|
||||||
}));
|
}));
|
||||||
Mock!.Weight = 4321;
|
Mock.Weight = 4321;
|
||||||
Assert.That(await Scale!.Weigh(), Is.EqualTo(new WeighingResult {
|
Assert.That(await Scale!.Weigh(), Is.EqualTo(new WeighingResult {
|
||||||
Weight = 4321, WeighingId = "3",
|
Weight = 4321, WeighingId = "3",
|
||||||
FullWeighingId = $"2020-10-15/3",
|
FullWeighingId = $"2020-10-15/3",
|
||||||
@ -108,39 +66,39 @@ namespace Tests.WeighingTests {
|
|||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void Test_03_Moving() {
|
public void Test_03_Moving() {
|
||||||
Mock!.Weight = 1_000;
|
Mock.Weight = 1_000;
|
||||||
Mock!.Error = "moving";
|
Mock.Error = "moving";
|
||||||
IOException ex = Assert.ThrowsAsync<IOException>(async () => await Scale!.Weigh());
|
IOException ex = Assert.ThrowsAsync<IOException>(async () => await Scale!.Weigh());
|
||||||
Assert.That(ex.Message, Contains.Substring("Waage in Bewegung"));
|
Assert.That(ex.Message, Contains.Substring("Waage in Bewegung"));
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void Test_04_Overloaded() {
|
public void Test_04_Overloaded() {
|
||||||
Mock!.Weight = 10_000;
|
Mock.Weight = 10_000;
|
||||||
Mock!.Error = "overloaded";
|
Mock.Error = "overloaded";
|
||||||
IOException ex = Assert.ThrowsAsync<IOException>(async () => await Scale!.Weigh());
|
IOException ex = Assert.ThrowsAsync<IOException>(async () => await Scale!.Weigh());
|
||||||
Assert.That(ex.Message, Contains.Substring("Waage in Überlast"));
|
Assert.That(ex.Message, Contains.Substring("Waage in Überlast"));
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void Test_05_InvalidResponse() {
|
public void Test_05_InvalidResponse() {
|
||||||
Mock!.Weight = 1_000;
|
Mock.Weight = 1_000;
|
||||||
Mock!.Error = "invalid";
|
Mock.Error = "invalid";
|
||||||
Assert.ThrowsAsync<IOException>(async () => await Scale!.Weigh());
|
Assert.ThrowsAsync<IOException>(async () => await Scale!.Weigh());
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void Test_06_InvalidCrc() {
|
public void Test_06_InvalidCrc() {
|
||||||
Mock!.Weight = 1_000;
|
Mock.Weight = 1_000;
|
||||||
Mock!.Error = "crc";
|
Mock.Error = "crc";
|
||||||
IOException ex = Assert.ThrowsAsync<IOException>(async () => await Scale!.Weigh());
|
IOException ex = Assert.ThrowsAsync<IOException>(async () => await Scale!.Weigh());
|
||||||
Assert.That(ex.Message, Contains.Substring("Invalid CRC16 checksum"));
|
Assert.That(ex.Message, Contains.Substring("Invalid CRC16 checksum"));
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void Test_07_InvalidUnit() {
|
public void Test_07_InvalidUnit() {
|
||||||
Mock!.Weight = 1_000;
|
Mock.Weight = 1_000;
|
||||||
Mock!.Error = "unit";
|
Mock.Error = "unit";
|
||||||
IOException ex = Assert.ThrowsAsync<IOException>(async () => await Scale!.Weigh());
|
IOException ex = Assert.ThrowsAsync<IOException>(async () => await Scale!.Weigh());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,10 +4,10 @@ namespace Tests.WeighingTests {
|
|||||||
[TestFixture]
|
[TestFixture]
|
||||||
class ScaleTestWolkersdorfIT6000E {
|
class ScaleTestWolkersdorfIT6000E {
|
||||||
|
|
||||||
private MockScale? MockA;
|
private MockScale MockA;
|
||||||
private MockScale? MockB;
|
private MockScale MockB;
|
||||||
private SysTecITScale? ScaleA;
|
private SysTecITScale ScaleA;
|
||||||
private SysTecITScale? ScaleB;
|
private SysTecITScale ScaleB;
|
||||||
|
|
||||||
private static (string, bool) ScaleHandler(string req, int weight, string? error, int identNr, string terminalNr) {
|
private static (string, bool) ScaleHandler(string req, int weight, string? error, int identNr, string terminalNr) {
|
||||||
var modes = error?.Split(';') ?? [];
|
var modes = error?.Split(';') ?? [];
|
||||||
@ -58,37 +58,37 @@ namespace Tests.WeighingTests {
|
|||||||
|
|
||||||
[OneTimeTearDown]
|
[OneTimeTearDown]
|
||||||
public void TeardownScale() {
|
public void TeardownScale() {
|
||||||
MockA?.Dispose();
|
MockA.Dispose();
|
||||||
MockB?.Dispose();
|
MockB.Dispose();
|
||||||
ScaleA?.Dispose();
|
ScaleA.Dispose();
|
||||||
ScaleB?.Dispose();
|
ScaleB.Dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
[SetUp]
|
[SetUp]
|
||||||
public void ResetScale() {
|
public void ResetScale() {
|
||||||
MockA!.IdentNr = 0;
|
MockA.IdentNr = 0;
|
||||||
MockA!.Weight = 0;
|
MockA.Weight = 0;
|
||||||
MockA!.Error = null;
|
MockA.Error = null;
|
||||||
MockB!.IdentNr = 0;
|
MockB.IdentNr = 0;
|
||||||
MockB!.Weight = 0;
|
MockB.Weight = 0;
|
||||||
MockB!.Error = null;
|
MockB.Error = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public async Task Test_01_CurrentWeight() {
|
public async Task Test_01_CurrentWeight() {
|
||||||
MockA!.Weight = 1234;
|
MockA.Weight = 1234;
|
||||||
Assert.That(await ScaleA!.GetCurrentWeight(), Is.EqualTo(new WeighingResult {
|
Assert.That(await ScaleA!.GetCurrentWeight(), Is.EqualTo(new WeighingResult {
|
||||||
Weight = 1234, Date = new DateOnly(2020, 10, 8), Time = new TimeOnly(8, 47),
|
Weight = 1234, Date = new DateOnly(2020, 10, 8), Time = new TimeOnly(8, 47),
|
||||||
}));
|
}));
|
||||||
MockB!.Weight = 3456;
|
MockB.Weight = 3456;
|
||||||
Assert.That(await ScaleB!.GetCurrentWeight(), Is.EqualTo(new WeighingResult {
|
Assert.That(await ScaleB!.GetCurrentWeight(), Is.EqualTo(new WeighingResult {
|
||||||
Weight = 3456, Date = new DateOnly(2020, 10, 8), Time = new TimeOnly(8, 47),
|
Weight = 3456, Date = new DateOnly(2020, 10, 8), Time = new TimeOnly(8, 47),
|
||||||
}));
|
}));
|
||||||
MockA!.Weight = 1236;
|
MockA.Weight = 1236;
|
||||||
Assert.That(await ScaleA!.GetCurrentWeight(), Is.EqualTo(new WeighingResult {
|
Assert.That(await ScaleA!.GetCurrentWeight(), Is.EqualTo(new WeighingResult {
|
||||||
Weight = 1236, Date = new DateOnly(2020, 10, 8), Time = new TimeOnly(8, 47),
|
Weight = 1236, Date = new DateOnly(2020, 10, 8), Time = new TimeOnly(8, 47),
|
||||||
}));
|
}));
|
||||||
MockB!.Weight = 3457;
|
MockB.Weight = 3457;
|
||||||
Assert.That(await ScaleB!.GetCurrentWeight(), Is.EqualTo(new WeighingResult {
|
Assert.That(await ScaleB!.GetCurrentWeight(), Is.EqualTo(new WeighingResult {
|
||||||
Weight = 3457, Date = new DateOnly(2020, 10, 8), Time = new TimeOnly(8, 47),
|
Weight = 3457, Date = new DateOnly(2020, 10, 8), Time = new TimeOnly(8, 47),
|
||||||
}));
|
}));
|
||||||
@ -96,25 +96,25 @@ namespace Tests.WeighingTests {
|
|||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public async Task Test_02_Normal() {
|
public async Task Test_02_Normal() {
|
||||||
MockA!.Weight = 1234;
|
MockA.Weight = 1234;
|
||||||
Assert.That(await ScaleA!.Weigh(), Is.EqualTo(new WeighingResult {
|
Assert.That(await ScaleA!.Weigh(), Is.EqualTo(new WeighingResult {
|
||||||
Weight = 1234, WeighingId = "1",
|
Weight = 1234, WeighingId = "1",
|
||||||
FullWeighingId = $"2020-10-08/1",
|
FullWeighingId = $"2020-10-08/1",
|
||||||
Date = new DateOnly(2020, 10, 8), Time = new TimeOnly(8, 47),
|
Date = new DateOnly(2020, 10, 8), Time = new TimeOnly(8, 47),
|
||||||
}));
|
}));
|
||||||
MockB!.Weight = 3456;
|
MockB.Weight = 3456;
|
||||||
Assert.That(await ScaleB!.Weigh(), Is.EqualTo(new WeighingResult {
|
Assert.That(await ScaleB!.Weigh(), Is.EqualTo(new WeighingResult {
|
||||||
Weight = 3456, WeighingId = "1",
|
Weight = 3456, WeighingId = "1",
|
||||||
FullWeighingId = $"2020-10-08/1",
|
FullWeighingId = $"2020-10-08/1",
|
||||||
Date = new DateOnly(2020, 10, 8), Time = new TimeOnly(8, 47),
|
Date = new DateOnly(2020, 10, 8), Time = new TimeOnly(8, 47),
|
||||||
}));
|
}));
|
||||||
MockA!.Weight = 4321;
|
MockA.Weight = 4321;
|
||||||
Assert.That(await ScaleA!.Weigh(), Is.EqualTo(new WeighingResult {
|
Assert.That(await ScaleA!.Weigh(), Is.EqualTo(new WeighingResult {
|
||||||
Weight = 4321, WeighingId = "2",
|
Weight = 4321, WeighingId = "2",
|
||||||
FullWeighingId = $"2020-10-08/2",
|
FullWeighingId = $"2020-10-08/2",
|
||||||
Date = new DateOnly(2020, 10, 8), Time = new TimeOnly(8, 47),
|
Date = new DateOnly(2020, 10, 8), Time = new TimeOnly(8, 47),
|
||||||
}));
|
}));
|
||||||
MockB!.Weight = 3333;
|
MockB.Weight = 3333;
|
||||||
Assert.That(await ScaleB!.Weigh(), Is.EqualTo(new WeighingResult {
|
Assert.That(await ScaleB!.Weigh(), Is.EqualTo(new WeighingResult {
|
||||||
Weight = 3333, WeighingId = "2",
|
Weight = 3333, WeighingId = "2",
|
||||||
FullWeighingId = $"2020-10-08/2",
|
FullWeighingId = $"2020-10-08/2",
|
||||||
@ -124,39 +124,39 @@ namespace Tests.WeighingTests {
|
|||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void Test_03_Moving() {
|
public void Test_03_Moving() {
|
||||||
MockA!.Weight = 1_000;
|
MockA.Weight = 1_000;
|
||||||
MockA!.Error = "moving";
|
MockA.Error = "moving";
|
||||||
IOException ex = Assert.ThrowsAsync<IOException>(async () => await ScaleA!.Weigh());
|
IOException ex = Assert.ThrowsAsync<IOException>(async () => await ScaleA!.Weigh());
|
||||||
Assert.That(ex.Message, Contains.Substring("Waage in Bewegung"));
|
Assert.That(ex.Message, Contains.Substring("Waage in Bewegung"));
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void Test_04_Overloaded() {
|
public void Test_04_Overloaded() {
|
||||||
MockA!.Weight = 10_000;
|
MockA.Weight = 10_000;
|
||||||
MockA!.Error = "overloaded";
|
MockA.Error = "overloaded";
|
||||||
IOException ex = Assert.ThrowsAsync<IOException>(async () => await ScaleA!.Weigh());
|
IOException ex = Assert.ThrowsAsync<IOException>(async () => await ScaleA!.Weigh());
|
||||||
Assert.That(ex.Message, Contains.Substring("Waage in Überlast"));
|
Assert.That(ex.Message, Contains.Substring("Waage in Überlast"));
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void Test_05_InvalidResponse() {
|
public void Test_05_InvalidResponse() {
|
||||||
MockA!.Weight = 1_000;
|
MockA.Weight = 1_000;
|
||||||
MockA!.Error = "invalid";
|
MockA.Error = "invalid";
|
||||||
Assert.ThrowsAsync<IOException>(async () => await ScaleA!.Weigh());
|
Assert.ThrowsAsync<IOException>(async () => await ScaleA!.Weigh());
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void Test_06_InvalidCrc() {
|
public void Test_06_InvalidCrc() {
|
||||||
MockA!.Weight = 1_000;
|
MockA.Weight = 1_000;
|
||||||
MockA!.Error = "crc";
|
MockA.Error = "crc";
|
||||||
IOException ex = Assert.ThrowsAsync<IOException>(async () => await ScaleA!.Weigh());
|
IOException ex = Assert.ThrowsAsync<IOException>(async () => await ScaleA!.Weigh());
|
||||||
Assert.That(ex.Message, Contains.Substring("Invalid CRC16 checksum"));
|
Assert.That(ex.Message, Contains.Substring("Invalid CRC16 checksum"));
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void Test_07_InvalidUnit() {
|
public void Test_07_InvalidUnit() {
|
||||||
MockA!.Weight = 1_000;
|
MockA.Weight = 1_000;
|
||||||
MockA!.Error = "unit";
|
MockA.Error = "unit";
|
||||||
IOException ex = Assert.ThrowsAsync<IOException>(async () => await ScaleA!.Weigh());
|
IOException ex = Assert.ThrowsAsync<IOException>(async () => await ScaleA!.Weigh());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user