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 () {}
20 public void TestCtors ()
27 AssertEquals ("A1", 0, v1.Major);
28 AssertEquals ("A2", 0, v1.Minor);
29 AssertEquals ("A3", -1, v1.Build);
30 AssertEquals ("A4", -1, v1.Revision);
33 v1
= new Version (23, 7);
34 AssertEquals ("A5", 23, v1
.Major
);
35 AssertEquals ("A6", 7, v1
.Minor
);
36 AssertEquals ("A7", -1, v1
.Build
);
37 AssertEquals ("A8", -1, v1
.Revision
);
39 v1
= new Version (23, 7, 99);
40 AssertEquals ("A9", 23, v1
.Major
);
41 AssertEquals ("A10", 7, v1
.Minor
);
42 AssertEquals ("A11", 99, v1
.Build
);
43 AssertEquals ("A12", -1, v1
.Revision
);
45 v1
= new Version (23, 7, 99, 42);
46 AssertEquals ("A13", 23, v1
.Major
);
47 AssertEquals ("A14", 7, v1
.Minor
);
48 AssertEquals ("A15", 99, v1
.Build
);
49 AssertEquals ("A16", 42, v1
.Revision
);
52 v1
= new Version (23, -1);
55 catch (ArgumentOutOfRangeException
) {
58 Assert ("A17", exception
);
61 v1
= new Version (23, 7, -1);
64 catch (ArgumentOutOfRangeException
) {
67 Assert ("A18", exception
);
70 v1
= new Version (23, 7, 99, -1);
73 catch (ArgumentOutOfRangeException
) {
76 Assert ("A19", exception
);
80 public void TestStringCtor ()
85 v1
= new Version("1.42.79");
86 AssertEquals ("A1", 1, v1
.Major
);
87 AssertEquals ("A2", 42, v1
.Minor
);
88 AssertEquals ("A3", 79, v1
.Build
);
89 AssertEquals ("A4", -1, v1
.Revision
);
93 v1
= new Version ("1.42.-79");
96 catch (ArgumentOutOfRangeException
) {
99 Assert ("A5", exception
);
102 v1
= new Version ("1");
105 catch (ArgumentException
) {
108 Assert ("A6", exception
);
111 v1
= new Version ("1.2.3.4.5");
114 catch (ArgumentException
) {
117 Assert ("A7", exception
);
120 v1
= new Version ((string) null);
123 catch (ArgumentNullException
) {
126 Assert ("A6", exception
);
131 public void TestClone ()
133 Version v1
= new Version (1, 2, 3, 4);
134 Version v2
= (Version
) v1
.Clone ();
136 Assert ("A1", v1
.Equals (v2
));
137 Assert ("A2", !ReferenceEquals (v1
, v2
));
139 Version v3
= new Version (); // 0.0
140 v2
= (Version
) v3
.Clone ();
142 Assert ("A3", v3
.Equals (v2
));
143 Assert ("A4", !ReferenceEquals (v3
, v2
));
146 public void TestCompareTo ()
148 Assert ("A1", new Version (1, 2).CompareTo (new Version (1, 1)) > 0);
149 Assert ("A2", new Version (1, 2, 3).CompareTo (new Version (2, 2, 3)) < 0);
150 Assert ("A3", new Version (1, 2, 3, 4).CompareTo (new Version (1, 2, 2, 1)) > 0);
152 Assert ("A4", new Version (1, 3).CompareTo (new Version (1, 2, 2, 1)) > 0);
153 Assert ("A5", new Version (1, 2, 2).CompareTo (new Version (1, 2, 2, 1)) < 0);
155 Assert ("A6", new Version (1, 2).CompareTo (new Version (1, 2)) == 0);
156 Assert ("A7", new Version (1, 2, 3).CompareTo (new Version (1, 2, 3)) == 0);
158 Assert ("A8", new Version (1, 1) < new Version (1, 2));
159 Assert ("A9", new Version (1, 2) <= new Version (1, 2));
160 Assert ("A10", new Version (1, 2) <= new Version (1, 3));
161 Assert ("A11", new Version (1, 2) >= new Version (1, 2));
162 Assert ("A12", new Version (1, 3) >= new Version (1, 2));
163 Assert ("A13", new Version (1, 3) > new Version (1, 2));
165 Version v1
= new Version(1, 2);
168 // LAMESPEC: Docs say this should throw a ArgumentNullException,
169 // but it simply works. Seems any version is subsequent to null
170 Assert ("A14:", v1
.CompareTo (null) > 0);
173 v1
.CompareTo ("A string is not a version");
176 catch (ArgumentException
) {
179 Assert ("A15", exception
);
184 public void TestEquals ()
186 Version v1
= new Version (1, 2);
187 Version v2
= new Version (1, 2, 3, 4);
188 Version v3
= new Version (1, 2, 3, 4);
190 AssertEquals ("A1", true, v2
.Equals (v3
));
191 AssertEquals ("A2", true, v2
.Equals (v2
));
192 AssertEquals ("A3", false, v1
.Equals (v3
));
194 AssertEquals ("A4", true, v2
== v3
);
195 AssertEquals ("A5", true, v2
== v2
);
196 AssertEquals ("A6", false, v1
== v3
);
198 AssertEquals ("A7", false, v2
.Equals ((Version
) null));
199 AssertEquals ("A8", false, v2
.Equals ("A string"));
203 public void TestToString ()
205 Version v1
= new Version (1,2);
206 Version v2
= new Version (1,2,3);
207 Version v3
= new Version (1,2,3,4);
209 AssertEquals ("A1", "1.2", v1
.ToString ());
210 AssertEquals ("A2", "1.2.3", v2
.ToString ());
211 AssertEquals ("A3", "1.2.3.4", v3
.ToString ());
213 AssertEquals ("A4", "" , v3
.ToString (0));
214 AssertEquals ("A5", "1" , v3
.ToString (1));
215 AssertEquals ("A6", "1.2" , v3
.ToString (2));
216 AssertEquals ("A7", "1.2.3" , v3
.ToString (3));
217 AssertEquals ("A8", "1.2.3.4" , v3
.ToString (4));
225 catch (ArgumentException
) {
228 Assert ("A9", exception
);
234 catch (ArgumentException
) {
237 Assert ("A10", exception
);