From d2ec5f5ba04c70d12612598036939b958970e1af Mon Sep 17 00:00:00 2001 From: Patrick Grawehr Date: Mon, 17 Jun 2024 21:50:19 +0200 Subject: [PATCH] More tests --- src/devices/Seatalk1/Messages/SpeedTroughWater.cs | 9 ++++++--- src/devices/Seatalk1/tests/MessageTests.cs | 12 ++++++++++++ 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/devices/Seatalk1/Messages/SpeedTroughWater.cs b/src/devices/Seatalk1/Messages/SpeedTroughWater.cs index 29c8500307..6b1d6d7b10 100644 --- a/src/devices/Seatalk1/Messages/SpeedTroughWater.cs +++ b/src/devices/Seatalk1/Messages/SpeedTroughWater.cs @@ -13,7 +13,7 @@ public record SpeedTroughWater : SeatalkMessage { internal SpeedTroughWater() { - Speed = Speed.Zero; + Speed = Speed.FromKnots(0); // Because the decoding converts to knots } /// @@ -23,7 +23,7 @@ internal SpeedTroughWater() public SpeedTroughWater(Speed speed) { Speed = speed; - Forwarded = true; + Forwarded = false; } /// @@ -54,7 +54,10 @@ public override SeatalkMessage CreateNewMessage(IReadOnlyList data) { double speedvalue = data[2] << 8 | data[3]; speedvalue /= 10.0; - return new SpeedTroughWater(Speed.FromKnots(speedvalue)); + return new SpeedTroughWater(Speed.FromKnots(speedvalue)) + { + Forwarded = (data[1] & 0x80) != 0 + }; } /// diff --git a/src/devices/Seatalk1/tests/MessageTests.cs b/src/devices/Seatalk1/tests/MessageTests.cs index a584087249..39a4acc876 100644 --- a/src/devices/Seatalk1/tests/MessageTests.cs +++ b/src/devices/Seatalk1/tests/MessageTests.cs @@ -33,6 +33,7 @@ public MessageTests() [InlineData("85 06 00 00 C0 0D 1F 00 E0", typeof(NavigationToWaypoint))] [InlineData("11 01 00 00", typeof(ApparentWindSpeed))] [InlineData("82 05 00 ff 00 ff 00 ff", typeof(TargetWaypointName))] + [InlineData("20 01 00 12", typeof(SpeedTroughWater))] public void KnownMessageTypeDecode(string msg, Type expectedType) { msg = msg.Replace(" ", string.Empty); @@ -263,5 +264,16 @@ public void TargetWaypointRoundTrip2(string input, string expected) TargetWaypointName t2 = (TargetWaypointName)t1.CreateNewMessage(data); Assert.Equal(expected, t2.Name); } + + [Fact] + public void SpeedTroughWater1() + { + SpeedTroughWater stw = new SpeedTroughWater(Speed.FromKnots(5.2)); + var data = stw.CreateDatagram(); + SpeedTroughWater stw2 = (SpeedTroughWater)stw.CreateNewMessage(data); + Assert.False(stw.Forwarded); + Assert.True(stw.Speed.Equals(Speed.FromKnots(5.2), Speed.FromKnots(0.1))); + Assert.Equal(stw, stw2); + } } }