2002-06-07 Nick Drochak <ndrochak@gol.com>
[mono.git] / mcs / class / corlib / Test / System / VersionTest.cs
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 //
9
10 using NUnit.Framework;
11 using System;
12
13 namespace MonoTests.System
14 {
15
16 public class VersionTest : TestCase
17 {
18         public VersionTest () : base ("MonoTests.System.VersionTest testcase") {}
19         public VersionTest (string name) : base (name) {}
20
21         public static ITest Suite {
22                 get {
23                         return new TestSuite (typeof (VersionTest));
24                 }
25         }
26
27
28         public void TestCtors ()
29         {
30                 Version v1;
31                 bool exception;
32                 
33                 /*
34                 v1 = new Version ();
35                 AssertEquals ("A1", 0, v1.Major);
36                 AssertEquals ("A2", 0, v1.Minor);
37                 AssertEquals ("A3", -1, v1.Build);
38                 AssertEquals ("A4", -1, v1.Revision);
39         */
40
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);
46
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);
52
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);
58                 
59                 try {   
60                         v1 = new Version (23, -1);
61                         exception = false;
62                 }
63                 catch (ArgumentOutOfRangeException) {
64                         exception = true;
65                 }
66                 Assert ("A17", exception);
67
68                 try {   
69                         v1 = new Version (23, 7, -1);
70                         exception = false;
71                 }
72                 catch (ArgumentOutOfRangeException) {
73                         exception = true;
74                 }
75                 Assert ("A18", exception);
76
77                 try {   
78                         v1 = new Version (23, 7, 99, -1);
79                         exception = false;
80                 }
81                 catch (ArgumentOutOfRangeException) {
82                         exception = true;
83                 }
84                 Assert ("A19", exception);
85                 
86         }
87
88         public void TestStringCtor () 
89         {
90                 Version v1;
91                 bool exception;
92                 
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);
98                 
99
100                 try {   
101                         v1 = new Version ("1.42.-79");
102                         exception = false;
103                 }
104                 catch (ArgumentOutOfRangeException) {
105                         exception = true;
106                 }
107                 Assert ("A5", exception);
108
109                 try {   
110                         v1 = new Version ("1");
111                         exception = false;
112                 }
113                 catch (ArgumentException) {
114                         exception = true;
115                 }
116                 Assert ("A6", exception);
117
118                 try {   
119                         v1 = new Version ("1.2.3.4.5");
120                         exception = false;
121                 }
122                 catch (ArgumentException) {
123                         exception = true;
124                 }
125                 Assert ("A7", exception);
126
127                 try {   
128                         v1 = new Version ((string) null);
129                         exception = false;
130                 }
131                 catch (ArgumentNullException) {
132                         exception = true;
133                 }
134                 Assert ("A6", exception);
135
136
137         }
138
139         public void TestClone () 
140         {
141                 Version v1 = new Version (1, 2, 3, 4);
142                 Version v2 = (Version) v1.Clone ();
143
144                 Assert ("A1", v1.Equals (v2));
145                 Assert ("A2", !ReferenceEquals (v1, v2));
146         }
147
148         public void TestCompareTo ()
149         {
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);
153
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);
156
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);
159
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));
166
167                 Version v1 = new Version(1, 2);
168                 bool exception;
169
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);
173
174                 try {
175                         v1.CompareTo ("A string is not a version");
176                         exception = false;
177                 }
178                 catch (ArgumentException) {
179                         exception = true;
180                 }
181                 Assert ("A15", exception);
182                 
183         }
184         
185
186         public void TestEquals ()
187         {
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);
191
192                 AssertEquals ("A1", true, v2.Equals (v3));
193                 AssertEquals ("A2", true, v2.Equals (v2));
194                 AssertEquals ("A3", false, v1.Equals (v3));
195
196                 AssertEquals ("A4", true, v2 == v3);
197                 AssertEquals ("A5", true, v2 == v2);
198                 AssertEquals ("A6", false, v1 == v3);
199
200                 AssertEquals ("A7", false, v2.Equals ((Version) null));
201                 AssertEquals ("A8", false, v2.Equals ("A string"));
202                 
203         }
204
205         public void TestToString ()
206         {
207                 Version v1 = new Version (1,2);
208                 Version v2 = new Version (1,2,3);
209                 Version v3 = new Version (1,2,3,4);
210                 
211                 AssertEquals ("A1", "1.2", v1.ToString ());
212                 AssertEquals ("A2", "1.2.3", v2.ToString ());
213                 AssertEquals ("A3", "1.2.3.4", v3.ToString ());
214
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));
220
221                 bool exception;
222
223                 try {
224                         v2.ToString (4);
225                         exception = false;
226                 }
227                 catch (ArgumentException) {
228                         exception = true;
229                 }
230                 Assert ("A9", exception);
231
232                 try {
233                         v3.ToString (42);
234                         exception = false;
235                 }
236                 catch (ArgumentException) {
237                         exception = true;
238                 }
239                 Assert ("A10", exception);
240         }
241
242 }
243
244 }