fixed tests
[mono.git] / mcs / class / System.Data / Test / System.Data.SqlTypes / SqlGuidTest.cs
1 //\r
2 // SqlGuidTest.cs - NUnit Test Cases for System.Data.SqlTypes.SqlGuid\r
3 //\r
4 // Authors:\r
5 //   Ville Palo (vi64pa@koti.soon.fi)\r
6 //   Martin Willemoes Hansen (mwh@sysrq.dk)\r
7 //\r
8 // (C) 2002 Ville Palo\r
9 // (C) 2003 Martin Willemoes Hansen\r
10 // \r
11
12 //
13 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
14 //
15 // Permission is hereby granted, free of charge, to any person obtaining
16 // a copy of this software and associated documentation files (the
17 // "Software"), to deal in the Software without restriction, including
18 // without limitation the rights to use, copy, modify, merge, publish,
19 // distribute, sublicense, and/or sell copies of the Software, and to
20 // permit persons to whom the Software is furnished to do so, subject to
21 // the following conditions:
22 // 
23 // The above copyright notice and this permission notice shall be
24 // included in all copies or substantial portions of the Software.
25 // 
26 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
27 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
28 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
29 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
30 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
31 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
32 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
33 //
34 \r
35 using NUnit.Framework;\r
36 using System;\r
37 using System.Data.SqlTypes;\r
38 \r
39 namespace MonoTests.System.Data.SqlTypes\r
40 {\r
41         [TestFixture]\r
42         public class SqlGuidTest : Assertion {\r
43 \r
44                 // 00000a01-0000-0000-0000-000000000000\r
45                 private SqlGuid Test1;\r
46 \r
47                 // 00000f64-0000-0000-0000-000000000000\r
48                 private SqlGuid Test2;          \r
49                 private SqlGuid Test3;\r
50 \r
51                 // 0000fafa-0000-0000-0000-000000000000\r
52                 private SqlGuid Test4;\r
53                 \r
54                 [SetUp]\r
55                 public void GetReady() \r
56                 {\r
57                         byte [] b1 = new byte [16];\r
58                         byte [] b2 = new byte [16];\r
59                         byte [] b3 = new byte [16];\r
60                         byte [] b4 = new byte [16];\r
61 \r
62                         b1 [0] = 1;\r
63                         b1 [1] = 10;\r
64                         b2 [0] = 100;\r
65                         b2 [1] = 15;\r
66                         b3 [0] = 100;\r
67                         b3 [1] = 15;\r
68                         b4 [0] = 250;\r
69                         b4 [1] = 250;\r
70 \r
71                         Test1 = new SqlGuid (b1);\r
72                         Test2 = new SqlGuid (b2);\r
73                         Test3 = new SqlGuid (b3);\r
74                         Test4 = new SqlGuid (b4);\r
75                 }\r
76 \r
77                 // Test constructor\r
78                 [Test]\r
79                 public void Create()\r
80                 {\r
81                         // SqlGuid (Byte[])\r
82                         byte [] b = new byte [16];\r
83                         b [0] = 100;\r
84                         b [1] = 200;\r
85 \r
86                         try {\r
87                                 SqlGuid Test = new SqlGuid (b);\r
88 \r
89                                 // SqlGuid (Guid)\r
90                                 Guid TestGuid = new Guid (b);\r
91                                 Test = new SqlGuid (TestGuid);\r
92 \r
93                                 // SqlGuid (string)\r
94                                 Test = new SqlGuid ("12345678-1234-1234-1234-123456789012");\r
95 \r
96                                 // SqlGuid (int, short, short, byte, byte, byte, byte, byte, byte, byte, byte)\r
97                                 Test = new SqlGuid (10, 1, 2, 13, 14, 15, 16, 17, 19, 20 ,21);\r
98 \r
99                         } catch (Exception e) {\r
100                                 Fail ("#A01 " + e);\r
101                         }\r
102                 }\r
103 \r
104                 // Test public fields\r
105                 [Test]\r
106                 public void PublicFields()\r
107                 {\r
108                         Assert ("#B01", SqlGuid.Null.IsNull);\r
109                 }\r
110 \r
111                 // Test properties\r
112                 [Test]\r
113                 public void Properties()\r
114                 {\r
115                         Guid ResultGuid = new Guid ("00000f64-0000-0000-0000-000000000000");                   \r
116                         Assert ("#C01", !Test1.IsNull);\r
117                         Assert ("#C02", SqlGuid.Null.IsNull);\r
118                         AssertEquals ("#C03", ResultGuid, Test2.Value);\r
119                 }\r
120 \r
121                 // PUBLIC METHODS\r
122                 [Test]\r
123                 public void CompareTo()\r
124                 {\r
125                         String TestString = "This is a test string";\r
126                         SqlGuid test1 = new SqlGuid("1AAAAAAA-BBBB-CCCC-DDDD-3EEEEEEEEEEE");\r
127                         SqlGuid test2 = new SqlGuid("1AAAAAAA-BBBB-CCCC-DDDD-2EEEEEEEEEEE");\r
128                         SqlGuid test3 = new SqlGuid("1AAAAAAA-BBBB-CCCC-DDDD-1EEEEEEEEEEE");\r
129                         Assert ("#D01", Test1.CompareTo (Test3) <  0);\r
130                         Assert ("#D02", Test4.CompareTo (Test1) > 0);\r
131                         Assert ("#D03", Test3.CompareTo (Test2) == 0);\r
132                         Assert ("#D04", Test4.CompareTo (SqlGuid.Null) > 0);\r
133                         Assert ("#D05", test1.CompareTo (test2) >  0);\r
134                         Assert ("#D06", test3.CompareTo (test2) <  0);\r
135                         \r
136                         try {\r
137                                 Test1.CompareTo (TestString);\r
138                                 Fail("#D05");\r
139                         } catch(Exception e) {\r
140                                 AssertEquals ("#D06", typeof (ArgumentException), e.GetType ());\r
141                         }\r
142                 }\r
143 \r
144                 [Test]\r
145                 public void EqualsMethods()\r
146                 {\r
147                         Assert ("#E01", !Test1.Equals (Test2));\r
148                         Assert ("#E02", !Test2.Equals (Test4));\r
149                         Assert ("#E03", !Test2.Equals (new SqlString ("TEST")));\r
150                         Assert ("#E04", Test2.Equals (Test3));\r
151 \r
152                         // Static Equals()-method\r
153                         Assert ("#E05", SqlGuid.Equals (Test2, Test3).Value);\r
154                         Assert ("#E06", !SqlGuid.Equals (Test1, Test2).Value);\r
155                 }\r
156 \r
157                 [Test]\r
158                 public void GetHashCodeTest()\r
159                 {\r
160                         AssertEquals ("#F01", Test1.GetHashCode (), Test1.GetHashCode ());\r
161                         Assert ("#F02", Test1.GetHashCode () != Test2.GetHashCode ());\r
162                         AssertEquals ("#F02", Test3.GetHashCode (), Test2.GetHashCode ());\r
163                 }\r
164 \r
165                 [Test]\r
166                 public void GetTypeTest()\r
167                 {\r
168                         AssertEquals ("#G01", "System.Data.SqlTypes.SqlGuid", Test1.GetType ().ToString ());\r
169                         AssertEquals ("#G02", "System.Guid", Test3.Value.GetType ().ToString ());\r
170                 }\r
171 \r
172                 [Test]\r
173                 public void Greaters()\r
174                 {\r
175                         // GreateThan ()\r
176                         Assert ("#H01", !SqlGuid.GreaterThan (Test1, Test2).Value);\r
177                         Assert ("#H02", SqlGuid.GreaterThan (Test2, Test1).Value);\r
178                         Assert ("#H03", !SqlGuid.GreaterThan (Test2, Test3).Value);\r
179                         // GreaterTharOrEqual ()\r
180                         Assert ("#H04", !SqlGuid.GreaterThanOrEqual (Test1, Test2).Value);\r
181                         Assert ("#H05", SqlGuid.GreaterThanOrEqual (Test2, Test1).Value);\r
182                         Assert ("#H06", SqlGuid.GreaterThanOrEqual (Test2, Test3).Value);\r
183                 }\r
184 \r
185                 [Test]\r
186                 public void Lessers()\r
187                 {\r
188                         // LessThan()\r
189                         Assert ("#I01", !SqlGuid.LessThan (Test2, Test3).Value);\r
190                         Assert ("#I02", !SqlGuid.LessThan (Test2, Test1).Value);\r
191                         Assert ("#I03", SqlGuid.LessThan (Test1, Test2).Value);\r
192 \r
193                         // LessThanOrEqual ()\r
194                         Assert ("#I04", SqlGuid.LessThanOrEqual (Test1, Test2).Value);\r
195                         Assert ("#I05", !SqlGuid.LessThanOrEqual (Test2, Test1).Value);\r
196                         Assert ("#I06", SqlGuid.LessThanOrEqual (Test2, Test3).Value);\r
197                         Assert ("#I07", SqlGuid.LessThanOrEqual (Test4, SqlGuid.Null).IsNull);\r
198                 }\r
199 \r
200                 [Test]\r
201                 public void NotEquals()\r
202                 {\r
203                         Assert ("#J01", SqlGuid.NotEquals (Test1, Test2).Value);\r
204                         Assert ("#J02", SqlGuid.NotEquals (Test2, Test1).Value);\r
205                         Assert ("#J03", SqlGuid.NotEquals (Test3, Test1).Value);\r
206                         Assert ("#J04", !SqlGuid.NotEquals (Test3, Test2).Value);                      \r
207                         Assert ("#J05", SqlGuid.NotEquals (SqlGuid.Null, Test2).IsNull);\r
208                 }\r
209 \r
210                 [Test]\r
211                 public void Parse()\r
212                 {\r
213                         try {\r
214                                 SqlGuid.Parse (null);\r
215                                 Fail ("#K01");\r
216                         } catch (Exception e) {\r
217                                 AssertEquals ("#K02", typeof (ArgumentNullException), e.GetType ());\r
218                         }\r
219 \r
220                         try {\r
221                                 SqlGuid.Parse ("not-a-number");\r
222                                 Fail ("#K03");\r
223                         } catch (Exception e) {\r
224                                 AssertEquals ("#K04", typeof (FormatException), e.GetType ());\r
225                         }\r
226 \r
227                          try {\r
228                                 SqlGuid.Parse ("9e400");\r
229                                 Fail ("#K05");\r
230                         } catch (Exception e) {\r
231                                 AssertEquals ("#K06", typeof (FormatException), e.GetType ());\r
232                         }\r
233 \r
234                         AssertEquals("#K07", new Guid("87654321-0000-0000-0000-000000000000"), \r
235                                      SqlGuid.Parse ("87654321-0000-0000-0000-000000000000").Value);\r
236                 }\r
237 \r
238                 [Test]\r
239                 public void Conversions()\r
240                 {\r
241                         // ToByteArray ()\r
242                         AssertEquals ("#L01", (byte)1, Test1.ToByteArray () [0]);\r
243                         AssertEquals ("#L02", (byte)15, Test2.ToByteArray () [1]);\r
244 \r
245                         // ToSqlBinary ()\r
246                         byte [] b = new byte [2]; \r
247                         b [0] = 100;\r
248                         b [1] = 15;\r
249                        \r
250                         AssertEquals ("#L03", new SqlBinary (b), Test3.ToSqlBinary ());\r
251 \r
252                         // ToSqlString ()\r
253                         AssertEquals ("#L04", "00000a01-0000-0000-0000-000000000000",  \r
254                                       Test1.ToSqlString ().Value);\r
255                         AssertEquals ("#L05", "0000fafa-0000-0000-0000-000000000000", \r
256                                       Test4.ToSqlString ().Value);\r
257 \r
258                         // ToString ()\r
259                         AssertEquals ("#L06", "00000a01-0000-0000-0000-000000000000", \r
260                                       Test1.ToString ());\r
261                         AssertEquals ("#L07", "0000fafa-0000-0000-0000-000000000000", \r
262                                       Test4.ToString ());\r
263                 }\r
264 \r
265                 // OPERATORS\r
266 \r
267                 [Test]\r
268                 public void ThanOrEqualOperators()\r
269                 {\r
270                         // == -operator\r
271                         Assert ("#M01", (Test3 == Test2).Value);\r
272                         Assert ("#M02", !(Test1 == Test2).Value);\r
273                         Assert ("#M03", (Test1 == SqlGuid.Null).IsNull);\r
274                         \r
275                         // != -operator\r
276                         Assert ("#M04", !(Test2 != Test3).Value);\r
277                         Assert ("#M05", (Test1 != Test3).Value);\r
278                         Assert ("#M06", (Test1 != SqlGuid.Null).IsNull);\r
279 \r
280                         // > -operator\r
281                         Assert ("#M07", (Test2 > Test1).Value);\r
282                         Assert ("#M08", !(Test1 > Test3).Value);\r
283                         Assert ("#M09", !(Test3 > Test2).Value);\r
284                         Assert ("#M10", (Test1 > SqlGuid.Null).IsNull);\r
285 \r
286                         // >=  -operator\r
287                         Assert ("#M12", !(Test1 >= Test3).Value);\r
288                         Assert ("#M13", (Test3 >= Test1).Value);\r
289                         Assert ("#M14", (Test3 >= Test2).Value);\r
290                         Assert ("#M15", (Test1 >= SqlGuid.Null).IsNull);\r
291 \r
292                         // < -operator\r
293                         Assert ("#M16", !(Test2 < Test1).Value);\r
294                         Assert ("#M17", (Test1 < Test3).Value);\r
295                         Assert ("#M18", !(Test2 < Test3).Value);\r
296                         Assert ("#M19", (Test1 < SqlGuid.Null).IsNull);\r
297 \r
298                         // <= -operator\r
299                         Assert ("#M20", (Test1 <= Test3).Value);\r
300                         Assert ("#M21", !(Test3 <= Test1).Value);\r
301                         Assert ("#M22", (Test2 <= Test3).Value);\r
302                         Assert ("#M23", (Test1 <= SqlGuid.Null).IsNull);\r
303                 }\r
304 \r
305                 [Test]\r
306                 public void SqlBinaryToSqlGuid()\r
307                 {\r
308                         byte [] b = new byte [16];\r
309                         b [0] = 100;\r
310                         b [1] = 200;\r
311                         SqlBinary TestBinary = new SqlBinary (b);\r
312                         \r
313                         AssertEquals ("#N01", new Guid("0000c864-0000-0000-0000-000000000000"), \r
314                                       ((SqlGuid)TestBinary).Value);\r
315                 }\r
316 \r
317                 [Test]\r
318                 public void SqlGuidToGuid()\r
319                 {\r
320                         AssertEquals ("#O01", new Guid("00000a01-0000-0000-0000-000000000000"), \r
321                                       (Guid)Test1);\r
322                         AssertEquals ("#O02", new Guid("00000f64-0000-0000-0000-000000000000"), \r
323                                       (Guid)Test2);\r
324                 }               \r
325 \r
326                 [Test]\r
327                 public void SqlStringToSqlGuid()\r
328                 {\r
329                         SqlString TestString = new SqlString ("Test string");\r
330                         SqlString TestString100 = new SqlString ("0000c864-0000-0000-0000-000000000000");\r
331 \r
332                         AssertEquals ("#P01", new Guid("0000c864-0000-0000-0000-000000000000"), \r
333                                       ((SqlGuid)TestString100).Value);\r
334 \r
335                         try {\r
336                                 SqlGuid test = (SqlGuid)TestString;\r
337                                 Fail ("#P02");\r
338                         } catch(Exception e) {\r
339                                 AssertEquals ("#P03", typeof (FormatException), e.GetType ());\r
340                         }\r
341                 }\r
342                 \r
343                 [Test]\r
344                 public void GuidToSqlGuid()\r
345                 {\r
346                         Guid TestGuid = new Guid("0000c864-0000-0000-0000-000007650000");\r
347                         AssertEquals ("#Q01", new SqlGuid("0000c864-0000-0000-0000-000007650000"), \r
348                                       (SqlGuid)TestGuid);\r
349                 }\r
350         }\r
351 }\r