bovender framework
C# framework that implements MVVM and more
VersioningTest.cs
1 /* VersioningTest.cs
2  * part of Bovender
3  *
4  * Copyright 2014-2018 Daniel Kraus
5  *
6  * Licensed under the Apache License, Version 2.0 (the "License");
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  */
18 using System;
19 using System.Reflection;
20 using Bovender.Versioning;
21 using NUnit.Framework;
22 
23 namespace XLToolbox.Test
24 {
25  [TestFixture]
26  public class VersioningTest
27  {
28  [Test]
29  [TestCase("0.1.2", 0, 1, 2, "", "")]
30  [TestCase("10.20.30-0.0.1", 10, 20, 30, "0.0.1", "")]
31  [TestCase("0.1.2-alpha.1", 0, 1, 2, "alpha.1", "")]
32  [TestCase("0.1.2-0.0.1+githash", 0, 1, 2, "0.0.1", "githash")]
33  [TestCase("0.1.2+githash", 0, 1, 2, "", "githash")]
34  public void ParseSemanticVersion(string version, int major, int minor, int patch,
35  string preRelease, string build)
36  {
37  SemanticVersion semVer = new SemanticVersion(version);
38  Assert.AreEqual(major, semVer.Major, "Major version does not match");
39  Assert.AreEqual(minor, semVer.Minor, "Minor version does not match");
40  Assert.AreEqual(patch, semVer.Patch, "Patch number does not match");
41  Assert.AreEqual(build, semVer.Build, "Build information does not match");
42  }
43 
44  // This used to work when the test was part of Daniel's XL Toolbox
45  // [Test]
46  // public void GetCurrentVersion()
47  // {
48  // Assembly assembly = Assembly.GetExecutingAssembly();
49  // SemanticVersion v = SemanticVersion.CurrentVersion(assembly);
50  // Assert.AreEqual(7, v.Major);
51  // }
52 
53  [Test]
54  [ExpectedException(typeof(InvalidVersionStringException))]
55  public void InvalidVersionThrowsError()
56  {
57  SemanticVersion v = new SemanticVersion("2.0");
58  }
59 
60  [Test]
61  [TestCase("1.0.0", "1.0.1")]
62  [TestCase("1.0.0", "1.1.0")]
63  [TestCase("1.0.1", "2.0.0")]
64  [TestCase("1.1.1", "2.0.0")]
65  [TestCase("1.1.1-0.1.2", "1.1.1")]
66  [TestCase("1.1.1-alpha.10", "1.1.1")]
67  [TestCase("1.1.1-beta.2", "1.1.1")]
68  [TestCase("1.1.1-alpha.2", "1.1.1-beta.1")]
69  [TestCase("1.1.1-rc.1", "1.1.1-rc.2")]
70  public void CompareVersions(string lower, string higher)
71  {
72  SemanticVersion lowerVersion = new SemanticVersion(lower);
73  SemanticVersion higherVersion = new SemanticVersion(higher);
74  Assert.Greater(higherVersion, lowerVersion);
75  Assert.True(lowerVersion < higherVersion);
76  Assert.True(higherVersion > lowerVersion);
77  }
78 
79  [Test]
80  [TestCase("1.0.0")]
81  [TestCase("1.0.0-3.2.1")]
82  [TestCase("1.0.0-alpha.3")]
83  [TestCase("1.0.0-rc.2")]
84  [TestCase("1.0.0+20160507")]
85  [TestCase("1.0.0-alpha.3+20160507")]
86  public void Idempotence(string versionString)
87  {
88  SemanticVersion v = new SemanticVersion(versionString);
89  Assert.AreEqual(versionString, v.ToString());
90  }
91  }
92 }
Class that handles semantic versioning.
override string ToString()
Returns the full version string.