**** Merged from MCS ****
[mono-project.git] / mcs / class / corlib / Test / System / VersionTest.cs
blob2467d963a4854082a1484eef572e6309bf052057
1 //
2 // VersionTest.cs - NUnit Test Cases for the System.Version class
3 //
4 // author:
5 // Duco Fijma (duco@lorentz.xs4all.nl)
6 //
7 // (C) 2002 Duco Fijma
8 //
10 using NUnit.Framework;
11 using System;
13 namespace MonoTests.System
16 public class VersionTest : TestCase
18 public VersionTest () {}
20 public void TestCtors ()
22 Version v1;
23 bool exception;
26 v1 = new Version ();
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);
51 try {
52 v1 = new Version (23, -1);
53 exception = false;
55 catch (ArgumentOutOfRangeException) {
56 exception = true;
58 Assert ("A17", exception);
60 try {
61 v1 = new Version (23, 7, -1);
62 exception = false;
64 catch (ArgumentOutOfRangeException) {
65 exception = true;
67 Assert ("A18", exception);
69 try {
70 v1 = new Version (23, 7, 99, -1);
71 exception = false;
73 catch (ArgumentOutOfRangeException) {
74 exception = true;
76 Assert ("A19", exception);
80 public void TestStringCtor ()
82 Version v1;
83 bool exception;
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);
92 try {
93 v1 = new Version ("1.42.-79");
94 exception = false;
96 catch (ArgumentOutOfRangeException) {
97 exception = true;
99 Assert ("A5", exception);
101 try {
102 v1 = new Version ("1");
103 exception = false;
105 catch (ArgumentException) {
106 exception = true;
108 Assert ("A6", exception);
110 try {
111 v1 = new Version ("1.2.3.4.5");
112 exception = false;
114 catch (ArgumentException) {
115 exception = true;
117 Assert ("A7", exception);
119 try {
120 v1 = new Version ((string) null);
121 exception = false;
123 catch (ArgumentNullException) {
124 exception = true;
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);
166 bool exception;
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);
172 try {
173 v1.CompareTo ("A string is not a version");
174 exception = false;
176 catch (ArgumentException) {
177 exception = true;
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));
219 bool exception;
221 try {
222 v2.ToString (4);
223 exception = false;
225 catch (ArgumentException) {
226 exception = true;
228 Assert ("A9", exception);
230 try {
231 v3.ToString (42);
232 exception = false;
234 catch (ArgumentException) {
235 exception = true;
237 Assert ("A10", exception);