X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Ftests%2Fdelegate7.cs;h=dd3a2a3ea27a4cbebd7ccb25cf428109d8afd7ea;hb=HEAD;hp=6e1fe94e17ae896af4f52d07276956143371704f;hpb=7ff8f29ff29fa3f08ef305ac43ef079097323286;p=mono.git diff --git a/mono/tests/delegate7.cs b/mono/tests/delegate7.cs index 6e1fe94e17a..dd3a2a3ea27 100644 --- a/mono/tests/delegate7.cs +++ b/mono/tests/delegate7.cs @@ -4,8 +4,6 @@ using System.Runtime.InteropServices; class Tests { delegate void SimpleDelegate (); - public static int v = 0; - static void F1 () { v += 1; Console.WriteLine ("Test.F1"); @@ -14,45 +12,148 @@ class Tests { v += 2; Console.WriteLine ("Test.F2"); } - static void F3 () { + static void F4 () { v += 4; - Console.WriteLine ("Test.F3"); + Console.WriteLine ("Test.F4"); + } + static void F8 () { + v += 8; + Console.WriteLine ("Test.F8"); } public static int Main () { return TestDriver.RunTests (typeof (Tests)); } + static int v = 0; + static bool check_is_expected_v (SimpleDelegate d, int expected_v) + { + v = 0; + d (); + return v == expected_v; + } + static public int test_0_test () { - SimpleDelegate t; SimpleDelegate d1 = new SimpleDelegate (F1); SimpleDelegate d2 = new SimpleDelegate (F2); - SimpleDelegate d3 = new SimpleDelegate (F3); + SimpleDelegate d4 = new SimpleDelegate (F4); + SimpleDelegate d8 = new SimpleDelegate (F8); + + if (d1 - d1 != null) + return 1; + if (!check_is_expected_v (d1 - d2, 1)) + return 2; + if (!check_is_expected_v (d1 - d4, 1)) + return 3; + + if (!check_is_expected_v (d2 - d1, 2)) + return 4; + if (d2 - d2 != null) + return 5; + if (!check_is_expected_v (d2 - d4, 2)) + return 6; + + if (!check_is_expected_v (d4 - d1, 4)) + return 7; + if (!check_is_expected_v (d4 - d2, 4)) + return 8; + if (d4 - d4 != null) + return 9; SimpleDelegate d12 = d1 + d2; - SimpleDelegate d13 = d1 + d3; - SimpleDelegate d23 = d2 + d3; - SimpleDelegate d123 = d1 + d2 + d3; + SimpleDelegate d14 = d1 + d4; + SimpleDelegate d24 = d2 + d4; + + if (!check_is_expected_v (d12 - d1, 2)) + return 11; + if (!check_is_expected_v (d12 - d2, 1)) + return 12; + if (!check_is_expected_v (d12 - d4, 3)) + return 13; + + if (!check_is_expected_v (d14 - d1, 4)) + return 14; + if (!check_is_expected_v (d14 - d2, 5)) + return 15; + if (!check_is_expected_v (d14 - d4, 1)) + return 16; + + if (!check_is_expected_v (d14 - d1, 4)) + return 17; + if (!check_is_expected_v (d14 - d2, 5)) + return 18; + if (!check_is_expected_v (d14 - d4, 1)) + return 19; + + if (d12 - d12 != null) + return 21; + if (!check_is_expected_v (d12 - d14, 3)) + return 22; + if (!check_is_expected_v (d12 - d24, 3)) + return 23; + + if (!check_is_expected_v (d14 - d12, 5)) + return 24; + if (d14 - d14 != null) + return 25; + if (!check_is_expected_v (d14 - d24, 5)) + return 26; + + if (!check_is_expected_v (d24 - d12, 6)) + return 27; + if (!check_is_expected_v (d24 - d14, 6)) + return 28; + if (d24 - d24 != null) + return 29; + + SimpleDelegate d124 = d1 + d2 + d4; + + if (!check_is_expected_v (d124 - d1, 6)) + return 31; + if (!check_is_expected_v (d124 - d2, 5)) + return 32; + if (!check_is_expected_v (d124 - d4, 3)) + return 33; + + if (!check_is_expected_v (d124 - d12, 4)) + return 34; + if (!check_is_expected_v (d124 - d14, 7)) + return 35; + if (!check_is_expected_v (d124 - d24, 1)) + return 36; + + if (d124 - d124 != null) + return 37; + + SimpleDelegate d1248 = d1 + d2 + d4 + d8; + + if (!check_is_expected_v (d1248 - (d1 + d2), 12)) + return 41; + if (!check_is_expected_v (d1248 - (d1 + d4), 15)) + return 42; + if (!check_is_expected_v (d1248 - (d1 + d8), 15)) + return 43; + if (!check_is_expected_v (d1248 - (d2 + d4), 9)) + return 44; + if (!check_is_expected_v (d1248 - (d2 + d8), 15)) + return 45; + if (!check_is_expected_v (d1248 - (d4 + d8), 3)) + return 46; + + if (!check_is_expected_v (d1248 - (d1 + d2 + d4), 8)) + return 51; + if (!check_is_expected_v (d1248 - (d1 + d2 + d8), 15)) + return 52; + if (!check_is_expected_v (d1248 - (d1 + d4 + d8), 15)) + return 53; + if (!check_is_expected_v (d1248 - (d2 + d4 + d8), 1)) + return 54; + if (!check_is_expected_v (d1248 - (d2 + d4 + d8), 1)) + return 54; + + if (d1248 - d1248 != null) + return 55; - v = 0; - t = d123 - d13; - t (); - if (v != 7) - return 1; - - v = 0; - t = d123 - d12; - t (); - if (v != 4) - return 1; - - v = 0; - t = d123 - d23; - t (); - if (v != 1) - return 1; - - return 0; }