[bcl] Remove more NET_2_0 checks from class libs
[mono.git] / mcs / class / System.Data / Test / System.Data.SqlTypes / SqlBooleanTest.cs
1 // SqlDataTimeTest.cs - NUnit Test Cases for [explain here]
2 //
3 // Authors:
4 //   Ville Palo (vi64pa@users.sourceforge.net)
5 //   Martin Willemoes Hansen
6 //
7 // (C) Ville Palo
8 // 
9
10 //
11 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
12 //
13 // Permission is hereby granted, free of charge, to any person obtaining
14 // a copy of this software and associated documentation files (the
15 // "Software"), to deal in the Software without restriction, including
16 // without limitation the rights to use, copy, modify, merge, publish,
17 // distribute, sublicense, and/or sell copies of the Software, and to
18 // permit persons to whom the Software is furnished to do so, subject to
19 // the following conditions:
20 // 
21 // The above copyright notice and this permission notice shall be
22 // included in all copies or substantial portions of the Software.
23 // 
24 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
25 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
26 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
27 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
28 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
29 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
30 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
31 //
32
33 using NUnit.Framework;
34 using System;
35 using System.Xml;
36 using System.Data.SqlTypes;
37 using System.Threading;
38 using System.Globalization;
39
40 namespace MonoTests.System.Data.SqlTypes
41 {
42
43         [TestFixture]
44         public class SqlBooleanTest {
45                 private SqlBoolean SqlTrue;
46                 private SqlBoolean SqlFalse;
47
48                 [SetUp]
49                 public void GetReady() {
50                         
51                         Thread.CurrentThread.CurrentCulture = new CultureInfo ("en-US");
52                         SqlTrue = new SqlBoolean(true);
53                         SqlFalse = new SqlBoolean(false);
54
55                 }
56
57                 [Test]
58                 public void Create ()
59                 {
60                         SqlBoolean SqlTrue2 = new SqlBoolean(1);
61                         SqlBoolean SqlFalse2 = new SqlBoolean(0);
62
63                         Assert.IsTrue (SqlTrue.Value, "Creation of SqlBoolean failed");
64                         Assert.IsTrue (SqlTrue2.Value, "Creation of SqlBoolean failed");
65                         Assert.IsTrue (!SqlFalse.Value, "Creation of SqlBoolean failed");
66                         Assert.IsTrue (!SqlFalse2.Value, "Creation of SqlBoolean failed");
67
68                 }
69
70                 ////
71                 // PUBLIC STATIC METHODS
72                 //
73
74                 // And
75                 [Test]
76                 public void And() {
77
78                         SqlBoolean SqlTrue2 = new SqlBoolean(true);
79                         SqlBoolean SqlFalse2 = new SqlBoolean(false);
80
81                         // One result value
82                         SqlBoolean sqlResult;
83
84                         // true && false
85                         sqlResult = SqlBoolean.And(SqlTrue, SqlFalse);
86                         Assert.IsTrue (!sqlResult.Value, "And method does not work correctly (true && false)");
87                         sqlResult = SqlBoolean.And(SqlFalse, SqlTrue);
88                         Assert.IsTrue (!sqlResult.Value, "And method does not work correctly (false && true)");
89
90                         // true && true
91                         sqlResult = SqlBoolean.And(SqlTrue, SqlTrue2);
92                         Assert.IsTrue (sqlResult.Value, "And method does not work correctly (true && true)");
93
94                         sqlResult = SqlBoolean.And(SqlTrue, SqlTrue);
95                         Assert.IsTrue (sqlResult.Value, "And method does not work correctly (true && true2)");
96
97                         // false && false
98                         sqlResult = SqlBoolean.And(SqlFalse, SqlFalse2);
99                         Assert.IsTrue (!sqlResult.Value, "And method does not work correctly (false && false)");
100                         sqlResult = SqlBoolean.And(SqlFalse, SqlFalse);
101                         Assert.IsTrue (!sqlResult.Value, "And method does not work correctly (false && false2)");
102
103                 }
104
105                 // NotEquals
106                 [Test]
107                 public void NotEquals() {
108
109                         SqlBoolean SqlTrue2 = new SqlBoolean(true);
110                         SqlBoolean SqlFalse2 = new SqlBoolean(false);
111
112                         SqlBoolean SqlResult;
113
114                         // true != false
115                         SqlResult = SqlBoolean.NotEquals(SqlTrue, SqlFalse);
116                         Assert.IsTrue (SqlResult.Value, "NotEquals method does not work correctly (true != false)");
117                         SqlResult = SqlBoolean.NotEquals(SqlFalse, SqlTrue);
118                         Assert.IsTrue (SqlResult.Value, "NotEquals method does not work correctly (false != true)");
119
120
121                         // true != true
122                         SqlResult = SqlBoolean.NotEquals(SqlTrue, SqlTrue);
123                         Assert.IsTrue (!SqlResult.Value, "NotEquals method does not work correctly (true != true)");
124                         SqlResult = SqlBoolean.NotEquals(SqlTrue, SqlTrue2);
125                         Assert.IsTrue (!SqlResult.Value, "NotEquals method does not work correctly (true != true2)");
126                         // false != false
127                         SqlResult = SqlBoolean.NotEquals(SqlFalse, SqlFalse);
128                         Assert.IsTrue (!SqlResult.Value, "NotEquals method does not work correctly (false != false)");
129                         SqlResult = SqlBoolean.NotEquals(SqlTrue, SqlTrue2);
130                         Assert.IsTrue (!SqlResult.Value, "NotEquals method does not work correctly (false != false2)");
131
132                         // If either instance of SqlBoolean is null, the Value of the SqlBoolean will be Null.
133                         SqlResult = SqlBoolean.NotEquals(SqlBoolean.Null, SqlFalse);
134                         Assert.IsTrue (SqlResult.IsNull, "NotEquals method does not work correctly (Null != false)");
135                         SqlResult = SqlBoolean.NotEquals(SqlTrue, SqlBoolean.Null);
136                         Assert.IsTrue (SqlResult.IsNull, "NotEquals method does not work correctly (false != Null)");
137
138                 }
139
140                 // OnesComplement
141                 [Test]
142                 public void OnesComplement() {
143
144                         SqlBoolean SqlFalse2 = SqlBoolean.OnesComplement(SqlTrue);
145                         Assert.IsTrue (!SqlFalse2.Value, "OnesComplement method does not work correctly");
146
147                         SqlBoolean SqlTrue2 = SqlBoolean.OnesComplement(SqlFalse);
148                         Assert.IsTrue (SqlTrue2.Value, "OnesComplement method does not work correctly");
149
150                 }
151
152                 // Or
153                 [Test]
154                 public void Or() {
155
156                         SqlBoolean SqlTrue2 = new SqlBoolean(true);
157                         SqlBoolean SqlFalse2 = new SqlBoolean(false);
158
159                         SqlBoolean SqlResult;
160
161                         // true || false
162                         SqlResult = SqlBoolean.Or(SqlTrue, SqlFalse);
163                         Assert.IsTrue (SqlResult.Value, "Or method does not work correctly (true || false)");
164                         SqlResult = SqlBoolean.Or(SqlFalse, SqlTrue);
165                         Assert.IsTrue (SqlResult.Value, "Or method does not work correctly (false || true)");
166
167                         // true || true
168                         SqlResult = SqlBoolean.Or(SqlTrue, SqlTrue);
169                         Assert.IsTrue (SqlResult.Value, "Or method does not work correctly (true || true)");
170                         SqlResult = SqlBoolean.Or(SqlTrue, SqlTrue2);
171                         Assert.IsTrue (SqlResult.Value, "Or method does not work correctly (true || true2)");
172
173                         // false || false
174                         SqlResult = SqlBoolean.Or(SqlFalse, SqlFalse);
175                         Assert.IsTrue (!SqlResult.Value, "Or method does not work correctly (false || false)");
176                         SqlResult = SqlBoolean.Or(SqlFalse, SqlFalse2);
177                         Assert.IsTrue (!SqlResult.Value, "Or method does not work correctly (false || false2)");
178
179                 }
180
181
182                 //  Parse
183                 [Test]
184                 public void Parse() {
185
186                         String error = "Parse method does not work correctly ";
187                                                                          
188                         Assert.IsTrue (SqlBoolean.Parse("True").Value, "#1 " + error);
189                         Assert.IsTrue (SqlBoolean.Parse(" True").Value, "#2 " + error);
190                         Assert.IsTrue (SqlBoolean.Parse("True ").Value, "#3 " + error);
191                         Assert.IsTrue (SqlBoolean.Parse("tRuE").Value, "#4 " + error);
192                         Assert.IsTrue (!SqlBoolean.Parse("False").Value, "#5 " + error);
193                         Assert.IsTrue (!SqlBoolean.Parse(" False").Value, "#6 " + error);
194                         Assert.IsTrue (!SqlBoolean.Parse("False ").Value, "#7 " + error);
195                         Assert.IsTrue (!SqlBoolean.Parse("fAlSe").Value, "#8 " + error);
196
197                 }
198
199                 // Xor
200                 [Test]
201                 public void Xor() {
202
203                         SqlBoolean SqlTrue2 = new SqlBoolean(true);
204                         SqlBoolean SqlFalse2 = new SqlBoolean(false);
205
206                         SqlBoolean SqlResult;
207
208                         // true ^ false
209                         SqlResult = SqlBoolean.Xor(SqlTrue, SqlFalse);
210                         Assert.IsTrue (SqlResult.Value, "Xor method does not work correctly (true ^ false)");
211                         SqlResult = SqlBoolean.Xor(SqlFalse, SqlTrue);
212                         Assert.IsTrue (SqlResult.Value, "Xor method does not work correctly (false ^ true)");
213
214                         // true ^ true
215                         SqlResult = SqlBoolean.Xor(SqlTrue, SqlTrue2);
216                         Assert.IsTrue (!SqlResult.Value, "Xor method does not work correctly (true ^ true)");
217
218                         // false ^ false
219                         SqlResult = SqlBoolean.Xor(SqlFalse, SqlFalse2);
220                         Assert.IsTrue (!SqlResult.Value, "Xor method does not work correctly (false ^ false)");
221
222                 }
223
224                 // static Equals
225                 [Test]
226                 public void StaticEquals() {
227
228                         SqlBoolean SqlTrue2 = new SqlBoolean(true);
229                         SqlBoolean SqlFalse2 = new SqlBoolean(false);
230                         String error = "Static Equals method does not work correctly ";
231
232                         Assert.IsTrue (SqlBoolean.Equals(SqlTrue, SqlTrue2).Value, error +  "(true == true)");
233                         Assert.IsTrue (SqlBoolean.Equals(SqlFalse, SqlFalse2).Value, error +  "(false == false)");
234
235                         Assert.IsTrue (!SqlBoolean.Equals(SqlTrue, SqlFalse).Value, error +  "(true == false)");
236                         Assert.IsTrue (!SqlBoolean.Equals(SqlFalse, SqlTrue).Value, error +  "(false == true)");
237
238                         Assert.AreEqual (SqlBoolean.Null, SqlBoolean.Equals(SqlBoolean.Null, SqlFalse), error +  "(null == false)");
239                         Assert.AreEqual (SqlBoolean.Null, SqlBoolean.Equals(SqlTrue, SqlBoolean.Null), error +  "(true == null)");
240
241                 }
242
243                 //
244                 // END OF STATIC METHODS
245                 ////
246
247                 ////
248                 // PUBLIC METHODS
249                 //
250
251                 // CompareTo
252                 [Test]
253                 public void CompareTo() {
254
255                         String error = "CompareTo method does not work correctly";
256
257                         Assert.IsTrue ((SqlTrue.CompareTo(SqlBoolean.Null) > 0), error);
258                         Assert.IsTrue ((SqlTrue.CompareTo(SqlFalse) > 0), error);
259                         Assert.IsTrue ((SqlFalse.CompareTo(SqlTrue) < 0), error);
260                         Assert.IsTrue ((SqlFalse.CompareTo(SqlFalse) == 0), error);
261
262                 }
263
264                 // Equals
265                 [Test]
266                 public void Equals() {
267
268                         SqlBoolean SqlTrue2 = new SqlBoolean(true);
269                         SqlBoolean SqlFalse2 = new SqlBoolean(false);
270
271                         String error = "Equals method does not work correctly ";
272                         Assert.IsTrue (SqlTrue.Equals(SqlTrue2), error + "(true == true)");
273                         Assert.IsTrue (SqlFalse.Equals(SqlFalse2), error + "(false == false)");
274
275                         Assert.IsTrue (!SqlTrue.Equals(SqlFalse), error + "(true == false)");
276                         Assert.IsTrue (!SqlFalse.Equals(SqlTrue), error + "(false == true)");
277
278                         Assert.IsFalse (SqlTrue.Equals(SqlBoolean.Null), error + "(true != null)");
279                         Assert.IsFalse (SqlFalse.Equals(SqlBoolean.Null), error + "(false != null)");
280
281                         Assert.IsTrue (!SqlTrue.Equals(null), error + "(true == false)");
282                         Assert.IsTrue (SqlBoolean.Null.Equals (SqlBoolean.Null), "null == null");
283                         Assert.IsFalse (SqlBoolean.Null.Equals (SqlTrue), "null != true");
284                         Assert.IsFalse (SqlBoolean.Null.Equals (SqlFalse), "null != false");
285                 }
286
287                 [Test]
288                 public void GetHashCodeTest() {
289
290                         Assert.AreEqual (1, SqlTrue.GetHashCode(), "GetHashCode method does not work correctly");
291
292                         Assert.AreEqual (0, SqlFalse.GetHashCode(), "GetHashCode method does not work correctly");
293
294                 }
295
296                 // GetType
297                 [Test]
298                 public void GetTypeTest() {
299
300                         Assert.AreEqual ("System.Data.SqlTypes.SqlBoolean", SqlTrue.GetType().ToString(), "GetType method does not work correctly");
301                 }
302
303                 // ToSqlByte
304                 [Test]
305                 public void ToSqlByte() {
306
307                         SqlByte SqlTestByte;
308
309                         String error = "ToSqlByte method does not work correctly ";
310
311                         SqlTestByte = SqlTrue.ToSqlByte();
312                         Assert.AreEqual ((byte)1,SqlTestByte.Value, error);
313
314                         SqlTestByte = SqlFalse.ToSqlByte();
315                         Assert.AreEqual ((byte)0, SqlTestByte.Value, error);
316
317                 }
318
319                 // ToSqlDecimal
320                 [Test]
321                 public void ToSqlDecimal() {
322
323                         SqlDecimal SqlTestDecimal;
324
325                         String error = "ToSqlDecimal method does not work correctly ";
326                         SqlTestDecimal = SqlTrue.ToSqlDecimal();
327
328                         Assert.AreEqual ((decimal)1, SqlTestDecimal.Value, error);
329
330                         SqlTestDecimal = SqlFalse.ToSqlDecimal();
331                         Assert.AreEqual ((decimal)0, SqlTestDecimal.Value, error);
332                 }
333
334                 // ToSqlDouble
335                 [Test]
336                 public void ToSqlDouble() {
337
338                         SqlDouble SqlTestDouble;
339                         
340                         String error = "ToSqlDouble method does not work correctly ";
341                         SqlTestDouble = SqlTrue.ToSqlDouble();
342                         Assert.AreEqual ((double)1, SqlTestDouble.Value, error);
343
344                         SqlTestDouble = SqlFalse.ToSqlDouble();
345                         Assert.AreEqual ((double)0, SqlTestDouble.Value, error);
346                 }
347
348                 // ToSqlInt16
349                 [Test]
350                 public void ToSqlInt16() {
351
352                         SqlInt16 SqlTestInt16;
353
354                         String error = "ToSqlInt16 method does not work correctly ";
355                         SqlTestInt16 = SqlTrue.ToSqlInt16();
356                         Assert.AreEqual ((short)1, SqlTestInt16.Value, error);
357
358                         SqlTestInt16 = SqlFalse.ToSqlInt16();
359                         Assert.AreEqual ((short)0, SqlTestInt16.Value, error);
360
361                 }
362
363                 // ToSqlInt32
364                 [Test]
365                 public void ToSqlInt32() {
366
367                         SqlInt32 SqlTestInt32;
368
369                         String error = "ToSqlInt32 method does not work correctly ";
370                         SqlTestInt32 = SqlTrue.ToSqlInt32();
371                         Assert.AreEqual ((int)1, SqlTestInt32.Value, error);
372
373                         SqlTestInt32 = SqlFalse.ToSqlInt32();
374                         Assert.AreEqual ((int)0, SqlTestInt32.Value, error);
375
376                 }
377
378                 // ToSqlInt64
379                 [Test]
380                 public void ToSqlInt64() {
381
382                         SqlInt64 SqlTestInt64;
383
384                         String error = "ToSqlInt64 method does not work correctly ";
385                         
386                         SqlTestInt64 = SqlTrue.ToSqlInt64();
387                         Assert.AreEqual ((long)1, SqlTestInt64.Value, error);
388
389                         SqlTestInt64 = SqlFalse.ToSqlInt64();
390                         Assert.AreEqual ((long)0, SqlTestInt64.Value, error);
391
392                 }
393
394                 // ToSqlMoney
395                 [Test]
396                 public void ToSqlMoney() {
397
398                         SqlMoney SqlTestMoney;
399
400                         String error = "ToSqlMoney method does not work correctly ";
401                         SqlTestMoney = SqlTrue.ToSqlMoney();
402                         Assert.AreEqual (1.0000M, SqlTestMoney.Value, error);
403
404                         SqlTestMoney = SqlFalse.ToSqlMoney();
405                         Assert.AreEqual ((decimal)0, SqlTestMoney.Value, error);
406
407                 }
408
409                 // ToSqlSingle
410                 [Test]
411                 public void ToSqlsingle() {
412
413                         SqlSingle SqlTestSingle;
414
415                         String error = "ToSqlSingle method does not work correctly ";
416                         SqlTestSingle = SqlTrue.ToSqlSingle();
417                         Assert.AreEqual ((float)1, SqlTestSingle.Value, error);
418
419                         SqlTestSingle = SqlFalse.ToSqlSingle();
420                         Assert.AreEqual ( (float) 0, SqlTestSingle.Value, error);
421
422                 }
423
424                 // ToSqlString
425                 [Test]
426                 public void ToSqlString() {
427
428                         SqlString SqlTestString;
429
430                         String error = "ToSqlString method does not work correctly ";
431                         SqlTestString = SqlTrue.ToSqlString();
432                         Assert.AreEqual ("True", SqlTestString.Value, error);
433
434                         SqlTestString = SqlFalse.ToSqlString();
435                         Assert.AreEqual ("False", SqlTestString.Value, error);
436
437                 }
438
439                 // ToString
440                 [Test]
441                 public void ToStringTest() {
442
443                         SqlString TestString;
444
445                         String error = "ToString method does not work correctly ";
446
447                         TestString = SqlTrue.ToString();
448                         Assert.AreEqual ("True", TestString.Value, error);
449
450                         TestString = SqlFalse.ToSqlString();
451                         Assert.AreEqual ("False", TestString.Value, error);
452
453                 }
454
455                 // END OF PUBLIC METHODS
456                 ////
457
458                 ////
459                 // OPERATORS
460
461                 // BitwixeAnd operator
462                 [Test]
463                 public void BitwiseAndOperator() {
464
465                         SqlBoolean SqlTrue2 = new SqlBoolean(true);
466                         SqlBoolean SqlFalse2 = new SqlBoolean(false);
467
468                         SqlBoolean SqlResult;
469                         String error = "BitwiseAnd operator does not work correctly ";
470
471                         SqlResult = SqlTrue & SqlFalse;
472                         Assert.IsTrue (!SqlResult.Value, error + "(true & false)");
473                         SqlResult = SqlFalse & SqlTrue;
474                         Assert.IsTrue (!SqlResult.Value, error + "(false & true)");
475
476                         SqlResult = SqlTrue & SqlTrue2;
477                         Assert.IsTrue (SqlResult.Value, error + "(true & true)");
478
479                         SqlResult = SqlFalse & SqlFalse2;
480                         Assert.IsTrue (!SqlResult.Value, error + "(false & false)");
481
482
483                 }
484
485                 // BitwixeOr operator
486                 [Test]
487                 public void BitwiseOrOperator() {
488
489                         SqlBoolean SqlTrue2 = new SqlBoolean(true);
490                         SqlBoolean SqlFalse2 = new SqlBoolean(false);
491
492                         SqlBoolean SqlResult;
493                         String error = "BitwiseOr operator does not work correctly ";
494
495                         SqlResult = SqlTrue | SqlFalse;
496                         Assert.IsTrue (SqlResult.Value, error + "(true | false)");
497                         SqlResult = SqlFalse | SqlTrue;
498
499                         Assert.IsTrue (SqlResult.Value, error + "(false | true)");
500
501                         SqlResult = SqlTrue | SqlTrue2;
502                         Assert.IsTrue (SqlResult.Value, error + "(true | true)");
503
504                         SqlResult = SqlFalse | SqlFalse2;
505                         Assert.IsTrue (!SqlResult.Value, error + "(false | false)");
506
507                 }
508
509                 // Equality operator
510                 [Test]
511                 public void EqualityOperator() {
512
513                         SqlBoolean SqlTrue2 = new SqlBoolean(true);
514                         SqlBoolean SqlFalse2 = new SqlBoolean(false);
515
516                         SqlBoolean SqlResult;
517                         String error = "Equality operator does not work correctly ";
518
519                         SqlResult = SqlTrue == SqlFalse;
520                         Assert.IsTrue (!SqlResult.Value, error + "(true == false)");
521                         SqlResult = SqlFalse == SqlTrue;
522                         Assert.IsTrue (!SqlResult.Value, error + "(false == true)");
523
524                         SqlResult = SqlTrue == SqlTrue2;
525                         Assert.IsTrue (SqlResult.Value, error + "(true == true)");
526
527                         SqlResult = SqlFalse == SqlFalse2;
528                         Assert.IsTrue (SqlResult.Value, error + "(false == false)");
529
530                         SqlResult = SqlFalse == SqlBoolean.Null;
531                         Assert.IsTrue (SqlResult.IsNull, error + "(false == Null)");
532                         //SqlResult = SqlBoolean.Null == SqlBoolean.Null;
533                         Assert.IsTrue (SqlResult.IsNull, error + "(Null == true)");
534
535                 }
536
537                 // ExlusiveOr operator
538                 [Test]
539                 public void ExlusiveOrOperator() {
540
541                         SqlBoolean SqlTrue2 = new SqlBoolean(true);
542                         SqlBoolean SqlFalse2 = new SqlBoolean(false);
543
544                         SqlBoolean SqlResult;
545                         String error = "ExclusiveOr operator does not work correctly ";
546
547                         SqlResult = SqlTrue ^ SqlFalse;
548                         Assert.IsTrue (SqlResult.Value, error + "(true ^ false)");
549                         SqlResult = SqlFalse | SqlTrue;
550                         Assert.IsTrue (SqlResult.Value, error + "(false ^ true)");
551
552                         SqlResult = SqlTrue ^ SqlTrue2;
553                         Assert.IsTrue (!SqlResult.Value, error + "(true ^ true)");
554
555                         SqlResult = SqlFalse ^ SqlFalse2;
556                         Assert.IsTrue (!SqlResult.Value, error + "(false ^ false)");
557
558                 }
559
560                 // false operator
561                 [Test]
562                 public void FalseOperator() {
563
564                         String error = "false operator does not work correctly ";
565
566                         Assert.AreEqual (SqlBoolean.False, (!SqlTrue), error + "(true)");
567                         Assert.AreEqual (SqlBoolean.True, (!SqlFalse), error + "(false)");
568
569                 }
570
571                 // Inequality operator
572                 [Test]
573                 public void InequalityOperator() {
574
575                         SqlBoolean SqlTrue2 = new SqlBoolean(true);
576                         SqlBoolean SqlFalse2 = new SqlBoolean(false);
577
578                         String error = "Inequality operator does not work correctly" ;
579
580                         Assert.AreEqual (SqlBoolean.False, SqlTrue != true, error + "(true != true)");
581                         Assert.AreEqual (SqlBoolean.False, SqlTrue != SqlTrue2, error + "(true != true)");
582                         Assert.AreEqual (SqlBoolean.False, SqlFalse != false, error + "(false != false)");
583                         Assert.AreEqual (SqlBoolean.False, SqlFalse != SqlFalse2, error + "(false != false)");
584                         Assert.AreEqual (SqlBoolean.True, SqlTrue != SqlFalse, error + "(true != false)");
585                         Assert.AreEqual (SqlBoolean.True, SqlFalse != SqlTrue, error + "(false != true)");
586                         Assert.AreEqual (SqlBoolean.Null, SqlBoolean.Null != SqlTrue, error + "(null != true)");
587                         Assert.AreEqual (SqlBoolean.Null, SqlFalse != SqlBoolean.Null, error + "(false != null)");
588
589                 }
590
591                 // Logical Not operator
592                 [Test]
593                 public void LogicalNotOperator() {
594
595                         String error = "Logical Not operator does not work correctly" ;
596
597                         Assert.AreEqual (SqlBoolean.False, !SqlTrue, error + "(true)");
598                         Assert.AreEqual (SqlBoolean.True, !SqlFalse, error + "(false)");
599
600                 }
601
602                 // OnesComplement operator
603                 [Test]
604                 public void OnesComplementOperator() {
605
606                         String error = "Ones complement operator does not work correctly" ;
607
608                         SqlBoolean SqlResult;
609
610                         SqlResult = ~SqlTrue;
611                         Assert.IsTrue (!SqlResult.Value, error + "(true)");
612                         SqlResult = ~SqlFalse;
613                         Assert.IsTrue (SqlResult.Value, error + "(false)");
614
615                 }
616
617
618                 // true operator
619                 [Test]
620                 public void TrueOperator() {
621
622                         String error = "true operator does not work correctly ";
623
624                         Assert.AreEqual (SqlBoolean.True, (SqlTrue), error + "(true)");
625                         Assert.AreEqual (SqlBoolean.False, (SqlFalse), error + "(false)");
626
627                 }
628
629                 // SqlBoolean to Boolean
630                 [Test]
631                 public void SqlBooleanToBoolean() {
632
633                         String error = "SqlBooleanToBoolean operator does not work correctly ";
634
635                         Boolean TestBoolean = (Boolean)SqlTrue;
636                         Assert.IsTrue ( TestBoolean, error + "(true)");
637                         TestBoolean = (Boolean)SqlFalse;
638                         Assert.IsTrue ( !TestBoolean, error + "(false)");
639
640                 }
641
642                 // SqlByte to SqlBoolean
643                 [Test]
644                 public void SqlByteToSqlBoolean() {
645
646                         SqlByte SqlTestByte;
647                         SqlBoolean SqlTestBoolean;
648                         String error = "SqlByteToSqlBoolean operator does not work correctly ";
649
650                         SqlTestByte = new SqlByte(1);
651                         SqlTestBoolean = (SqlBoolean)SqlTestByte;
652                         Assert.IsTrue (SqlTestBoolean.Value, error + "(true)");
653
654                         SqlTestByte = new SqlByte(2);
655                         SqlTestBoolean = (SqlBoolean)SqlTestByte;
656                         Assert.IsTrue (SqlTestBoolean.Value, error + "(true)");
657
658                         SqlTestByte = new SqlByte(0);
659                         SqlTestBoolean = (SqlBoolean)SqlTestByte;
660                         Assert.IsTrue (!SqlTestBoolean.Value, error + "(false)");
661
662                 }
663
664                 // SqlDecimal to SqlBoolean
665                 [Test]
666                 public void SqlDecimalToSqlBoolean() {
667
668                         SqlDecimal SqlTest;
669                         SqlBoolean SqlTestBoolean;
670                         String error = "SqlDecimalToSqlBoolean operator does not work correctly ";
671
672                         SqlTest = new SqlDecimal(1);
673                         SqlTestBoolean = (SqlBoolean)SqlTest;
674                         Assert.IsTrue (SqlTestBoolean.Value, error + "(true)");
675
676                         SqlTest = new SqlDecimal(19);
677                         SqlTestBoolean = (SqlBoolean)SqlTest;
678                         Assert.IsTrue (SqlTestBoolean.Value, error + "(true)");
679
680                         SqlTest = new SqlDecimal(0);
681                         SqlTestBoolean = (SqlBoolean)SqlTest;
682                         Assert.IsTrue (!SqlTestBoolean.Value, error + "(false)");
683
684                 }
685
686                 // SqlDouble to SqlBoolean
687                 [Test]
688                 public void SqlDoubleToSqlBoolean() {
689
690                         SqlDouble SqlTest;
691                         SqlBoolean SqlTestBoolean;
692                         String error = "SqlDoubleToSqlBoolean operator does not work correctly ";
693
694                         SqlTest = new SqlDouble(1);
695                         SqlTestBoolean = (SqlBoolean)SqlTest;
696                         Assert.IsTrue (SqlTestBoolean.Value, error + "(true)");
697
698                         SqlTest = new SqlDouble(-19.8);
699                         SqlTestBoolean = (SqlBoolean)SqlTest;
700                         Assert.IsTrue (SqlTestBoolean.Value, error + "(true)");
701
702                         SqlTest = new SqlDouble(0);
703                         SqlTestBoolean = (SqlBoolean)SqlTest;
704                         Assert.IsTrue (!SqlTestBoolean.Value, error + "(false)");
705
706                 }
707
708                 // SqlIn16 to SqlBoolean
709                 [Test]
710                 public void SqlInt16ToSqlBoolean() {
711
712                         SqlInt16 SqlTest;
713                         SqlBoolean SqlTestBoolean;
714                         String error = "SqlInt16ToSqlBoolean operator does not work correctly ";
715
716                         SqlTest = new SqlInt16(1);
717                         SqlTestBoolean = (SqlBoolean)SqlTest;
718                         Assert.IsTrue (SqlTestBoolean.Value, error + "(true)");
719
720                         SqlTest = new SqlInt16(-143);
721                         SqlTestBoolean = (SqlBoolean)SqlTest;
722                         Assert.IsTrue (SqlTestBoolean.Value, error + "(true)");
723
724                         SqlTest = new SqlInt16(0);
725                         SqlTestBoolean = (SqlBoolean)SqlTest;
726                         Assert.IsTrue (!SqlTestBoolean.Value, error + "(false)");
727
728                 }
729
730                 // SqlInt32 to SqlBoolean
731                 [Test]
732                 public void SqlInt32ToSqlBoolean() {
733
734                         SqlInt32 SqlTest;
735                         SqlBoolean SqlTestBoolean;
736                         String error = "SqlInt32ToSqlBoolean operator does not work correctly ";
737
738                         SqlTest = new SqlInt32(1);
739                         SqlTestBoolean = (SqlBoolean)SqlTest;
740                         Assert.IsTrue (SqlTestBoolean.Value, error + "(true)");
741
742                         SqlTest = new SqlInt32(1430);
743                         SqlTestBoolean = (SqlBoolean)SqlTest;
744                         Assert.IsTrue (SqlTestBoolean.Value, error + "(true)");
745
746                         SqlTest = new SqlInt32(0);
747                         SqlTestBoolean = (SqlBoolean)SqlTest;
748                         Assert.IsTrue (!SqlTestBoolean.Value, error + "(false)");
749                 }
750
751                 // SqlInt64 to SqlBoolean
752                 [Test]
753                 public void SqlInt64ToSqlBoolean() {
754
755                         SqlInt64 SqlTest;
756                         SqlBoolean SqlTestBoolean;
757                         String error = "SqlInt64ToSqlBoolean operator does not work correctly ";
758
759                         SqlTest = new SqlInt64(1);
760                         SqlTestBoolean = (SqlBoolean)SqlTest;
761                         Assert.IsTrue (SqlTestBoolean.Value, error + "(true)");
762
763                         SqlTest = new SqlInt64(-14305);
764                         SqlTestBoolean = (SqlBoolean)SqlTest;
765                         Assert.IsTrue (SqlTestBoolean.Value, error + "(true)");
766
767                         SqlTest = new SqlInt64(0);
768                         SqlTestBoolean = (SqlBoolean)SqlTest;
769                         Assert.IsTrue (!SqlTestBoolean.Value, error + "(false)");
770
771                 }
772
773                 // SqlMoney to SqlBoolean
774                 [Test]
775                 public void SqlMoneyToSqlBoolean() {
776
777                         SqlMoney SqlTest;
778                         SqlBoolean SqlTestBoolean;
779                         String error = "SqlMoneyToSqlBoolean operator does not work correctly ";
780
781                         SqlTest = new SqlMoney(1);
782                         SqlTestBoolean = (SqlBoolean)SqlTest;
783                         Assert.IsTrue (SqlTestBoolean.Value, error + "(true)");
784
785                         SqlTest = new SqlMoney(1305);
786                         SqlTestBoolean = (SqlBoolean)SqlTest;
787                         Assert.IsTrue (SqlTestBoolean.Value, error + "(true)");
788
789                         SqlTest = new SqlMoney(0);
790                         SqlTestBoolean = (SqlBoolean)SqlTest;
791                         Assert.IsTrue (!SqlTestBoolean.Value, error + "(false)");
792
793                 }
794
795                 // SqlSingle to SqlBoolean
796                 [Test]
797                 public void SqlSingleToSqlBoolean() {
798
799                         SqlSingle SqlTest;
800                         SqlBoolean SqlTestBoolean;
801                         String error = "SqlSingleToSqlBoolean operator does not work correctly ";
802
803                         SqlTest = new SqlSingle(1);
804                         SqlTestBoolean = (SqlBoolean)SqlTest;
805                         Assert.IsTrue (SqlTestBoolean.Value, error + "(true)");
806
807                         SqlTest = new SqlSingle(1305);
808                         SqlTestBoolean = (SqlBoolean)SqlTest;
809                         Assert.IsTrue (SqlTestBoolean.Value, error + "(true)");
810
811                         SqlTest = new SqlSingle(-305.3);
812                         SqlTestBoolean = (SqlBoolean)SqlTest;
813                         Assert.IsTrue (SqlTestBoolean.Value, error + "(true)");
814
815                         SqlTest = new SqlSingle(0);
816                         SqlTestBoolean = (SqlBoolean)SqlTest;
817                         Assert.IsTrue (!SqlTestBoolean.Value, error + "(false)");
818
819                 }
820
821                 // SqlString to SqlBoolean
822                 [Test]
823                 public void SqlStringToSqlBoolean() {
824
825                         SqlString SqlTest;
826                         SqlBoolean SqlTestBoolean;
827                         String error = "SqlSingleToSqlBoolean operator does not work correctly ";
828
829                         SqlTest = new SqlString("true");
830                         SqlTestBoolean = (SqlBoolean)SqlTest;
831                         Assert.IsTrue (SqlTestBoolean.Value, error + "(true)");
832
833                         SqlTest = new SqlString("TRUE");
834                         SqlTestBoolean = (SqlBoolean)SqlTest;
835                         Assert.IsTrue (SqlTestBoolean.Value, error + "(true)");
836
837                         SqlTest = new SqlString("True");
838                         SqlTestBoolean = (SqlBoolean)SqlTest;
839                         Assert.IsTrue (SqlTestBoolean.Value, error + "(true)");
840
841                         SqlTest = new SqlString("false");
842                         SqlTestBoolean = (SqlBoolean)SqlTest;
843                         Assert.IsTrue (!SqlTestBoolean.Value, error + "(false)");
844
845                 }
846
847                 // Boolean to SqlBoolean
848                 [Test]
849                 public void BooleanToSqlBoolean() {
850
851                         SqlBoolean SqlTestBoolean;
852                         bool btrue = true;
853                         bool bfalse = false;
854                         String error = "BooleanToSqlBoolean operator does not work correctly ";
855
856                         Boolean SqlTest = true;
857                         SqlTestBoolean = (SqlBoolean)SqlTest;
858                         Assert.IsTrue (SqlTestBoolean.Value, error + "(true)");
859                         SqlTestBoolean = (SqlBoolean)btrue;
860                         Assert.IsTrue (SqlTestBoolean.Value, error + "(true)");
861
862
863                         SqlTest = false;
864                         SqlTestBoolean = (SqlBoolean)SqlTest;
865                         Assert.IsTrue (!SqlTestBoolean.Value, error + "(false)");
866                         SqlTestBoolean = (SqlBoolean)bfalse;
867                         Assert.IsTrue (!SqlTestBoolean.Value, error + "(false)");
868
869                 }
870
871                 // END OF OPERATORS
872                 ////
873
874                 ////
875                 // PROPERTIES
876
877                 // ByteValue property
878                 [Test]
879                 public void ByteValueProperty() {
880
881                         String error = "ByteValue property does not work correctly ";
882
883                         Assert.AreEqual ((byte)1, SqlTrue.ByteValue, error + "(true)");
884                         Assert.AreEqual ((byte)0, SqlFalse.ByteValue, error + "(false)");
885
886                 }
887
888                 // IsFalse property
889                 [Test]
890                 public void IsFalseProperty() {
891
892                         String error = "IsFalse property does not work correctly ";
893
894                         Assert.IsTrue (!SqlTrue.IsFalse, error + "(true)");
895                         Assert.IsTrue (SqlFalse.IsFalse, error + "(false)");
896
897                 }
898
899                 // IsNull property
900                 [Test]
901                 public void IsNullProperty() {
902
903                         String error = "IsNull property does not work correctly ";
904
905                         Assert.IsTrue (!SqlTrue.IsNull, error + "(true)");
906                         Assert.IsTrue (!SqlFalse.IsNull, error + "(false)");
907                         Assert.IsTrue (SqlBoolean.Null.IsNull, error + "(Null)");
908
909                 }
910
911                 // IsTrue property
912                 [Test]
913                 public void IsTrueProperty() {
914
915                         String error = "IsTrue property does not work correctly ";
916
917                         Assert.IsTrue (SqlTrue.IsTrue, error + "(true)");
918                         Assert.IsTrue (!SqlFalse.IsTrue, error + "(false)");
919
920                 }
921
922                 // Value property
923                 [Test]
924                 public void ValueProperty() {
925
926                         String error = "Value property does not work correctly ";
927
928                         Assert.IsTrue (SqlTrue.Value, error + "(true)");
929                         Assert.IsTrue (!SqlFalse.Value, error + "(false)");
930
931                 }
932
933                 // END OF PROPERTIEs
934                 ////
935
936                 ////
937                 // FIELDS
938
939                 [Test]
940                 public void FalseField() {
941
942                         Assert.IsTrue (!SqlBoolean.False.Value, "False field does not work correctly");
943
944                 }
945
946                 [Test]
947                 public void NullField() {
948
949                         Assert.IsTrue (SqlBoolean.Null.IsNull, "Null field does not work correctly");
950
951                 }
952
953                 [Test]
954                 public void OneField() {
955
956                         Assert.AreEqual ((byte)1, SqlBoolean.One.ByteValue, "One field does not work correctly");
957                 }
958
959                 [Test]
960                 public void TrueField() {
961
962                         Assert.IsTrue (SqlBoolean.True.Value, "True field does not work correctly");
963
964                 }
965
966                 [Test]
967                 public void ZeroField() {
968
969                         Assert.AreEqual ((byte)0, SqlBoolean.Zero.ByteValue, "Zero field does not work correctly");
970
971                 }
972                 [Test]
973                 public void GetXsdTypeTest ()
974                 {
975                         XmlQualifiedName qualifiedName = SqlBoolean.GetXsdType (null);
976                         NUnit.Framework.Assert.AreEqual ("boolean", qualifiedName.Name, "#A01");
977                 }
978
979                 [Test]
980                 public void GreaterThanTest ()
981                 {
982                         SqlBoolean x = new SqlBoolean (-1);
983                         SqlBoolean y = new SqlBoolean (true);
984                         SqlBoolean z = new SqlBoolean ();
985                         SqlBoolean z1 = new SqlBoolean (0);
986
987                         NUnit.Framework.Assert.IsFalse ((x > y).Value, "#A01");
988                         NUnit.Framework.Assert.AreEqual (x > z, SqlBoolean.Null, "#A02");
989                         NUnit.Framework.Assert.IsTrue ((x > z1).Value, "#A03");
990                         NUnit.Framework.Assert.AreEqual (y > z, SqlBoolean.Null, "#A04");
991                         NUnit.Framework.Assert.IsFalse ((y > x).Value, "#A05");
992                         NUnit.Framework.Assert.IsTrue ((y > z1).Value, "#A06");
993                         NUnit.Framework.Assert.AreEqual (z > z1, SqlBoolean.Null, "#A07");
994                         NUnit.Framework.Assert.AreEqual (z > x, SqlBoolean.Null, "#A08");
995                         NUnit.Framework.Assert.AreEqual (z > y, SqlBoolean.Null, "#A09");
996                         NUnit.Framework.Assert.AreEqual (z1 > z, SqlBoolean.Null, "#A10");
997                         NUnit.Framework.Assert.IsFalse ((z1 > x).Value, "#A11");
998                         NUnit.Framework.Assert.IsFalse ((z1 > y).Value, "#A12");
999                 }
1000
1001                 [Test]
1002                 public void GreaterThanOrEqualTest ()
1003                 {
1004                         SqlBoolean x = new SqlBoolean (-1);
1005                         SqlBoolean y = new SqlBoolean (true);
1006                         SqlBoolean z = new SqlBoolean ();
1007                         SqlBoolean z1 = new SqlBoolean (0);
1008
1009                         NUnit.Framework.Assert.IsTrue ((x >= y).Value, "#A01");
1010                         NUnit.Framework.Assert.AreEqual (x >= z, SqlBoolean.Null, "#A02");
1011                         NUnit.Framework.Assert.IsTrue ((x >= z1).Value, "#A03");
1012                         NUnit.Framework.Assert.AreEqual (y >= z, SqlBoolean.Null, "#A04");
1013                         NUnit.Framework.Assert.IsTrue ((y >= x).Value, "#A05");
1014                         NUnit.Framework.Assert.IsTrue ((y >= z1).Value, "#A06");
1015                         NUnit.Framework.Assert.AreEqual (z >= z1, SqlBoolean.Null, "#A07");
1016                         NUnit.Framework.Assert.AreEqual (z >= x, SqlBoolean.Null, "#A08");
1017                         NUnit.Framework.Assert.AreEqual (z >= y, SqlBoolean.Null, "#A09");
1018                         NUnit.Framework.Assert.AreEqual (z1 >= z, SqlBoolean.Null, "#A10");
1019                         NUnit.Framework.Assert.IsFalse ((z1 >= x).Value, "#A11");
1020                         NUnit.Framework.Assert.IsFalse ((z1 >= y).Value, "#A12");
1021                 }
1022
1023                 [Test]
1024                 public void LessThanTest ()
1025                 {
1026                         SqlBoolean x = new SqlBoolean (-1);
1027                         SqlBoolean y = new SqlBoolean (true);
1028                         SqlBoolean z = new SqlBoolean ();
1029                         SqlBoolean z1 = new SqlBoolean (0);
1030
1031                         NUnit.Framework.Assert.IsFalse ((x < y).Value, "#A01");
1032                         NUnit.Framework.Assert.AreEqual (x < z, SqlBoolean.Null, "#A02");
1033                         NUnit.Framework.Assert.IsFalse ((x < z1).Value, "#A03");
1034                         NUnit.Framework.Assert.AreEqual (y < z, SqlBoolean.Null, "#A04");
1035                         NUnit.Framework.Assert.IsFalse ((y < x).Value, "#A05");
1036                         NUnit.Framework.Assert.IsFalse ((y < z1).Value, "#A06");
1037                         NUnit.Framework.Assert.AreEqual (z < z1, SqlBoolean.Null, "#A07");
1038                         NUnit.Framework.Assert.AreEqual (z < x, SqlBoolean.Null, "#A08");
1039                         NUnit.Framework.Assert.AreEqual (z < y, SqlBoolean.Null, "#A09");
1040                         NUnit.Framework.Assert.AreEqual (z1 < z, SqlBoolean.Null, "#A10");
1041                         NUnit.Framework.Assert.IsTrue ((z1 < x).Value, "#A11");
1042                         NUnit.Framework.Assert.IsTrue ((z1 < y).Value, "#A12");
1043                 }
1044
1045                 [Test]
1046                 public void LessThanOrEqualTest ()
1047                 {
1048                         SqlBoolean x = new SqlBoolean (-1);
1049                         SqlBoolean y = new SqlBoolean (true);
1050                         SqlBoolean z = new SqlBoolean ();
1051                         SqlBoolean z1 = new SqlBoolean (0);
1052
1053                         NUnit.Framework.Assert.IsTrue ((x <= y).Value, "#A01");
1054                         NUnit.Framework.Assert.AreEqual (x <= z, SqlBoolean.Null, "#A02");
1055                         NUnit.Framework.Assert.IsFalse ((x <= z1).Value, "#A03");
1056                         NUnit.Framework.Assert.AreEqual (y <= z, SqlBoolean.Null, "#A04");
1057                         NUnit.Framework.Assert.IsTrue ((y <= x).Value, "#A05");
1058                         NUnit.Framework.Assert.IsFalse ((y <= z1).Value, "#A06");
1059                         NUnit.Framework.Assert.AreEqual (z <= z1, SqlBoolean.Null, "#A07");
1060                         NUnit.Framework.Assert.AreEqual (z <= x, SqlBoolean.Null, "#A08");
1061                         NUnit.Framework.Assert.AreEqual (z <= y, SqlBoolean.Null, "#A09");
1062                         NUnit.Framework.Assert.AreEqual (z1 <= z, SqlBoolean.Null, "#A10");
1063                         NUnit.Framework.Assert.IsTrue ((z1 <= x).Value, "#A11");
1064                         NUnit.Framework.Assert.IsTrue ((z1 <= y).Value, "#A12");
1065                 }
1066         }
1067 }
1068