129 lines
5.2 KiB
C#
129 lines
5.2 KiB
C#
using Elwig.Helpers.Weighing;
|
|
|
|
namespace Tests.WeighingTests {
|
|
[TestFixture]
|
|
class ScaleTestWolkersdorfIT6000E {
|
|
|
|
private MockScale MockA;
|
|
private MockScale MockB;
|
|
private SysTecITScale ScaleA;
|
|
private SysTecITScale ScaleB;
|
|
|
|
[OneTimeSetUp]
|
|
public void SetupScale() {
|
|
MockA = new CommandMockScale(12345, (req, weight, tare, error, identNr) => ScaleHandlers.Handle_IT6000E(req, weight, tare, error, identNr, "A"));
|
|
MockB = new CommandMockScale(12346, (req, weight, tare, error, identNr) => ScaleHandlers.Handle_IT6000E(req, weight, tare, error, identNr, "B"));
|
|
ScaleA = new("A", "IT3000E", "tcp://127.0.0.1:12345");
|
|
ScaleB = new("B", "IT3000E", "tcp://127.0.0.1:12346");
|
|
}
|
|
|
|
[OneTimeTearDown]
|
|
public void TeardownScale() {
|
|
MockA.Dispose();
|
|
MockB.Dispose();
|
|
ScaleA.Dispose();
|
|
ScaleB.Dispose();
|
|
}
|
|
|
|
[SetUp]
|
|
public void ResetScale() {
|
|
MockA.IdentNr = 0;
|
|
MockA.Weight = 0;
|
|
MockA.Error = null;
|
|
MockB.IdentNr = 0;
|
|
MockB.Weight = 0;
|
|
MockB.Error = null;
|
|
}
|
|
|
|
[Test]
|
|
public async Task Test_01_CurrentWeight() {
|
|
MockA.Weight = 1234;
|
|
Assert.That(await ScaleA!.GetCurrentWeight(), Is.EqualTo(new WeighingResult {
|
|
GrossWeight = 1234, TareWeight = 0, NetWeight = 1234,
|
|
Date = new DateOnly(2020, 10, 8), Time = new TimeOnly(8, 47),
|
|
}));
|
|
MockB.Weight = 3456;
|
|
Assert.That(await ScaleB!.GetCurrentWeight(), Is.EqualTo(new WeighingResult {
|
|
GrossWeight = 3456, TareWeight = 0, NetWeight = 3456,
|
|
Date = new DateOnly(2020, 10, 8), Time = new TimeOnly(8, 47),
|
|
}));
|
|
MockA.Weight = 1236;
|
|
Assert.That(await ScaleA!.GetCurrentWeight(), Is.EqualTo(new WeighingResult {
|
|
GrossWeight = 1236, TareWeight = 0, NetWeight = 1236,
|
|
Date = new DateOnly(2020, 10, 8), Time = new TimeOnly(8, 47),
|
|
}));
|
|
MockB.Weight = 3457;
|
|
Assert.That(await ScaleB!.GetCurrentWeight(), Is.EqualTo(new WeighingResult {
|
|
GrossWeight = 3457, TareWeight = 0, NetWeight = 3457,
|
|
Date = new DateOnly(2020, 10, 8), Time = new TimeOnly(8, 47),
|
|
}));
|
|
}
|
|
|
|
[Test]
|
|
public async Task Test_02_Normal() {
|
|
MockA.Weight = 1234;
|
|
Assert.That(await ScaleA!.Weigh(), Is.EqualTo(new WeighingResult {
|
|
GrossWeight = 1234, TareWeight = 0, NetWeight = 1234,
|
|
WeighingId = "1", FullWeighingId = $"2020-10-08/1",
|
|
Date = new DateOnly(2020, 10, 8), Time = new TimeOnly(8, 47),
|
|
}));
|
|
MockB.Weight = 3456;
|
|
Assert.That(await ScaleB!.Weigh(), Is.EqualTo(new WeighingResult {
|
|
GrossWeight = 3456, TareWeight = 0, NetWeight = 3456,
|
|
WeighingId = "1", FullWeighingId = $"2020-10-08/1",
|
|
Date = new DateOnly(2020, 10, 8), Time = new TimeOnly(8, 47),
|
|
}));
|
|
MockA.Weight = 4321;
|
|
Assert.That(await ScaleA!.Weigh(), Is.EqualTo(new WeighingResult {
|
|
GrossWeight = 4321, TareWeight = 0, NetWeight = 4321,
|
|
WeighingId = "2", FullWeighingId = $"2020-10-08/2",
|
|
Date = new DateOnly(2020, 10, 8), Time = new TimeOnly(8, 47),
|
|
}));
|
|
MockB.Weight = 3333;
|
|
Assert.That(await ScaleB!.Weigh(), Is.EqualTo(new WeighingResult {
|
|
GrossWeight = 3333, TareWeight = 0, NetWeight = 3333,
|
|
WeighingId = "2", FullWeighingId = $"2020-10-08/2",
|
|
Date = new DateOnly(2020, 10, 8), Time = new TimeOnly(8, 47),
|
|
}));
|
|
}
|
|
|
|
[Test]
|
|
public void Test_03_Moving() {
|
|
MockA.Weight = 1_000;
|
|
MockA.Error = "moving";
|
|
IOException ex = Assert.ThrowsAsync<IOException>(async () => await ScaleA!.Weigh());
|
|
Assert.That(ex.Message, Contains.Substring("Waage in Bewegung"));
|
|
}
|
|
|
|
[Test]
|
|
public void Test_04_Overloaded() {
|
|
MockA.Weight = 10_000;
|
|
MockA.Error = "overloaded";
|
|
IOException ex = Assert.ThrowsAsync<IOException>(async () => await ScaleA!.Weigh());
|
|
Assert.That(ex.Message, Contains.Substring("Waage in Überlast"));
|
|
}
|
|
|
|
[Test]
|
|
public void Test_05_InvalidResponse() {
|
|
MockA.Weight = 1_000;
|
|
MockA.Error = "invalid";
|
|
Assert.ThrowsAsync<IOException>(async () => await ScaleA!.Weigh());
|
|
}
|
|
|
|
[Test]
|
|
public void Test_06_InvalidCrc() {
|
|
MockA.Weight = 1_000;
|
|
MockA.Error = "crc";
|
|
IOException ex = Assert.ThrowsAsync<IOException>(async () => await ScaleA!.Weigh());
|
|
Assert.That(ex.Message, Contains.Substring("Invalid CRC16 checksum"));
|
|
}
|
|
|
|
[Test]
|
|
public void Test_07_InvalidUnit() {
|
|
MockA.Weight = 1_000;
|
|
MockA.Error = "unit";
|
|
IOException ex = Assert.ThrowsAsync<IOException>(async () => await ScaleA!.Weigh());
|
|
}
|
|
}
|
|
}
|