using System; using System.Collections.Generic; using NUnit.Framework; namespace Developpez.Dotnet.Tests { [TestFixture] public class VersionNumberTests { #region Constructors tests [Test] public void ConstructorEmptyTest() { // Given : VersionNumber vn; // When : vn = new VersionNumber(); // Then : Assert.That(vn.Major, Is.EqualTo(0)); Assert.That(vn.Minor, Is.EqualTo(0)); Assert.That(vn.Patch, Is.EqualTo(0)); Assert.That(vn.PreRelease, Is.EqualTo(string.Empty)); Assert.That(vn.Build, Is.EqualTo(string.Empty)); } [Test] public void ConstructorWithMajorMinorPatchTest() { // Given : VersionNumber vn; // When : vn = new VersionNumber(1, 2, 3); // Then : Assert.That(vn.Major, Is.EqualTo(1)); Assert.That(vn.Minor, Is.EqualTo(2)); Assert.That(vn.Patch, Is.EqualTo(3)); Assert.That(vn.PreRelease, Is.EqualTo(string.Empty)); Assert.That(vn.Build, Is.EqualTo(string.Empty)); } [Test] public void ConstructorFullTest() { // Given : VersionNumber vn; // When : vn = new VersionNumber(1, 2, 3, "PreReleaseVersion", "BuildVersion"); // Then : Assert.That(vn.Major, Is.EqualTo(1)); Assert.That(vn.Minor, Is.EqualTo(2)); Assert.That(vn.Patch, Is.EqualTo(3)); Assert.That(vn.PreRelease, Is.EqualTo("PreReleaseVersion")); Assert.That(vn.Build, Is.EqualTo("BuildVersion")); } #endregion #region GetHashCode test [Test] public void GetHashCodeConsistencyTest() { // Equal instances must have the same hashcode var v1 = new VersionNumber(5, 1, 2); var v2 = new VersionNumber(5, 1, 2); Assert.AreEqual(v1.GetHashCode(), v2.GetHashCode()); v1 = new VersionNumber("5.1.2"); v2 = new VersionNumber("5.1.2"); Assert.AreEqual(v1.GetHashCode(), v2.GetHashCode()); v1 = new VersionNumber(5, 1, 2, "alpha", "test"); v2 = new VersionNumber(5, 1, 2, "alpha", "test"); Assert.AreEqual(v1.GetHashCode(), v2.GetHashCode()); v1 = new VersionNumber("5.1.2-alpha+test"); v2 = new VersionNumber("5.1.2-alpha+test"); Assert.AreEqual(v1.GetHashCode(), v2.GetHashCode()); } #endregion #region Equals tests [Test] public void ObjectEqualsTest() { // Given : VersionNumber vn = new VersionNumber(1, 2, 3, "PreReleaseVersion", "BuildVersion"); object vnNull = null; object vnNotAnInstanceOfVersionNumber = new Version(); object vnEqualTo = new VersionNumber(1, 2, 3, "PreReleaseVersion", "BuildVersion"); object vnNotEqualTo = new VersionNumber(2, 3, 4, "PreReleaseVersion1", "BuildVersion1"); // When-Then : Assert.That(vn.Equals(vn)); Assert.That(!vn.Equals(vnNull)); Assert.That(!vn.Equals(vnNotAnInstanceOfVersionNumber)); Assert.That(vn.Equals(vnEqualTo)); Assert.That(!vn.Equals(vnNotEqualTo)); } [Test] public void EqualsTest() { // Given : VersionNumber vn; VersionNumber vnEqualTo; VersionNumber vnNotEqualTo; // When : vn = new VersionNumber(1, 2, 3, "PreReleaseVersion", "BuildVersion"); vnEqualTo = new VersionNumber(1, 2, 3, "PreReleaseVersion", "BuildVersion"); vnNotEqualTo = new VersionNumber(2, 3, 4, "PreReleaseVersion1", "BuildVersion1"); // Then : Assert.That(vn.Equals(vnEqualTo)); Assert.That(!vn.Equals(vnNotEqualTo)); } #endregion [Test] public void CloneTest() { // Given : VersionNumber vn = new VersionNumber(1, 2, 3, "rc1", "build1234"); VersionNumber vnClone; // When : vnClone = vn.Clone(); // Then : // Vérifier que le type retourné est le même : Assert.That(vnClone.GetType(), Is.EqualTo(typeof(VersionNumber))); // Vérifier que l'instance est la même : Assert.That(vn.Equals(vnClone)); } #region CompareTo tests [Test] public void ObjectCompareToTest() { // Null : object vnNull = null; Assert.That(new VersionNumber().CompareTo(vnNull), Is.EqualTo(1)); // Empty : Assert.That(new VersionNumber().CompareTo((object)new VersionNumber()), Is.EqualTo(0)); // Major : Assert.That(new VersionNumber(1, 0, 0).CompareTo((object)new VersionNumber(2, 0, 0)), Is.EqualTo(-1)); Assert.That(new VersionNumber(1, 0, 0).CompareTo((object)new VersionNumber(1, 0, 0)), Is.EqualTo(0)); Assert.That(new VersionNumber(2, 0, 0).CompareTo((object)new VersionNumber(1, 0, 0)), Is.EqualTo(1)); // Minor : Assert.That(new VersionNumber(0, 1, 0).CompareTo((object)new VersionNumber(0, 2, 0)), Is.EqualTo(-1)); Assert.That(new VersionNumber(0, 1, 0).CompareTo((object)new VersionNumber(0, 1, 0)), Is.EqualTo(0)); Assert.That(new VersionNumber(0, 2, 0).CompareTo((object)new VersionNumber(0, 1, 0)), Is.EqualTo(1)); // Patch : Assert.That(new VersionNumber(0, 0, 1).CompareTo((object)new VersionNumber(0, 0, 2)), Is.EqualTo(-1)); Assert.That(new VersionNumber(0, 0, 1).CompareTo((object)new VersionNumber(0, 0, 1)), Is.EqualTo(0)); Assert.That(new VersionNumber(0, 0, 2).CompareTo((object)new VersionNumber(0, 0, 1)), Is.EqualTo(1)); // PreRelease : Assert.That(new VersionNumber(0, 0, 0, "A", string.Empty).CompareTo((object)new VersionNumber(0, 0, 0, "B", string.Empty)), Is.EqualTo(-1)); Assert.That(new VersionNumber(0, 0, 0, "A", string.Empty).CompareTo((object)new VersionNumber(0, 0, 0, "A", string.Empty)), Is.EqualTo(0)); Assert.That(new VersionNumber(0, 0, 0, "B", string.Empty).CompareTo((object)new VersionNumber(0, 0, 0, "A", string.Empty)), Is.EqualTo(1)); // Build : Assert.That(new VersionNumber(0, 0, 0, string.Empty, "A").CompareTo((object)new VersionNumber(0, 0, 0, string.Empty, "B")), Is.EqualTo(-1)); Assert.That(new VersionNumber(0, 0, 0, string.Empty, "A").CompareTo((object)new VersionNumber(0, 0, 0, string.Empty, "A")), Is.EqualTo(0)); Assert.That(new VersionNumber(0, 0, 0, string.Empty, "B").CompareTo((object)new VersionNumber(0, 0, 0, string.Empty, "A")), Is.EqualTo(1)); } [Test] [ExpectedException(typeof(ArgumentException))] public void ObjectCompareToExpectedArgumentExceptionTest() { // Given : VersionNumber vn = new VersionNumber(1, 2, 3, "PreReleaseVersion", "BuildVersion"); object vnNotAnInstanceOfVersionNumber = new Version(); // When : vn.CompareTo(vnNotAnInstanceOfVersionNumber); // Then : Assert.Fail("La méthode doit lever une exception."); } [Test] public void CompareToTest() { // Null : VersionNumber vnNull = null; Assert.That(new VersionNumber().CompareTo(vnNull), Is.EqualTo(1)); // Empty : Assert.That(new VersionNumber().CompareTo(new VersionNumber()), Is.EqualTo(0)); // Major : Assert.That(new VersionNumber(1, 0, 0).CompareTo(new VersionNumber(2, 0, 0)), Is.EqualTo(-1)); Assert.That(new VersionNumber(1, 0, 0).CompareTo(new VersionNumber(1, 0, 0)), Is.EqualTo(0)); Assert.That(new VersionNumber(2, 0, 0).CompareTo(new VersionNumber(1, 0, 0)), Is.EqualTo(1)); // Minor : Assert.That(new VersionNumber(0, 1, 0).CompareTo(new VersionNumber(0, 2, 0)), Is.EqualTo(-1)); Assert.That(new VersionNumber(0, 1, 0).CompareTo(new VersionNumber(0, 1, 0)), Is.EqualTo(0)); Assert.That(new VersionNumber(0, 2, 0).CompareTo(new VersionNumber(0, 1, 0)), Is.EqualTo(1)); // Patch : Assert.That(new VersionNumber(0, 0, 1).CompareTo(new VersionNumber(0, 0, 2)), Is.EqualTo(-1)); Assert.That(new VersionNumber(0, 0, 1).CompareTo(new VersionNumber(0, 0, 1)), Is.EqualTo(0)); Assert.That(new VersionNumber(0, 0, 2).CompareTo(new VersionNumber(0, 0, 1)), Is.EqualTo(1)); // PreRelease : Assert.That(new VersionNumber(0, 0, 0, string.Empty, string.Empty).CompareTo(new VersionNumber(0, 0, 0, "A", string.Empty)), Is.EqualTo(1)); Assert.That(new VersionNumber(0, 0, 0, "A", string.Empty).CompareTo(new VersionNumber(0, 0, 0, "B", string.Empty)), Is.EqualTo(-1)); Assert.That(new VersionNumber(0, 0, 0, "A", string.Empty).CompareTo(new VersionNumber(0, 0, 0, "A", string.Empty)), Is.EqualTo(0)); Assert.That(new VersionNumber(0, 0, 0, "B", string.Empty).CompareTo(new VersionNumber(0, 0, 0, "A", string.Empty)), Is.EqualTo(1)); Assert.That(new VersionNumber(0, 0, 0, "A.", string.Empty).CompareTo(new VersionNumber(0, 0, 0, "B.", string.Empty)), Is.EqualTo(-1)); Assert.That(new VersionNumber(0, 0, 0, "A", string.Empty).CompareTo(new VersionNumber(0, 0, 0, "A.B", string.Empty)), Is.EqualTo(-1)); Assert.That(new VersionNumber(0, 0, 0, "A.B", string.Empty).CompareTo(new VersionNumber(0, 0, 0, "A", string.Empty)), Is.EqualTo(1)); Assert.That(new VersionNumber(0, 0, 0, "A.B", string.Empty).CompareTo(new VersionNumber(0, 0, 0, "A.B", string.Empty)), Is.EqualTo(0)); Assert.That(new VersionNumber(0, 0, 0, "B.A", string.Empty).CompareTo(new VersionNumber(0, 0, 0, "A.A", string.Empty)), Is.EqualTo(1)); Assert.That(new VersionNumber(0, 0, 0, "B.A..", string.Empty).CompareTo(new VersionNumber(0, 0, 0, "A.A..", string.Empty)), Is.EqualTo(1)); // Build : Assert.That(new VersionNumber(0, 0, 0, string.Empty, "A").CompareTo(new VersionNumber(0, 0, 0, string.Empty, "B")), Is.EqualTo(-1)); Assert.That(new VersionNumber(0, 0, 0, string.Empty, "A").CompareTo(new VersionNumber(0, 0, 0, string.Empty, "A")), Is.EqualTo(0)); Assert.That(new VersionNumber(0, 0, 0, string.Empty, "B").CompareTo(new VersionNumber(0, 0, 0, string.Empty, "A")), Is.EqualTo(1)); Assert.That(new VersionNumber(0, 0, 0, string.Empty, "A.").CompareTo(new VersionNumber(0, 0, 0, string.Empty, "B.")), Is.EqualTo(-1)); Assert.That(new VersionNumber(0, 0, 0, string.Empty, "A.B").CompareTo(new VersionNumber(0, 0, 0, string.Empty, "A.B")), Is.EqualTo(0)); Assert.That(new VersionNumber(0, 0, 0, string.Empty, "B.A").CompareTo(new VersionNumber(0, 0, 0, string.Empty, "A.A")), Is.EqualTo(1)); Assert.That(new VersionNumber(0, 0, 0, string.Empty, "B.A..").CompareTo(new VersionNumber(0, 0, 0, string.Empty, "A.A..")), Is.EqualTo(1)); // PreRelease and Build : Assert.That(new VersionNumber(0, 0, 0, "A", "A").CompareTo(new VersionNumber(0, 0, 0, "A", "B")), Is.EqualTo(-1)); Assert.That(new VersionNumber(0, 0, 0, "A", "A").CompareTo(new VersionNumber(0, 0, 0, "A", "A")), Is.EqualTo(0)); Assert.That(new VersionNumber(0, 0, 0, "A", "B").CompareTo(new VersionNumber(0, 0, 0, "A", "A")), Is.EqualTo(1)); Assert.That(new VersionNumber(0, 0, 0, "A.", "A.").CompareTo(new VersionNumber(0, 0, 0, "A.", "B.")), Is.EqualTo(-1)); Assert.That(new VersionNumber(0, 0, 0, "A..", "A..").CompareTo(new VersionNumber(0, 0, 0, "A..", "A..")), Is.EqualTo(0)); Assert.That(new VersionNumber(0, 0, 0, "A..B", "B.B").CompareTo(new VersionNumber(0, 0, 0, "A..B", "A.B")), Is.EqualTo(1)); } #endregion [Test] public void ToStringTest() { // Empty : Assert.AreEqual("0.0.0", new VersionNumber().ToString()); // Standard : Assert.AreEqual("1.2.3", new VersionNumber(1, 2, 3).ToString()); // With PreRelease and Build : Assert.AreEqual("1.2.3-PreRelease+Build", new VersionNumber(1, 2, 3, "PreRelease", "Build").ToString()); // With PreRelease : Assert.AreEqual("1.2.3-PreRelease", new VersionNumber(1, 2, 3, "PreRelease", string.Empty).ToString()); // With Build : Assert.AreEqual("1.2.3+Build", new VersionNumber(1, 2, 3, string.Empty, "Build").ToString()); } #region Parse tests [Test] public void ParseTest() { Assert.That(VersionNumber.Parse("0.0.0"), Is.EqualTo(new VersionNumber())); Assert.That(VersionNumber.Parse("1.0.0"), Is.EqualTo(new VersionNumber(1, 0, 0))); Assert.That(VersionNumber.Parse("1.0.0-rc.1"), Is.EqualTo(new VersionNumber(1, 0, 0, "rc.1", string.Empty))); Assert.That(VersionNumber.Parse("1.0.0+build.1"), Is.EqualTo(new VersionNumber(1, 0, 0, string.Empty, "build.1"))); Assert.That(VersionNumber.Parse("1.0.0-rc.1+build.1"), Is.EqualTo(new VersionNumber(1, 0, 0, "rc.1", "build.1"))); } [Test] [ExpectedException(typeof(ArgumentNullException))] public void ParseExceptionForNullTest() { VersionNumber.Parse(null); } [Test] [ExpectedException(typeof(ArgumentNullException))] public void ParseExceptionForStringEmptyTest() { VersionNumber.Parse(string.Empty); } [Test] [ExpectedException(typeof(FormatException))] public void ParseFormatExceptionTest() { VersionNumber.Parse("1.0"); } [Test] [ExpectedException(typeof(FormatException))] public void ParseFormatExceptionForMajorTest() { VersionNumber.Parse("a.0.0"); } [Test] [ExpectedException(typeof(FormatException))] public void ParseExceptionForMajorTest() { // NB : Cette méthode ne retourne pas ArgumentOutOfRangeException // car -1 est considéré comme la partie de prépublication. VersionNumber.Parse("-1.0.0"); } [Test] [ExpectedException(typeof(FormatException))] public void ParseFormatExceptionForMinorTest() { VersionNumber.Parse("0.a.0"); } [Test] [ExpectedException(typeof(FormatException))] public void ParseExceptionForMinorTest() { // NB : Cette méthode ne retourne pas ArgumentOutOfRangeException // car -1 est considéré comme la partie de prépublication. VersionNumber.Parse("0.-1.0"); } [Test] [ExpectedException(typeof(FormatException))] public void ParseFormatExceptionForPatchTest() { VersionNumber.Parse("0.0.a"); } [Test] [ExpectedException(typeof(FormatException))] public void ParseExceptionForPatchTest() { // NB : Cette méthode ne retourne pas ArgumentOutOfRangeException // car -1 est considéré comme la partie de prépublication. VersionNumber.Parse("0.0.-1"); } [Test] [ExpectedException(typeof(FormatException))] public void ParseFormatExceptionPreReleaseAfterBuildTest() { VersionNumber.Parse("1.0.0+build.1-rc.1"); } #endregion #region Operators tests [Test] public void EqualOperatorTest() { Assert.That(VersionNumber.Parse("0.0.0") == VersionNumber.Parse("0.0.0")); Assert.That(!(VersionNumber.Parse("0.0.0") == VersionNumber.Parse("0.0.1"))); Assert.That(VersionNumber.Parse("0.0.0-rc.12") == VersionNumber.Parse("0.0.0-rc.12")); Assert.That(!(VersionNumber.Parse("0.0.0-rc.12") == VersionNumber.Parse("0.0.1-rc"))); Assert.That(VersionNumber.Parse("0.0.0+b99") == VersionNumber.Parse("0.0.0+b99")); Assert.That(!(VersionNumber.Parse("0.0.0+b") == VersionNumber.Parse("0.0.1+c"))); Assert.That(VersionNumber.Parse("0.0.0-a+b") == VersionNumber.Parse("0.0.0-a+b")); Assert.That(!(VersionNumber.Parse("0.0.0-a+b") == VersionNumber.Parse("0.0.1-a+c"))); } [Test] public void DifferentOperatorTest() { Assert.That(!(VersionNumber.Parse("0.0.0") != VersionNumber.Parse("0.0.0"))); Assert.That(VersionNumber.Parse("0.0.0") != VersionNumber.Parse("0.0.1")); Assert.That(!(VersionNumber.Parse("0.0.0-rc.12") != VersionNumber.Parse("0.0.0-rc.12"))); Assert.That(VersionNumber.Parse("0.0.0-rc.12") != VersionNumber.Parse("0.0.1-rc")); Assert.That(!(VersionNumber.Parse("0.0.0+b99") != VersionNumber.Parse("0.0.0+b99"))); Assert.That(VersionNumber.Parse("0.0.0+b") != VersionNumber.Parse("0.0.1+c")); Assert.That(!(VersionNumber.Parse("0.0.0-a+b") != VersionNumber.Parse("0.0.0-a+b"))); Assert.That(VersionNumber.Parse("0.0.0-a+b") != VersionNumber.Parse("0.0.1-a+c")); } [Test] public void LessThanOperatorTest() { // Major : Assert.That(VersionNumber.Parse("1.0.0") < VersionNumber.Parse("2.0.0")); // Minor : Assert.That(VersionNumber.Parse("1.1.0") < VersionNumber.Parse("1.2.0")); // Patch : Assert.That(VersionNumber.Parse("1.1.1") < VersionNumber.Parse("1.1.2")); // PreRelease : Assert.That(VersionNumber.Parse("1.0.0-ReleaseCandidate.1") < VersionNumber.Parse("1.0.0")); Assert.That(VersionNumber.Parse("1.0.0-ReleaseCandidate.1") < VersionNumber.Parse("1.0.0-ZeleaseCandidate")); Assert.That(VersionNumber.Parse("1.0.0-ReleaseCandidate.2") < VersionNumber.Parse("1.0.0-ReleaseCandidate.11")); // Build : Assert.That(VersionNumber.Parse("1.0.0") < VersionNumber.Parse("1.0.0+Build.1")); Assert.That(VersionNumber.Parse("1.0.0+Build.1") < VersionNumber.Parse("1.0.0+Zuild")); Assert.That(VersionNumber.Parse("1.0.0+Build.2") < VersionNumber.Parse("1.0.0+Build.11")); // PreRelease & Build : Assert.That(VersionNumber.Parse("1.0.0-RC.34+Build.r4td6h7") < VersionNumber.Parse("1.0.0")); Assert.That(VersionNumber.Parse("1.0.0-RC.34+Build.r4td6h7") < VersionNumber.Parse("1.0.0+Build.r4td6h7")); } [Test] public void GreaterThanOperatorTest() { // Major : Assert.That(VersionNumber.Parse("2.0.0") > VersionNumber.Parse("1.0.0")); // Minor : Assert.That(VersionNumber.Parse("1.2.0") > VersionNumber.Parse("1.1.0")); // Patch : Assert.That(VersionNumber.Parse("1.1.2") > VersionNumber.Parse("1.1.1")); // PreRelease : Assert.That(VersionNumber.Parse("1.0.0") > VersionNumber.Parse("1.0.0-ReleaseCandidate.1")); Assert.That(VersionNumber.Parse("1.0.0-ZeleaseCandidate") > VersionNumber.Parse("1.0.0-ReleaseCandidate.1")); Assert.That(VersionNumber.Parse("1.0.0-ReleaseCandidate.11") > VersionNumber.Parse("1.0.0-ReleaseCandidate.2")); // Build : Assert.That(VersionNumber.Parse("1.0.0+Build.1") > VersionNumber.Parse("1.0.0")); Assert.That(VersionNumber.Parse("1.0.0+Zuild") > VersionNumber.Parse("1.0.0+Build.1")); Assert.That(VersionNumber.Parse("1.0.0+Build.11") > VersionNumber.Parse("1.0.0+Build.2")); // PreRelease & Build : Assert.That(VersionNumber.Parse("1.0.0") > VersionNumber.Parse("1.0.0-RC.34+Build.r4td6h7")); Assert.That(VersionNumber.Parse("1.0.0+Build.r4td6h7") > VersionNumber.Parse("1.0.0-RC.34+Build.r4td6h7")); } [Test] public void LessThanOrEqualOperatorTest() { // Major : Assert.That(VersionNumber.Parse("1.0.0") <= VersionNumber.Parse("2.0.0")); Assert.That(VersionNumber.Parse("1.0.0") <= VersionNumber.Parse("1.0.0")); // Minor : Assert.That(VersionNumber.Parse("1.1.0") <= VersionNumber.Parse("1.2.0")); Assert.That(VersionNumber.Parse("1.1.0") <= VersionNumber.Parse("1.1.0")); // Patch : Assert.That(VersionNumber.Parse("1.1.1") <= VersionNumber.Parse("1.1.2")); Assert.That(VersionNumber.Parse("1.1.1") <= VersionNumber.Parse("1.1.1")); // PreRelease : Assert.That(VersionNumber.Parse("1.0.0-ReleaseCandidate.1") <= VersionNumber.Parse("1.0.0")); Assert.That(VersionNumber.Parse("1.0.0-ReleaseCandidate.1") <= VersionNumber.Parse("1.0.0-ReleaseCandidate.1")); Assert.That(VersionNumber.Parse("1.0.0-ReleaseCandidate.1") <= VersionNumber.Parse("1.0.0-ZeleaseCandidate")); Assert.That(VersionNumber.Parse("1.0.0-ZeleaseCandidate") <= VersionNumber.Parse("1.0.0-ZeleaseCandidate")); Assert.That(VersionNumber.Parse("1.0.0-ReleaseCandidate.2") <= VersionNumber.Parse("1.0.0-ReleaseCandidate.11")); Assert.That(VersionNumber.Parse("1.0.0-ReleaseCandidate.11") <= VersionNumber.Parse("1.0.0-ReleaseCandidate.11")); // Build : Assert.That(VersionNumber.Parse("1.0.0") <= VersionNumber.Parse("1.0.0+Build.1")); Assert.That(VersionNumber.Parse("1.0.0+Build.1") <= VersionNumber.Parse("1.0.0+Build.1")); Assert.That(VersionNumber.Parse("1.0.0+Build.1") <= VersionNumber.Parse("1.0.0+Zuild")); Assert.That(VersionNumber.Parse("1.0.0+Zuild") <= VersionNumber.Parse("1.0.0+Zuild")); Assert.That(VersionNumber.Parse("1.0.0+Build.2") <= VersionNumber.Parse("1.0.0+Build.11")); Assert.That(VersionNumber.Parse("1.0.0+Build.11") <= VersionNumber.Parse("1.0.0+Build.11")); // PreRelease & Build : Assert.That(VersionNumber.Parse("1.0.0-RC.34+Build.r4td6h7") <= VersionNumber.Parse("1.0.0")); Assert.That(VersionNumber.Parse("1.0.0-RC.34+Build.r4td6h7") <= VersionNumber.Parse("1.0.0-RC.34+Build.r4td6h7")); Assert.That(VersionNumber.Parse("1.0.0-RC.34+Build.r4td6h7") <= VersionNumber.Parse("1.0.0+Build.r4td6h7")); } [Test] public void GreaterThanOrEqualOperatorTest() { // Major : Assert.That(VersionNumber.Parse("2.0.0") >= VersionNumber.Parse("1.0.0")); Assert.That(VersionNumber.Parse("1.0.0") >= VersionNumber.Parse("1.0.0")); // Minor : Assert.That(VersionNumber.Parse("1.2.0") >= VersionNumber.Parse("1.1.0")); Assert.That(VersionNumber.Parse("1.1.0") >= VersionNumber.Parse("1.1.0")); // Patch : Assert.That(VersionNumber.Parse("1.1.2") >= VersionNumber.Parse("1.1.1")); Assert.That(VersionNumber.Parse("1.1.1") >= VersionNumber.Parse("1.1.1")); // PreRelease : Assert.That(VersionNumber.Parse("1.0.0") >= VersionNumber.Parse("1.0.0-ReleaseCandidate.1")); Assert.That(VersionNumber.Parse("1.0.0-ReleaseCandidate.1") >= VersionNumber.Parse("1.0.0-ReleaseCandidate.1")); Assert.That(VersionNumber.Parse("1.0.0-ZeleaseCandidate") >= VersionNumber.Parse("1.0.0-ReleaseCandidate.1")); Assert.That(VersionNumber.Parse("1.0.0-ZeleaseCandidate") >= VersionNumber.Parse("1.0.0-ZeleaseCandidate")); Assert.That(VersionNumber.Parse("1.0.0-ReleaseCandidate.11") >= VersionNumber.Parse("1.0.0-ReleaseCandidate.2")); Assert.That(VersionNumber.Parse("1.0.0-ReleaseCandidate.11") >= VersionNumber.Parse("1.0.0-ReleaseCandidate.11")); // Build : Assert.That(VersionNumber.Parse("1.0.0+Build.1") >= VersionNumber.Parse("1.0.0")); Assert.That(VersionNumber.Parse("1.0.0+Build.1") >= VersionNumber.Parse("1.0.0+Build.1")); Assert.That(VersionNumber.Parse("1.0.0+Zuild") >= VersionNumber.Parse("1.0.0+Build.1")); Assert.That(VersionNumber.Parse("1.0.0+Zuild") >= VersionNumber.Parse("1.0.0+Zuild")); Assert.That(VersionNumber.Parse("1.0.0+Build.11") >= VersionNumber.Parse("1.0.0+Build.2")); Assert.That(VersionNumber.Parse("1.0.0+Build.11") >= VersionNumber.Parse("1.0.0+Build.11")); // PreRelease & Build : Assert.That(VersionNumber.Parse("1.0.0") >= VersionNumber.Parse("1.0.0-RC.34+Build.r4td6h7")); Assert.That(VersionNumber.Parse("1.0.0-RC.34+Build.r4td6h7") >= VersionNumber.Parse("1.0.0-RC.34+Build.r4td6h7")); Assert.That(VersionNumber.Parse("1.0.0+Build.r4td6h7") >= VersionNumber.Parse("1.0.0-RC.34+Build.r4td6h7")); } #endregion [Test] public void SemVerSpec12ExampleTest() { // Given : List versionNumberList = new List(11); versionNumberList.Add(new VersionNumber(1, 0, 0)); versionNumberList.Add(new VersionNumber(1, 0, 0, "rc.1", string.Empty)); versionNumberList.Add(new VersionNumber(1, 0, 0, string.Empty, "0.3.7")); versionNumberList.Add(new VersionNumber(1, 0, 0, "alpha", string.Empty)); versionNumberList.Add(new VersionNumber(1, 3, 7, string.Empty, "build")); versionNumberList.Add(new VersionNumber(1, 0, 0, "beta.2", string.Empty)); versionNumberList.Add(new VersionNumber(1, 0, 0, "beta.11", string.Empty)); versionNumberList.Add(new VersionNumber(1, 0, 0, "alpha.1", string.Empty)); versionNumberList.Add(new VersionNumber(1, 0, 0, "rc.1", "build.1")); versionNumberList.Add(new VersionNumber(1, 3, 7, string.Empty, "build.2.b8f12d7")); versionNumberList.Add(new VersionNumber(1, 3, 7, string.Empty, "build.11.e0f985a")); List expectedSort = new List(11); expectedSort.Add("1.0.0-alpha"); expectedSort.Add("1.0.0-alpha.1"); expectedSort.Add("1.0.0-beta.2"); expectedSort.Add("1.0.0-beta.11"); expectedSort.Add("1.0.0-rc.1"); expectedSort.Add("1.0.0-rc.1+build.1"); expectedSort.Add("1.0.0"); expectedSort.Add("1.0.0+0.3.7"); expectedSort.Add("1.3.7+build"); expectedSort.Add("1.3.7+build.2.b8f12d7"); expectedSort.Add("1.3.7+build.11.e0f985a"); List actualSort = new List(11); // When : versionNumberList.Sort(); foreach (VersionNumber vn in versionNumberList) actualSort.Add(vn.ToString()); // Then : CollectionAssert.AreEqual(expectedSort, actualSort); } } }