Skip to content

Commit c1d7915

Browse files
tylerkronclaude
andauthored
fix: firmware notification are fixed (#191)
Co-authored-by: Claude <[email protected]>
1 parent f75d18d commit c1d7915

File tree

6 files changed

+582
-19
lines changed

6 files changed

+582
-19
lines changed
Lines changed: 260 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,260 @@
1+
using Microsoft.VisualStudio.TestTools.UnitTesting;
2+
using Daqifi.Desktop.Helpers;
3+
4+
namespace Daqifi.Desktop.Test.Helpers;
5+
6+
[TestClass]
7+
public class VersionHelperTests
8+
{
9+
#region TryParseVersionInfo Tests
10+
11+
[TestMethod]
12+
public void TryParseVersionInfo_ValidFullVersion_ReturnsTrue()
13+
{
14+
// Arrange & Act
15+
var result = VersionHelper.TryParseVersionInfo("1.2.3", out var version);
16+
17+
// Assert
18+
Assert.IsTrue(result);
19+
Assert.AreEqual(1, version.Major);
20+
Assert.AreEqual(2, version.Minor);
21+
Assert.AreEqual(3, version.Patch);
22+
Assert.IsFalse(version.IsPreRelease);
23+
}
24+
25+
[TestMethod]
26+
public void TryParseVersionInfo_VersionWithVPrefix_ReturnsTrue()
27+
{
28+
// Arrange & Act
29+
var result = VersionHelper.TryParseVersionInfo("v2.1.0", out var version);
30+
31+
// Assert
32+
Assert.IsTrue(result);
33+
Assert.AreEqual(2, version.Major);
34+
Assert.AreEqual(1, version.Minor);
35+
Assert.AreEqual(0, version.Patch);
36+
}
37+
38+
[TestMethod]
39+
public void TryParseVersionInfo_VersionWithBetaSuffix_ReturnsTrue()
40+
{
41+
// Arrange & Act
42+
var result = VersionHelper.TryParseVersionInfo("1.2.3beta2", out var version);
43+
44+
// Assert
45+
Assert.IsTrue(result);
46+
Assert.AreEqual(1, version.Major);
47+
Assert.AreEqual(2, version.Minor);
48+
Assert.AreEqual(3, version.Patch);
49+
Assert.IsTrue(version.IsPreRelease);
50+
Assert.AreEqual("beta", version.PreLabel);
51+
Assert.AreEqual(2, version.PreNumber);
52+
}
53+
54+
[TestMethod]
55+
public void TryParseVersionInfo_VersionWithRcSuffix_ReturnsTrue()
56+
{
57+
// Arrange & Act
58+
var result = VersionHelper.TryParseVersionInfo("2.0.0rc1", out var version);
59+
60+
// Assert
61+
Assert.IsTrue(result);
62+
Assert.AreEqual(2, version.Major);
63+
Assert.AreEqual(0, version.Minor);
64+
Assert.AreEqual(0, version.Patch);
65+
Assert.IsTrue(version.IsPreRelease);
66+
Assert.AreEqual("rc", version.PreLabel);
67+
Assert.AreEqual(1, version.PreNumber);
68+
}
69+
70+
[TestMethod]
71+
public void TryParseVersionInfo_EmptyOrNullString_ReturnsFalse()
72+
{
73+
// Act & Assert
74+
Assert.IsFalse(VersionHelper.TryParseVersionInfo("", out _));
75+
Assert.IsFalse(VersionHelper.TryParseVersionInfo(null, out _));
76+
Assert.IsFalse(VersionHelper.TryParseVersionInfo(" ", out _));
77+
}
78+
79+
[TestMethod]
80+
public void TryParseVersionInfo_InvalidFormat_ReturnsFalse()
81+
{
82+
// Act & Assert
83+
Assert.IsFalse(VersionHelper.TryParseVersionInfo("abc", out _));
84+
Assert.IsFalse(VersionHelper.TryParseVersionInfo("1.x.3", out _));
85+
Assert.IsFalse(VersionHelper.TryParseVersionInfo("1.2.3.4.5", out _));
86+
}
87+
88+
#endregion
89+
90+
#region Compare Tests
91+
92+
[TestMethod]
93+
public void Compare_SameVersions_ReturnsZero()
94+
{
95+
// Act
96+
var result = VersionHelper.Compare("1.2.3", "1.2.3");
97+
98+
// Assert
99+
Assert.AreEqual(0, result);
100+
}
101+
102+
[TestMethod]
103+
public void Compare_LeftVersionHigher_ReturnsPositive()
104+
{
105+
// Act
106+
var result = VersionHelper.Compare("2.0.0", "1.9.9");
107+
108+
// Assert
109+
Assert.IsTrue(result > 0);
110+
}
111+
112+
[TestMethod]
113+
public void Compare_RightVersionHigher_ReturnsNegative()
114+
{
115+
// Act
116+
var result = VersionHelper.Compare("1.2.3", "1.2.4");
117+
118+
// Assert
119+
Assert.IsTrue(result < 0);
120+
}
121+
122+
[TestMethod]
123+
public void Compare_ReleaseVsBeta_ReleaseHigher()
124+
{
125+
// Act
126+
var result = VersionHelper.Compare("1.2.3", "1.2.3beta1");
127+
128+
// Assert
129+
Assert.IsTrue(result > 0);
130+
}
131+
132+
[TestMethod]
133+
public void Compare_RcVsBeta_RcHigher()
134+
{
135+
// Act
136+
var result = VersionHelper.Compare("1.2.3rc1", "1.2.3beta1");
137+
138+
// Assert
139+
Assert.IsTrue(result > 0);
140+
}
141+
142+
[TestMethod]
143+
public void Compare_BothInvalid_ReturnsZero()
144+
{
145+
// Act
146+
var result = VersionHelper.Compare("invalid", "also-invalid");
147+
148+
// Assert
149+
Assert.AreEqual(0, result);
150+
}
151+
152+
[TestMethod]
153+
public void Compare_OneInvalid_ValidVersionWins()
154+
{
155+
// Act & Assert
156+
Assert.IsTrue(VersionHelper.Compare("1.0.0", "invalid") > 0);
157+
Assert.IsTrue(VersionHelper.Compare("invalid", "1.0.0") < 0);
158+
}
159+
160+
#endregion
161+
162+
#region NormalizeVersionString Tests
163+
164+
[TestMethod]
165+
public void NormalizeVersionString_ValidVersion_ReturnsNormalized()
166+
{
167+
// Act
168+
var result = VersionHelper.NormalizeVersionString("v1.2.3");
169+
170+
// Assert
171+
Assert.AreEqual("1.2.3", result);
172+
}
173+
174+
[TestMethod]
175+
public void NormalizeVersionString_PreReleaseVersion_ReturnsNormalizedWithSuffix()
176+
{
177+
// Act
178+
var result = VersionHelper.NormalizeVersionString("1.2.3beta2");
179+
180+
// Assert
181+
Assert.AreEqual("1.2.3beta2", result);
182+
}
183+
184+
[TestMethod]
185+
public void NormalizeVersionString_InvalidVersion_ReturnsNull()
186+
{
187+
// Act
188+
var result = VersionHelper.NormalizeVersionString("invalid");
189+
190+
// Assert
191+
Assert.IsNull(result);
192+
}
193+
194+
#endregion
195+
196+
#region VersionInfo Comparison Tests
197+
198+
[TestMethod]
199+
public void VersionInfo_CompareTo_MajorVersionDifference()
200+
{
201+
// Arrange
202+
VersionHelper.TryParseVersionInfo("2.0.0", out var v1);
203+
VersionHelper.TryParseVersionInfo("1.9.9", out var v2);
204+
205+
// Act & Assert
206+
Assert.IsTrue(v1.CompareTo(v2) > 0);
207+
Assert.IsTrue(v2.CompareTo(v1) < 0);
208+
}
209+
210+
[TestMethod]
211+
public void VersionInfo_CompareTo_MinorVersionDifference()
212+
{
213+
// Arrange
214+
VersionHelper.TryParseVersionInfo("1.2.0", out var v1);
215+
VersionHelper.TryParseVersionInfo("1.1.9", out var v2);
216+
217+
// Act & Assert
218+
Assert.IsTrue(v1.CompareTo(v2) > 0);
219+
}
220+
221+
[TestMethod]
222+
public void VersionInfo_CompareTo_PatchVersionDifference()
223+
{
224+
// Arrange
225+
VersionHelper.TryParseVersionInfo("1.2.3", out var v1);
226+
VersionHelper.TryParseVersionInfo("1.2.2", out var v2);
227+
228+
// Act & Assert
229+
Assert.IsTrue(v1.CompareTo(v2) > 0);
230+
}
231+
232+
[TestMethod]
233+
public void VersionInfo_CompareTo_PreReleasePrecedence()
234+
{
235+
// Arrange
236+
VersionHelper.TryParseVersionInfo("1.0.0alpha1", out var alpha);
237+
VersionHelper.TryParseVersionInfo("1.0.0beta1", out var beta);
238+
VersionHelper.TryParseVersionInfo("1.0.0rc1", out var rc);
239+
VersionHelper.TryParseVersionInfo("1.0.0", out var release);
240+
241+
// Act & Assert - Release should be highest
242+
Assert.IsTrue(release.CompareTo(rc) > 0);
243+
Assert.IsTrue(rc.CompareTo(beta) > 0);
244+
Assert.IsTrue(beta.CompareTo(alpha) > 0);
245+
}
246+
247+
[TestMethod]
248+
public void VersionInfo_ToString_FormatsCorrectly()
249+
{
250+
// Arrange
251+
VersionHelper.TryParseVersionInfo("1.2.3", out var release);
252+
VersionHelper.TryParseVersionInfo("1.2.3beta2", out var preRelease);
253+
254+
// Act & Assert
255+
Assert.AreEqual("1.2.3", release.ToString());
256+
Assert.AreEqual("1.2.3beta2", preRelease.ToString());
257+
}
258+
259+
#endregion
260+
}

0 commit comments

Comments
 (0)