57 lines
1.7 KiB
C#
57 lines
1.7 KiB
C#
// LeetCode 165: Compare Version Numbers 單元測試(xUnit)
|
||
|
||
using System.Linq;
|
||
using Xunit;
|
||
|
||
public class SolutionTests {
|
||
private readonly Solution _s = new Solution();
|
||
|
||
[Theory]
|
||
[InlineData("1.01", "1.001", 0)]
|
||
[InlineData("1.0", "1.0.0", 0)]
|
||
[InlineData("1.0.0.0", "1", 0)]
|
||
[InlineData("0.1", "1.1", -1)]
|
||
[InlineData("1.0.1", "1", 1)]
|
||
[InlineData("7.5.2.4", "7.5.3", -1)]
|
||
public void CompareVersion_ReturnsExpectedResult(string version1, string version2, int expected) {
|
||
var actual = _s.CompareVersion(version1, version2);
|
||
|
||
Assert.Equal(expected, actual);
|
||
}
|
||
|
||
[Theory]
|
||
[InlineData("1.0.1", "1")]
|
||
[InlineData("3.0.0", "2.9.9.9")]
|
||
[InlineData("10.4", "10.3.9")]
|
||
public void CompareVersion_IsAntiSymmetric(string left, string right) {
|
||
var forward = _s.CompareVersion(left, right);
|
||
var backward = _s.CompareVersion(right, left);
|
||
|
||
Assert.Equal(1, forward);
|
||
Assert.Equal(-1, backward);
|
||
}
|
||
|
||
[Theory]
|
||
[InlineData("", "", 0)]
|
||
[InlineData("", "0", 0)]
|
||
[InlineData("0.0.0", "", 0)]
|
||
[InlineData("000", "0", 0)]
|
||
[InlineData("2147483647", "2147483646", 1)]
|
||
[InlineData("2147483646", "2147483647", -1)]
|
||
public void CompareVersion_HandlesBoundaryInputs(string version1, string version2, int expected) {
|
||
var actual = _s.CompareVersion(version1, version2);
|
||
|
||
Assert.Equal(expected, actual);
|
||
}
|
||
|
||
[Fact]
|
||
public void CompareVersion_LongSequencesDifferAtEnd() {
|
||
var left = string.Join('.', Enumerable.Repeat("0", 199).Append("1"));
|
||
var right = string.Join('.', Enumerable.Repeat("0", 200));
|
||
|
||
var result = _s.CompareVersion(left, right);
|
||
|
||
Assert.Equal(1, result);
|
||
}
|
||
}
|