-
-
Notifications
You must be signed in to change notification settings - Fork 243
/
Copy pathBusId_Tests.cs
183 lines (161 loc) · 5.14 KB
/
BusId_Tests.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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
// SPDX-FileCopyrightText: 2022 Frans van Dorsselaer
//
// SPDX-License-Identifier: GPL-2.0-only
using Usbipd.Automation;
namespace UnitTests;
[TestClass]
sealed class BusId_Tests
{
[TestMethod]
public void DefaultConstructor()
{
var busId = new BusId();
Assert.AreEqual(0, busId.Bus);
Assert.AreEqual(0, busId.Port);
}
sealed class BusIdData
{
static readonly string[] _Invalid = new[]
{
"",
"1",
"1-",
"-1",
" 1-1",
"1 -1",
"1- 1",
"1-1 ",
"a-1",
"1-a",
"0-1",
"1-0",
"1-65536",
"65536-1",
};
public static IEnumerable<string[]> Invalid
{
get => from value in _Invalid select new string[] { value };
}
static readonly string[] _Valid = new[]
{
"1-1",
"1-2",
"1-65534",
"1-65535",
"2-1",
"2-2",
"2-65534",
"2-65535",
"65534-1",
"65534-2",
"65534-65534",
"65534-65535",
"65535-1",
"65535-2",
"65535-65534",
"65535-65535",
};
public static IEnumerable<string[]> Valid
{
get => from value in _Valid select new string[] { value };
}
static int ExpectedCompare(string left, string right)
{
var leftBus = ushort.Parse(left.Split('-')[0]);
var leftPort = ushort.Parse(left.Split('-')[1]);
var rightBus = ushort.Parse(right.Split('-')[0]);
var rightPort = ushort.Parse(right.Split('-')[1]);
return
leftBus < rightBus ? -1 :
leftBus > rightBus ? 1 :
leftPort < rightPort ? -1 :
leftPort > rightPort ? 1 : 0;
}
public static IEnumerable<object[]> Compare
{
get => from left in _Valid from right in _Valid select new object[] { left, right, ExpectedCompare(left, right) };
}
}
[DataTestMethod]
[DynamicData(nameof(BusIdData.Invalid), typeof(BusIdData))]
public void TryParseInvalid(string text)
{
var result = BusId.TryParse(text, out var busId);
Assert.IsFalse(result);
Assert.AreEqual(0, busId.Bus);
Assert.AreEqual(0, busId.Port);
}
[DataTestMethod]
[DynamicData(nameof(BusIdData.Valid), typeof(BusIdData))]
public void TryParseValid(string text)
{
var result = BusId.TryParse(text, out var busId);
Assert.IsTrue(result);
var expectedBus = ushort.Parse(text.Split('-')[0]);
var expectedPort = ushort.Parse(text.Split('-')[1]);
Assert.AreEqual(expectedBus, busId.Bus);
Assert.AreEqual(expectedPort, busId.Port);
}
[DataTestMethod]
[DynamicData(nameof(BusIdData.Invalid), typeof(BusIdData))]
public void ParseInvalid(string text)
{
Assert.ThrowsException<FormatException>(() =>
{
var busId = BusId.Parse(text);
});
}
[DataTestMethod]
[DynamicData(nameof(BusIdData.Valid), typeof(BusIdData))]
public void ParseValid(string text)
{
var busId = BusId.Parse(text);
var expectedBus = ushort.Parse(text.Split('-')[0]);
var expectedPort = ushort.Parse(text.Split('-')[1]);
Assert.AreEqual(expectedBus, busId.Bus);
Assert.AreEqual(expectedPort, busId.Port);
}
[DataTestMethod]
[DynamicData(nameof(BusIdData.Compare), typeof(BusIdData))]
public void Compare(string left, string right, int expected)
{
var result = BusId.Parse(left).CompareTo(BusId.Parse(right));
Assert.AreEqual(expected, result);
}
[DataTestMethod]
[DynamicData(nameof(BusIdData.Compare), typeof(BusIdData))]
public void LessThan(string left, string right, int expected)
{
var result = BusId.Parse(left) < BusId.Parse(right);
Assert.AreEqual(expected < 0, result);
}
[DataTestMethod]
[DynamicData(nameof(BusIdData.Compare), typeof(BusIdData))]
public void LessThanOrEqual(string left, string right, int expected)
{
var result = BusId.Parse(left) <= BusId.Parse(right);
Assert.AreEqual(expected <= 0, result);
}
[DataTestMethod]
[DynamicData(nameof(BusIdData.Compare), typeof(BusIdData))]
public void GreaterThan(string left, string right, int expected)
{
var result = BusId.Parse(left) > BusId.Parse(right);
Assert.AreEqual(expected > 0, result);
}
[DataTestMethod]
[DynamicData(nameof(BusIdData.Compare), typeof(BusIdData))]
public void GreaterThanOrEqual(string left, string right, int expected)
{
var result = BusId.Parse(left) >= BusId.Parse(right);
Assert.AreEqual(expected >= 0, result);
}
[DataTestMethod]
[DynamicData(nameof(BusIdData.Valid), typeof(BusIdData))]
public void ToStringValid(string text)
{
var busId = BusId.Parse(text);
var result = busId.ToString();
Assert.AreEqual(text, result);
}
}