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(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(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(async () => await ScaleA!.Weigh()); } [Test] public void Test_06_InvalidCrc() { MockA.Weight = 1_000; MockA.Error = "crc"; IOException ex = Assert.ThrowsAsync(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(async () => await ScaleA!.Weigh()); } } }