X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mcs%2Ftests%2Ftest-7.cs;h=8d27a6dec75a797514cddef3046d6492ac945db6;hb=e5fb257d8bf0b3dae7e404a5839b550bee78d685;hp=9c958cb8d43152173a05a82fd60df36609426657;hpb=59f1181e7b83b8f20c480b44d55a2a6904b1ac8f;p=mono.git diff --git a/mcs/tests/test-7.cs b/mcs/tests/test-7.cs index 9c958cb8d43..8d27a6dec75 100644 --- a/mcs/tests/test-7.cs +++ b/mcs/tests/test-7.cs @@ -2,52 +2,205 @@ using System; namespace Mine { + public class MyBoolean { + public static implicit operator bool (MyBoolean x) + { + return true; + } + } + + public class MyTrueFalse { + public static bool operator true (MyTrueFalse i) + { + return true; + } + + public static bool operator false (MyTrueFalse i) + { + return false; + } + } + public class Blah { public int i; - public static void Main () + public static int Main () { - Console.WriteLine ("Blah "); - Blah k; + Blah k, l; + + k = new Blah (2) + new Blah (3); + if (k.i != 5) + return 1; + + k = ~ new Blah (5); + if (k.i != -6) + return 1; + + + k = + new Blah (4); + if (k.i != 4) + return 1; + + k = - new Blah (21); + if (k.i != -21) + return 1; + + k = new Blah (22) - new Blah (21); + if (k.i != 1) + return 1; - k = new Blah () + new Blah (); - k = ~ new Blah (); - k = + new Blah (); + if (!k) + Console.WriteLine ("! returned true"); int number = k; - Console.WriteLine (number); + if (number != 1) + return 1; - // Uncomment this to see how beautifully we catch errors :) - // Console.WriteLine (k); + k++; + ++k; + + if (k) + Console.WriteLine ("k is definitely true"); + + k = new Blah (30); + + double f = (double) k; + + if (f != 30.0) + return 1; + + int i = new Blah (5) * new Blah (10); + + if (i != 50) + return 1; + + k = new Blah (50); + l = new Blah (10); - //Console.WriteLine ("This is : " + number); + i = k / l; + + if (i != 5) + return 1; + + i = k % l; + + if (i != 0) + return 1; + + MyBoolean myb = new MyBoolean (); + + if (!myb) + return 10; + + // + // Tests the conditional operator invoking operator true + MyTrueFalse mf = new MyTrueFalse (); + int x = mf ? 1 : 2; + if (x != 1) + return 11; + Console.WriteLine ("Test passed"); + return 0; } - + + public Blah (int v) + { + i = v; + } + public static Blah operator + (Blah i, Blah j) { - Console.WriteLine ("Wooo!"); - return null; + Blah b = new Blah (i.i + j.i); + Console.WriteLine ("Overload binary + operator"); + return b; } public static Blah operator + (Blah i) { - Console.WriteLine ("This is the unary one !"); - return null; + Console.WriteLine ("Overload unary + operator"); + return new Blah (i.i); + } + + public static Blah operator - (Blah i) + { + Console.WriteLine ("Overloaded unary - operator"); + return new Blah (- i.i); + } + + public static Blah operator - (Blah i, Blah j) + { + Blah b = new Blah (i.i - j.i); + Console.WriteLine ("Overloaded binary - operator"); + return b; + } + + public static int operator * (Blah i, Blah j) + { + Console.WriteLine ("Overloaded binary * operator"); + return i.i * j.i; + } + + public static int operator / (Blah i, Blah j) + { + Console.WriteLine ("Overloaded binary / operator"); + return i.i / j.i; + } + + public static int operator % (Blah i, Blah j) + { + Console.WriteLine ("Overloaded binary % operator"); + return i.i % j.i; } - public static Blah operator ~ (Blah i) { - Console.WriteLine ("This is even better !"); - return null; + Console.WriteLine ("Overloaded ~ operator"); + return new Blah (~i.i); } + public static bool operator ! (Blah i) + { + Console.WriteLine ("Overloaded ! operator"); + return (i.i == 1); + } + + public static Blah operator ++ (Blah i) + { + Blah b = new Blah (i.i + 1); + Console.WriteLine ("Incrementing i"); + return b; + } + + public static Blah operator -- (Blah i) + { + Blah b = new Blah (i.i - 1); + Console.WriteLine ("Decrementing i"); + return b; + } + + public static bool operator true (Blah i) + { + Console.WriteLine ("Overloaded true operator"); + return (i.i == 3); + } + + public static bool operator false (Blah i) + { + Console.WriteLine ("Overloaded false operator"); + return (i.i != 1); + } + public static implicit operator int (Blah i) { - Console.WriteLine ("User-defined implicit conversion works !"); - return 3; + Console.WriteLine ("Converting implicitly from Blah->int"); + return i.i; + } + + public static explicit operator double (Blah i) + { + Console.WriteLine ("Converting explicitly from Blah->double"); + return (double) i.i; } }