More tests.
authorMarek Safar <marek.safar@gmail.com>
Mon, 3 Mar 2008 19:15:22 +0000 (19:15 -0000)
committerMarek Safar <marek.safar@gmail.com>
Mon, 3 Mar 2008 19:15:22 +0000 (19:15 -0000)
svn path=/trunk/mcs/; revision=97211

mcs/tests/Makefile
mcs/tests/gtest-372.cs [new file with mode: 0644]
mcs/tests/gtest-373.cs [new file with mode: 0644]
mcs/tests/gtest-etree-01.cs
mcs/tests/known-issues-gmcs
mcs/tests/test-615.cs [new file with mode: 0644]

index e9cecbf49b4670c234ac04343042b0d5c17e930f..f53963aff783639de6702bca0a9e5663a5c7c4e6 100644 (file)
@@ -85,7 +85,7 @@ test-generics:
 
 clean-local:
        -rm -fr dir-*
-       -rm -f *.exe *.dll *.netmodule *.out *.pdb casts.cs *.log
+       -rm -f *.exe *.dll *.netmodule *.out *.pdb *.mdb casts.cs *.log
        -rm -f xml-*.xml
 
 dist-local: dist-default
diff --git a/mcs/tests/gtest-372.cs b/mcs/tests/gtest-372.cs
new file mode 100644 (file)
index 0000000..0facd7c
--- /dev/null
@@ -0,0 +1,21 @@
+public class TestClass<T> where T : class
+{
+       public bool Check (T x, T y) { return x == y; }
+}
+
+public class C
+{
+}
+
+public class TestClass2<T> where T : C
+{
+       public bool Check (T x, T y) { return x == y; }
+}
+
+public class X
+{
+       static void Main ()
+       { }
+}
+
+
diff --git a/mcs/tests/gtest-373.cs b/mcs/tests/gtest-373.cs
new file mode 100644 (file)
index 0000000..75952ad
--- /dev/null
@@ -0,0 +1,29 @@
+using System;
+
+namespace MonoBug
+{
+       class MainClass
+       {
+               public static void Main ()
+               {
+                       GenericType<bool> g = new GenericType<bool> (true);
+                       if (g)
+                               Console.WriteLine ("true");
+               }
+       }
+
+       public class GenericType<T>
+       {
+               private T value;
+
+               public GenericType (T value)
+               {
+                       this.value = value;
+               }
+
+               public static implicit operator T (GenericType<T> o)
+               {
+                       return o.value;
+               }
+       }
+}
\ No newline at end of file
index 4961c7a07fe09753c0ee5feb96581e9e44fdb8d7..f7ab69e79cc93a1f849a6156ec10a671454537e1 100644 (file)
@@ -381,7 +381,7 @@ class Tester
                Assert (4, r4.Invoke (new InverseLogicalOperator (false), 3, 4));
        }
 
-       public void ConvertTest ()
+       void ConvertTest ()
        {
                Expression<Func<int, byte>> e = (int a) => ((byte) a);
                AssertNodeType (e, ExpressionType.Convert);
@@ -403,7 +403,7 @@ class Tester
                AssertNodeType (e5, ExpressionType.Convert);
        }
 
-       public void ConvertCheckedTest ()
+       void ConvertCheckedTest ()
        {
                Expression<Func<int, byte>> e = (int a) => checked((byte) a);
                AssertNodeType (e, ExpressionType.ConvertChecked);
@@ -424,7 +424,7 @@ class Tester
                }
        }
 
-       public void DivideTest ()
+       void DivideTest ()
        {
                Expression<Func<int, int, int>> e = (int a, int b) => a / b;
                AssertNodeType (e, ExpressionType.Divide);
@@ -445,7 +445,7 @@ class Tester
                Assert (new MyType (-6), e4.Compile ().Invoke (new MyType (120), new MyType (-20)));
        }
 
-       public void EqualTest ()
+       void EqualTest ()
        {
                Expression<Func<int, int, bool>> e = (int a, int b) => a == b;
                AssertNodeType (e, ExpressionType.Equal);
@@ -467,8 +467,26 @@ class Tester
                Assert (true, e4.Compile ().Invoke (null, null));
                Assert (true, e4.Compile ().Invoke (new MyType (120), new MyType (120)));
        }
+       
+       delegate void EmptyDelegate ();
+       
+       static void EqualTestDelegate ()
+       {
+               Expression<Func<Delegate, Delegate, bool>> e1 = (a, b) => a == b;
+               AssertNodeType (e1, ExpressionType.Equal);
+               Assert (true, e1.Compile ().Invoke (null, null));
+
+               EmptyDelegate ed = delegate () {};
+
+               Expression<Func<EmptyDelegate, EmptyDelegate, bool>> e2 = (a, b) => a == b;
+               AssertNodeType (e2, ExpressionType.Equal);
+               Assert (false, e2.Compile ().Invoke (delegate () {}, null));
+               Assert (false, e2.Compile ().Invoke (delegate () {}, delegate {}));
+               Assert (false, e2.Compile ().Invoke (ed, delegate {}));
+               Assert (true, e2.Compile ().Invoke (ed, ed));
+       }       
 
