Author: miguel
Date: 2008-01-21 20:22:50 -0500 (Mon, 21 Jan 2008)
New Revision: 93470

Modified:
   trunk/mcs/tests/gtest-etree-01.cs
Log:
Add more codepath checks

Modified: trunk/mcs/tests/gtest-etree-01.cs
===================================================================
--- trunk/mcs/tests/gtest-etree-01.cs   2008-01-22 01:07:39 UTC (rev 93469)
+++ trunk/mcs/tests/gtest-etree-01.cs   2008-01-22 01:22:50 UTC (rev 93470)
@@ -43,9 +43,66 @@
                Expression<Func<bool, bool, bool>> e = (bool a, bool b) => a & 
b;
 
                AssertNodeType (e, ExpressionType.And);
-               Assert (false, e.Compile ().Invoke (false, true));
+               Func<bool,bool,bool> c = e.Compile ();
+               
+               Assert (true,  c (true, true));
+               Assert (false, c (true, false));
+               Assert (false, c (false, true));
+               Assert (false, c (false, false));
        }
 
+       void OrTest ()
+       {
+               Expression<Func<bool, bool, bool>> e = (bool a, bool b) => a & 
b;
+
+               AssertNodeType (e, ExpressionType.Or);
+               Func<bool,bool,bool> c = e.Compile ();
+               
+               Assert (true,  c (true, true));
+               Assert (true, c (true, false));
+               Assert (true, c (false, true));
+               Assert (false, c (false, false));
+       }
+       
+       void AndNullableTest ()
+       {
+               Expression<Func<bool?, bool?, bool?>> e = (bool? a, bool? b) => 
a & b;
+
+               AssertNodeType (e, ExpressionType.And);
+               Func<bool?,bool?,bool?> c = e.Compile ();
+               
+               
+               Assert (true,  c (true, true));
+               Assert (false, c (true, false));
+               Assert (false, c (false, true));
+               Assert (false, c (false, false));
+
+               Assert (null,  c (true, null));
+               Assert (false, c (false, null));
+               Assert (false, c (null, false));
+               Assert (null,  c (true, null));
+               Assert (null, c (null, null));
+       }
+       
+       void OrNullableTest ()
+       {
+               Expression<Func<bool?, bool?, bool?>> e = (bool? a, bool? b) => 
a & b;
+
+               AssertNodeType (e, ExpressionType.Or);
+               Func<bool?,bool?,bool?> c = e.Compile ();
+               
+               Assert (true,  c (true, true));
+               Assert (true,  c (true, false));
+               Assert (true,  c (false, true));
+               Assert (false, c (false, false));
+
+               Assert (true, c (true, null));
+               Assert (null, c (false, null));
+               Assert (null, c (null, false));
+               Assert (true, c (true, null));
+               Assert (null, c (null, null));
+       }
+
        void AndAlsoTest ()
        {
                Expression<Func<bool, bool, bool>> e = (bool a, bool b) => a && 
b;

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to