2005-07-19 Ben Maurer <bmaurer@ximian.com>
[mono.git] / mcs / tests / gtest-142.cs
1 using System;
2
3 public static class Assert
4 {
5         public static int Errors {
6                 get { return errors; }
7         }
8
9         static int errors = 0;
10
11         static void Error (string method, string text)
12         {
13                 Console.WriteLine ("Assert failed: {0} ({1})", method, text);
14                 errors++;
15         }
16
17         public static void IsTrue (string text, bool b)
18         {
19                 if (!b)
20                         Error ("IsTrue", text);
21         }
22
23         public static void IsFalse (string text, bool b)
24         {
25                 if (b)
26                         Error ("IsFalse", text);
27         }
28
29         public static void IsNull<T> (string text, Nullable<T> nullable)
30         {
31                 if (nullable.HasValue)
32                         Error ("IsNull", text);
33         }
34
35         public static void IsNotNull<T> (string text, Nullable<T> nullable)
36         {
37                 if (!nullable.HasValue)
38                         Error ("IsNotNull", text);
39         }
40
41         public static void IsTrue (string text, Nullable<bool> b)
42         {
43                 if (!b.HasValue || !b.Value)
44                         Error ("IsTrue", text);
45         }
46
47         public static void IsFalse (string text, Nullable<bool> b)
48         {
49                 if (!b.HasValue || b.Value)
50                         Error ("IsFalse", text);
51         }
52 }
53
54 class X
55 {
56         static int Main ()
57         {
58                 bool? a = null, b = false, c = true;
59                 bool? d = null, e = false, f = true;
60
61                 Assert.IsNull ("a", a);
62                 Assert.IsFalse ("b", b);
63                 Assert.IsTrue ("c", c);
64                 Assert.IsTrue ("a == d", a == d);
65                 Assert.IsTrue ("b == e", b == e);
66                 Assert.IsTrue ("c == f", c == f);
67
68                 Assert.IsFalse ("a != d", a != d);
69                 Assert.IsFalse ("a == b", a == b);
70                 Assert.IsTrue ("a != b", a != b);
71
72                 Assert.IsNull ("d & a", d & a);
73                 Assert.IsFalse ("d & b", d & b);
74                 Assert.IsNull ("d & c", d & c);
75                 Assert.IsFalse ("e & a", e & a);
76                 Assert.IsFalse ("e & b", e & b);
77                 Assert.IsFalse ("e & c", e & c);
78                 Assert.IsNull ("f & a", f & a);
79                 Assert.IsFalse ("f & b", f & b);
80                 Assert.IsTrue ("f & c", f & c);
81
82                 Assert.IsNull ("d | a", d | a);
83                 Assert.IsNull ("d | b", d | b);
84                 Assert.IsTrue ("d | c", d | c);
85                 Assert.IsNull ("e | a", e | a);
86                 Assert.IsFalse ("e | b", e | b);
87                 Assert.IsTrue ("e | c", e | c);
88                 Assert.IsTrue ("f | a", f | a);
89                 Assert.IsTrue ("f | b", f | b);
90                 Assert.IsTrue ("f | c", f | c);
91
92                 Assert.IsNull ("d && a", d && a);
93                 Assert.IsFalse ("d && b", d && b);
94                 Assert.IsNull ("d && c", d && c);
95                 Assert.IsFalse ("e && a", e && a);
96                 Assert.IsFalse ("e && b", e && b);
97                 Assert.IsFalse ("e && c", e && c);
98                 Assert.IsNull ("f && a", f && a);
99                 Assert.IsFalse ("f && b", f && b);
100                 Assert.IsTrue ("f && c", f && c);
101
102                 Assert.IsNull ("d || a", d || a);
103                 Assert.IsNull ("d || b", d || b);
104                 Assert.IsTrue ("d || c", d || c);
105                 Assert.IsNull ("e || a", e || a);
106                 Assert.IsFalse ("e || b", e || b);
107                 Assert.IsTrue ("e || c", e || c);
108                 Assert.IsTrue ("f || a", f || a);
109                 Assert.IsTrue ("f || b", f || b);
110                 Assert.IsTrue ("f || c", f || c);
111
112                 int? g = 3, h = null, i = 3, j = null;
113
114                 Assert.IsFalse ("g == null", g == null);
115                 Assert.IsTrue ("g != null", g != null);
116                 Assert.IsTrue ("h == null", h == null);
117                 Assert.IsFalse ("h != null", h != null);
118
119                 Assert.IsTrue ("g == i", g == i);
120                 Assert.IsFalse ("g != i", g != i);
121                 Assert.IsFalse ("g == j", g == j);
122                 Assert.IsTrue ("g != j", g != j);
123                 Assert.IsFalse ("h == i", h == i);
124                 Assert.IsTrue ("h != i", h != i);
125                 Assert.IsTrue ("h == j", h == j);
126                 Assert.IsFalse ("h != j", h != j);
127
128                 Console.WriteLine ("{0} errors.", Assert.Errors);
129                 return Assert.Errors;
130         }
131 }