Fix CancellationTokenSourceTest.ReEntrantRegistrationTest
authorAndrea Canciani <ranma42@gmail.com>
Tue, 31 Dec 2013 20:55:27 +0000 (21:55 +0100)
committerAndrea Canciani <ranma42@gmail.com>
Tue, 31 Dec 2013 21:00:34 +0000 (22:00 +0100)
This test run on .NET would result in both "unregister" and "register"
set to a "true" value. In order to ensure that the "unregister = true"
fragment is not executed, its disposal needs to be registered after,
because on .NET the CancellationTokenSource has a LIFO behavior.

This change simplifies the code and makes the expected behavior
consistent with that of .NET.

mcs/class/corlib/Test/System.Threading/CancellationTokenSourceTest.cs

index 644d0c504996f360a78b8e65d7527c88763a5dfe..52f2d1b625ca75b1dbc8a32c0e5b636a2f95454f 100644 (file)
@@ -375,10 +375,9 @@ namespace MonoTests.System.Threading
                        var source = new CancellationTokenSource ();
                        var token = source.Token;
 
-                       var reg = new CancellationTokenRegistration ();
                        Console.WriteLine ("Test1");
+                       var reg = token.Register (() => unregister = true);
                        token.Register (() => reg.Dispose ());
-                       reg = token.Register (() => unregister = true);
                        token.Register (() => { Console.WriteLine ("Gnyah"); token.Register (() => register = true); });
                        source.Cancel ();