-       public void ExclusiveOrTest ()
+       void ExclusiveOrTest ()
        {
                Expression<Func<int, int, int>> e = (int a, int b) => a ^ b;
                AssertNodeType (e, ExpressionType.ExclusiveOr);
@@ -489,17 +507,17 @@ class Tester
                Assert (new MyType (-108), e4.Compile ().Invoke (new MyType (120), new MyType (-20)));
        }
 
-       public void GreaterThanTest ()
-       {
+       void GreaterThanTest ()
+       {/*
                Expression<Func<int, int, bool>> e = (int a, int b) => a > b;
                AssertNodeType (e, ExpressionType.GreaterThan);
                Assert (true, e.Compile ().Invoke (60, 30));
-
-               Expression<Func<byte?, byte?, bool>> e2 = (a, b) => a > b;
+*/
+               Expression<Func<uint?, byte?, bool>> e2 = (a, b) => a > b;
                AssertNodeType (e2, ExpressionType.GreaterThan);
                Assert (false, e2.Compile ().Invoke (null, 3));
                Assert (false, e2.Compile ().Invoke (2, 2));
-
+/*
                Expression<Func<MyType, MyType, bool>> e3 = (MyType a, MyType b) => a > b;
                AssertNodeType (e3, ExpressionType.GreaterThan);
                Assert (false, e3.Compile ().Invoke (new MyType (-20), new MyType (-20)));
@@ -509,9 +527,10 @@ class Tester
                Assert (false, e4.Compile ().Invoke (null, new MyType (-20)));
                Assert (false, e4.Compile ().Invoke (null, null));
                Assert (true, e4.Compile ().Invoke (new MyType (120), new MyType (-20)));
+               */
        }
 
-       public void GreaterThanOrEqualTest ()
+       void GreaterThanOrEqualTest ()
        {
                Expression<Func<int, int, bool>> e = (int a, int b) => a >= b;
                AssertNodeType (e, ExpressionType.GreaterThanOrEqual);
@@ -526,7 +545,7 @@ class Tester
                AssertNodeType (e3, ExpressionType.GreaterThanOrEqual);
                Assert (true, e3.Compile ().Invoke (new MyType (-20), new MyType (-20)));
 
-               Expression<Func<MyType?, MyType?, bool>> e4 = (MyType? a, MyType? b) => a >= b;
+               Expression<Func<MyType?, MyType?, bool>> e4 = (MyType? a, MyType? b) => a >= null;
                AssertNodeType (e4, ExpressionType.GreaterThanOrEqual);
                Assert (false, e4.Compile ().Invoke (null, new MyType (-20)));
                Assert (false, e4.Compile ().Invoke (null, null));
@@ -688,8 +707,6 @@ class Tester
                var c2 = e2.Compile ();
                Assert (64, c2 (new MyType (256), new MyType (2)));
                
-/* FIXME: LiftedBinaryOperator ignores underlying conversions
-
                Expression<Func<long?, sbyte, long?>> e3 = (long? a, sbyte b) => a >> b;
                AssertNodeType (e3, ExpressionType.RightShift);
                Assert (null, e3.Compile ().Invoke (null, 11));
@@ -701,7 +718,6 @@ class Tester
                Assert (null, c4 (new MyType (8), null));
                Assert (null, c4 (null, new MyType (8)));
                Assert (64, c4 (new MyType (256), new MyType (2)));
-*/
        }       
 
        //
@@ -744,6 +760,7 @@ class Tester
                e.ConvertCheckedTest ();
                e.DivideTest ();
                e.EqualTest ();
+               e.EqualTestDelegate ();
                e.ExclusiveOrTest ();
                e.GreaterThanTest ();
                e.GreaterThanOrEqualTest ();
index 05f1a46a3ab0d87c305ed68a3b7f9b1751ef8404..c077e0e15b1ecedca5544c9e5afc546a107df92d 100644 (file)
@@ -14,3 +14,4 @@ gtest-367.cs
 
 ltest-11.cs
 gtest-etree-01.cs
+gtest-334.cs # Will have to really investigate why is it allowed
diff --git a/mcs/tests/test-615.cs b/mcs/tests/test-615.cs
new file mode 100644 (file)
index 0000000..8ff1137
--- /dev/null
@@ -0,0 +1,11 @@
+class C
+{
+       public static void Main ()
+       {
+               const bool b = int.MinValue == 0x80000000;
+               
+               ulong res = 0;
+               char c = 'c';
+               res = res * 16 + c;             
+       }
+}