Przeglądaj źródła

lifted relational tests

svn path=/trunk/mcs/; revision=104283
Jb Evain 17 lat temu
rodzic
commit
ad80540e69

+ 9 - 7
mcs/class/System.Core/Test/System.Linq.Expressions/ExpressionTest_Equal.cs

@@ -151,17 +151,19 @@ namespace MonoTests.System.Linq.Expressions
 
 		[Test]
 		[Category ("NotWorking")]
-		public void DoubleNullableEqual ()
+		public void NullableInt32Equal ()
 		{
-			var l = Expression.Parameter (typeof (double?), "l");
-			var r = Expression.Parameter (typeof (double?), "r");
+			var l = Expression.Parameter (typeof (int?), "l");
+			var r = Expression.Parameter (typeof (int?), "r");
 
-			var eq = Expression.Lambda<Func<double?, double?, bool>> (
+			var eq = Expression.Lambda<Func<int?, int?, bool>> (
 				Expression.Equal (l, r), l, r).Compile ();
 
-			Assert.AreEqual (true, eq (null, null));
-			Assert.AreEqual (false, eq (null, 1.1));
-			// TODO: .. continue
+			Assert.IsTrue (eq (null, null));
+			Assert.IsFalse (eq (null, 1));
+			Assert.IsFalse (eq (1, null));
+			Assert.IsFalse (eq (1, 2));
+			Assert.IsTrue (eq (1, 1));
 		}
 	}
 }

+ 20 - 0
mcs/class/System.Core/Test/System.Linq.Expressions/ExpressionTest_GreaterThan.cs

@@ -132,5 +132,25 @@ namespace MonoTests.System.Linq.Expressions
 			Assert.AreEqual (false, compiled (-1, 0), "tc4");
 			Assert.AreEqual (false, compiled (0, Int32.MaxValue), "tc5");
 		}
+
+		[Test]
+		[Category ("NotWorking")]
+		public void NullableInt32GreaterThan ()
+		{
+			var l = Expression.Parameter (typeof (int?), "l");
+			var r = Expression.Parameter (typeof (int?), "r");
+
+			var gt = Expression.Lambda<Func<int?, int?, bool>> (
+				Expression.GreaterThan (l, r), l, r).Compile ();
+
+			Assert.IsFalse (gt (null, null));
+			Assert.IsFalse (gt (null, 1));
+			Assert.IsFalse (gt (null, -1));
+			Assert.IsFalse (gt (1, null));
+			Assert.IsFalse (gt (-1, null));
+			Assert.IsFalse (gt (1, 2));
+			Assert.IsTrue (gt (2, 1));
+			Assert.IsFalse (gt (1, 1));
+		}
 	}
 }

+ 20 - 0
mcs/class/System.Core/Test/System.Linq.Expressions/ExpressionTest_GreaterThanOrEqual.cs

@@ -106,5 +106,25 @@ namespace MonoTests.System.Linq.Expressions
 			Assert.AreEqual ("op_GreaterThanOrEqual", expr.Method.Name);
 			Assert.AreEqual ("(value(MonoTests.System.Linq.Expressions.OpClass) >= value(MonoTests.System.Linq.Expressions.OpClass))", expr.ToString ());
 		}
+
+		[Test]
+		[Category ("NotWorking")]
+		public void NullableInt32GreaterThanOrEqual ()
+		{
+			var l = Expression.Parameter (typeof (int?), "l");
+			var r = Expression.Parameter (typeof (int?), "r");
+
+			var gte = Expression.Lambda<Func<int?, int?, bool>> (
+				Expression.GreaterThanOrEqual (l, r), l, r).Compile ();
+
+			Assert.IsFalse (gte (null, null));
+			Assert.IsFalse (gte (null, 1));
+			Assert.IsFalse (gte (null, -1));
+			Assert.IsFalse (gte (1, null));
+			Assert.IsFalse (gte (-1, null));
+			Assert.IsFalse (gte (1, 2));
+			Assert.IsTrue (gte (2, 1));
+			Assert.IsTrue (gte (1, 1));
+		}
 	}
 }

+ 20 - 0
mcs/class/System.Core/Test/System.Linq.Expressions/ExpressionTest_LessThan.cs

@@ -106,5 +106,25 @@ namespace MonoTests.System.Linq.Expressions
 			Assert.AreEqual ("op_LessThan", expr.Method.Name);
 			Assert.AreEqual ("(value(MonoTests.System.Linq.Expressions.OpClass) < value(MonoTests.System.Linq.Expressions.OpClass))", expr.ToString ());
 		}
+
+		[Test]
+		[Category ("NotWorking")]
+		public void NullableInt32LessThan ()
+		{
+			var l = Expression.Parameter (typeof (int?), "l");
+			var r = Expression.Parameter (typeof (int?), "r");
+
+			var lt = Expression.Lambda<Func<int?, int?, bool>> (
+				Expression.LessThan (l, r), l, r).Compile ();
+
+			Assert.IsFalse (lt (null, null));
+			Assert.IsFalse (lt (null, 1));
+			Assert.IsFalse (lt (null, -1));
+			Assert.IsFalse (lt (1, null));
+			Assert.IsFalse (lt (-1, null));
+			Assert.IsTrue (lt (1, 2));
+			Assert.IsFalse (lt (2, 1));
+			Assert.IsFalse (lt (1, 1));
+		}
 	}
 }

+ 20 - 0
mcs/class/System.Core/Test/System.Linq.Expressions/ExpressionTest_LessThanOrEqual.cs

@@ -106,5 +106,25 @@ namespace MonoTests.System.Linq.Expressions
 			Assert.AreEqual ("op_LessThanOrEqual", expr.Method.Name);
 			Assert.AreEqual ("(value(MonoTests.System.Linq.Expressions.OpClass) <= value(MonoTests.System.Linq.Expressions.OpClass))", expr.ToString ());
 		}
+
+		[Test]
+		[Category ("NotWorking")]
+		public void NullableInt32LessThanOrEqual ()
+		{
+			var l = Expression.Parameter (typeof (int?), "l");
+			var r = Expression.Parameter (typeof (int?), "r");
+
+			var lte = Expression.Lambda<Func<int?, int?, bool>> (
+				Expression.LessThanOrEqual (l, r), l, r).Compile ();
+
+			Assert.IsFalse (lte (null, null));
+			Assert.IsFalse (lte (null, 1));
+			Assert.IsFalse (lte (null, -1));
+			Assert.IsFalse (lte (1, null));
+			Assert.IsFalse (lte (-1, null));
+			Assert.IsTrue (lte (1, 2));
+			Assert.IsFalse (lte (2, 1));
+			Assert.IsTrue (lte (1, 1));
+		}
 	}
 }