1 // Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information. 2 3 using System; 4 using System.Collections.Generic; 5 using System.Linq; 6 using System.Text; 7 using System.Threading; 8 9 namespace ReactiveTests 10 { 11 #if SILVERLIGHT && !SILVERLIGHTM7 12 public class TestBase : Microsoft.Silverlight.Testing.SilverlightTest 13 { RunAsync(Action<Waiter> a)14 public void RunAsync(Action<Waiter> a) 15 { 16 EnqueueCallback(() => 17 { 18 var w = new Waiter(TestComplete); 19 a(w); 20 w.Wait(); 21 }); 22 } 23 CompleteAsync()24 public void CompleteAsync() 25 { 26 EnqueueTestComplete(); 27 } 28 } 29 30 public class Waiter 31 { 32 private Action _complete; 33 Waiter(Action complete)34 public Waiter(Action complete) 35 { 36 _complete = complete; 37 } 38 Set()39 public void Set() 40 { 41 _complete(); 42 } 43 Wait()44 public void Wait() 45 { 46 } 47 } 48 #else 49 public class TestBase 50 { 51 public void RunAsync(Action<Waiter> a) 52 { 53 var w = new Waiter(); 54 a(w); 55 w.Wait(); 56 } 57 } 58 59 public class Waiter 60 { 61 private ManualResetEvent _evt = new ManualResetEvent(false); 62 63 public void Set() 64 { 65 _evt.Set(); 66 } 67 68 public void Wait() 69 { 70 _evt.WaitOne(); 71 } 72 } 73 74 [AttributeUsage(AttributeTargets.Method)] 75 public class AsynchronousAttribute : Attribute 76 { 77 } 78 #endif 79 } 80