2 // VersionTest.cs - NUnit Test Cases for the System.Version class
5 // Duco Fijma (duco@lorentz.xs4all.nl)
10 using NUnit.Framework;
13 namespace MonoTests.System
16 public class VersionTest : TestCase
18 public VersionTest () : base ("MonoTests.System.VersionTest testcase") {}
19 public VersionTest (string name) : base (name) {}
21 public static ITest Suite {
23 return new TestSuite (typeof (VersionTest));
28 public void TestCtors ()
35 AssertEquals ("A1", 0, v1.Major);
36 AssertEquals ("A2", 0, v1.Minor);
37 AssertEquals ("A3", -1, v1.Build);
38 AssertEquals ("A4", -1, v1.Revision);
41 v1 = new Version (23, 7);
42 AssertEquals ("A5", 23, v1.Major);
43 AssertEquals ("A6", 7, v1.Minor);
44 AssertEquals ("A7", -1, v1.Build);
45 AssertEquals ("A8", -1, v1.Revision);
47 v1 = new Version (23, 7, 99);
48 AssertEquals ("A9", 23, v1.Major);
49 AssertEquals ("A10", 7, v1.Minor);
50 AssertEquals ("A11", 99, v1.Build);
51 AssertEquals ("A12", -1, v1.Revision);
53 v1 = new Version (23, 7, 99, 42);
54 AssertEquals ("A13", 23, v1.Major);
55 AssertEquals ("A14", 7, v1.Minor);
56 AssertEquals ("A15", 99, v1.Build);
57 AssertEquals ("A16", 42, v1.Revision);
60 v1 = new Version (23, -1);
63 catch (ArgumentOutOfRangeException) {
66 Assert ("A17", exception);
69 v1 = new Version (23, 7, -1);
72 catch (ArgumentOutOfRangeException) {
75 Assert ("A18", exception);
78 v1 = new Version (23, 7, 99, -1);
81 catch (ArgumentOutOfRangeException) {
84 Assert ("A19", exception);
88 public void TestStringCtor ()
93 v1 = new Version("1.42.79");
94 AssertEquals ("A1", 1, v1.Major);
95 AssertEquals ("A2", 42, v1.Minor);
96 AssertEquals ("A3", 79, v1.Build);
97 AssertEquals ("A4", -1, v1.Revision);
101 v1 = new Version ("1.42.-79");
104 catch (ArgumentOutOfRangeException) {
107 Assert ("A5", exception);
110 v1 = new Version ("1");
113 catch (ArgumentException) {
116 Assert ("A6", exception);
119 v1 = new Version ("1.2.3.4.5");
122 catch (ArgumentException) {
125 Assert ("A7", exception);
128 v1 = new Version ((string) null);
131 catch (ArgumentNullException) {
134 Assert ("A6", exception);
139 public void TestClone ()
141 Version v1 = new Version (1, 2, 3, 4);
142 Version v2 = (Version) v1.Clone ();
144 Assert ("A1", v1.Equals (v2));
145 Assert ("A2", !ReferenceEquals (v1, v2));
148 public void TestCompareTo ()
150 Assert ("A1", new Version (1, 2).CompareTo (new Version (1, 1)) > 0);
151 Assert ("A2", new Version (1, 2, 3).CompareTo (new Version (2, 2, 3)) < 0);
152 Assert ("A3", new Version (1, 2, 3, 4).CompareTo (new Version (1, 2, 2, 1)) > 0);
154 Assert ("A4", new Version (1, 3).CompareTo (new Version (1, 2, 2, 1)) > 0);
155 Assert ("A5", new Version (1, 2, 2).CompareTo (new Version (1, 2, 2, 1)) < 0);
157 Assert ("A6", new Version (1, 2).CompareTo (new Version (1, 2)) == 0);
158 Assert ("A7", new Version (1, 2, 3).CompareTo (new Version (1, 2, 3)) == 0);
160 Assert ("A8", new Version (1, 1) < new Version (1, 2));
161 Assert ("A9", new Version (1, 2) <= new Version (1, 2));
162 Assert ("A10", new Version (1, 2) <= new Version (1, 3));
163 Assert ("A11", new Version (1, 2) >= new Version (1, 2));
164 Assert ("A12", new Version (1, 3) >= new Version (1, 2));
165 Assert ("A13", new Version (1, 3) > new Version (1, 2));
167 Version v1 = new Version(1, 2);
170 // LAMESPEC: Docs say this should throw a ArgumentNullException,
171 // but it simply works. Seems any version is subsequent to null
172 Assert ("A14:", v1.CompareTo (null) > 0);
175 v1.CompareTo ("A string is not a version");
178 catch (ArgumentException) {
181 Assert ("A15", exception);
186 public void TestEquals ()
188 Version v1 = new Version (1, 2);
189 Version v2 = new Version (1, 2, 3, 4);
190 Version v3 = new Version (1, 2, 3, 4);
192 AssertEquals ("A1", true, v2.Equals (v3));
193 AssertEquals ("A2", true, v2.Equals (v2));
194 AssertEquals ("A3", false, v1.Equals (v3));
196 AssertEquals ("A4", true, v2 == v3);
197 AssertEquals ("A5", true, v2 == v2);
198 AssertEquals ("A6", false, v1 == v3);
200 AssertEquals ("A7", false, v2.Equals ((Version) null));
201 AssertEquals ("A8", false, v2.Equals ("A string"));
205 public void TestToString ()
207 Version v1 = new Version (1,2);
208 Version v2 = new Version (1,2,3);
209 Version v3 = new Version (1,2,3,4);
211 AssertEquals ("A1", "1.2", v1.ToString ());
212 AssertEquals ("A2", "1.2.3", v2.ToString ());
213 AssertEquals ("A3", "1.2.3.4", v3.ToString ());
215 AssertEquals ("A4", "" , v3.ToString (0));
216 AssertEquals ("A5", "1" , v3.ToString (1));
217 AssertEquals ("A6", "1.2" , v3.ToString (2));
218 AssertEquals ("A7", "1.2.3" , v3.ToString (3));
219 AssertEquals ("A8", "1.2.3.4" , v3.ToString (4));
227 catch (ArgumentException) {
230 Assert ("A9", exception);
236 catch (ArgumentException) {
239 Assert ("A10", exception);