📄
lib/tests/DltPayloadTests.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
using Shouldly; namespace SharpDlt.Tests; public class DltPayloadTests { [Fact] public void NonVerbosePayload_ParsesMessageIdAndData() { var data = TestDlt.LittleEndian(0x12345678).Concat<byte>([1, 2, 3]).ToArray(); var payload = NonVerbosePayload.Parse(data, msbFirst: false); payload.MessageId.ShouldBe(0x12345678u); payload.NonStaticData.ToArray().ShouldBe(new byte[] { 1, 2, 3 }); payload.ToString().ShouldBe("[305419896] 010203"); } [Fact] public void NonVerbosePayload_ParsesBigEndianMessageId() { var data = TestDlt.BigEndian(0x12345678u); var payload = NonVerbosePayload.Parse(data, msbFirst: true); payload.MessageId.ShouldBe(0x12345678u); payload.NonStaticData.Length.ShouldBe(0); } [Fact] public void NonVerbosePayload_TooShort_Throws() { Should.Throw<DltParseException>(() => NonVerbosePayload.Parse(new byte[3], false)); } [Fact] public void NonVerbosePayload_EqualityComparesContent() { new NonVerbosePayload(1, new byte[] { 1, 2 }).ShouldBe(new NonVerbosePayload(1, new byte[] { 1, 2 })); new NonVerbosePayload(1, new byte[] { 1, 2 }).ShouldNotBe(new NonVerbosePayload(2, new byte[] { 1, 2 })); } [Fact] public void VerbosePayload_ParsesEveryArgumentInOrder() { var data = TestDlt .StringArgument("value") .Concat(TestDlt.Argument(TestDlt.TypeInfoUInt16, [0x2A, 0x00])) .Concat(TestDlt.Argument(TestDlt.TypeInfoBool, [1])) .ToArray(); var payload = VerbosePayload.Parse(data, msbFirst: false, numberOfArguments: 3); payload.Arguments.ShouldBe([ new DltStringArgument("value", DltStringCoding.Ascii), new DltUnsignedArgument(42, DltIntegerWidth.Bits16), new DltBoolArgument(true), ]); payload.ToString().ShouldBe("value 42 True"); } [Fact] public void VerbosePayload_WithoutArguments_IsEmpty() { var payload = VerbosePayload.Parse([], msbFirst: false, numberOfArguments: 0); payload.Arguments.ShouldBeEmpty(); payload.ToString().ShouldBeEmpty(); } [Fact] public void VerbosePayload_MoreArgumentsThanData_Throws() { var data = TestDlt.StringArgument("value"); Should.Throw<DltParseException>(() => VerbosePayload.Parse(data, false, 2)); } [Fact] public void VerbosePayload_EqualityComparesArguments() { var payload = new VerbosePayload([new DltBoolArgument(true)]); payload.ShouldBe(new VerbosePayload([new DltBoolArgument(true)])); payload.ShouldNotBe(new VerbosePayload([new DltBoolArgument(false)])); } }