using Elwig.Helpers.Weighing; namespace Tests.WeighingTests { [TestFixture] class ScaleTestMatzenIT3000A { private MockScale Mock; private SysTecITScale Scale; [OneTimeSetUp] public void SetupScale() { Mock = new CommandMockScale(12345, ScaleHandlers.Handle_IT3000A); Scale = new("1", "IT3000A", "tcp://127.0.0.1:12345"); } [OneTimeTearDown] public void TeardownScale() { Mock.Dispose(); Scale.Dispose(); } [SetUp] public void ResetScale() { Mock.IdentNr = 0; Mock.Weight = 0; Mock.Error = null; } [Test] public async Task Test_01_CurrentWeight() { Mock.Weight = 1234; Assert.That(await Scale!.GetCurrentWeight(), Is.EqualTo(new WeighingResult { GrossWeight = 1234, TareWeight = 0, NetWeight = 1234, Date = new DateOnly(2020, 10, 15), Time = new TimeOnly(12, 34), })); Mock.Weight = 1235; Assert.That(await Scale!.GetCurrentWeight(), Is.EqualTo(new WeighingResult { GrossWeight = 1235, TareWeight = 0, NetWeight = 1235, Date = new DateOnly(2020, 10, 15), Time = new TimeOnly(12, 34), })); Mock.Weight = 1236; Assert.That(await Scale!.GetCurrentWeight(), Is.EqualTo(new WeighingResult { GrossWeight = 1236, TareWeight = 0, NetWeight = 1236, Date = new DateOnly(2020, 10, 15), Time = new TimeOnly(12, 34), })); } [Test] public async Task Test_02_Normal() { Mock.Weight = 1234; Assert.That(await Scale!.Weigh(), Is.EqualTo(new WeighingResult { GrossWeight = 1234, TareWeight = 0, NetWeight = 1234, WeighingId = "1", FullWeighingId = $"2020-10-15/1", Date = new DateOnly(2020, 10, 15), Time = new TimeOnly(12, 34), })); Mock.Weight = 3333; Assert.That(await Scale!.Weigh(), Is.EqualTo(new WeighingResult { GrossWeight = 3333, TareWeight = 0, NetWeight = 3333, WeighingId = "2", FullWeighingId = $"2020-10-15/2", Date = new DateOnly(2020, 10, 15), Time = new TimeOnly(12, 34), })); Mock.Weight = 4321; Assert.That(await Scale!.Weigh(), Is.EqualTo(new WeighingResult { GrossWeight = 4321, TareWeight = 0, NetWeight = 4321, WeighingId = "3", FullWeighingId = $"2020-10-15/3", Date = new DateOnly(2020, 10, 15), Time = new TimeOnly(12, 34), })); } [Test] public void Test_03_Moving() { Mock.Weight = 1_000; Mock.Error = "moving"; IOException ex = Assert.ThrowsAsync(async () => await Scale!.Weigh()); Assert.That(ex.Message, Contains.Substring("Waage in Bewegung")); } [Test] public void Test_04_Overloaded() { Mock.Weight = 10_000; Mock.Error = "overloaded"; IOException ex = Assert.ThrowsAsync(async () => await Scale!.Weigh()); Assert.That(ex.Message, Contains.Substring("Waage in Überlast")); } [Test] public void Test_05_InvalidResponse() { Mock.Weight = 1_000; Mock.Error = "invalid"; Assert.ThrowsAsync(async () => await Scale!.Weigh()); } [Test] public void Test_06_InvalidCrc() { Mock.Weight = 1_000; Mock.Error = "crc"; IOException ex = Assert.ThrowsAsync(async () => await Scale!.Weigh()); Assert.That(ex.Message, Contains.Substring("Invalid CRC16 checksum")); } [Test] public void Test_07_InvalidUnit() { Mock.Weight = 1_000; Mock.Error = "unit"; IOException ex = Assert.ThrowsAsync(async () => await Scale!.Weigh()); } } }