Files
coding-practice/problems/0165-compare-version-numbers/test/SolutionTests.cs

57 lines
1.7 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 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);
}
}