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