Mercurial > pub > bltoolkit
comparison UnitTests/CS/Aspects/AsyncAspectTest.cs @ 0:f990fcb411a9
Копия текущей версии из github
| author | cin |
|---|---|
| date | Thu, 27 Mar 2014 21:46:09 +0400 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 0:f990fcb411a9 |
|---|---|
| 1 using System; | |
| 2 using System.Diagnostics; | |
| 3 | |
| 4 using NUnit.Framework; | |
| 5 | |
| 6 using BLToolkit.Aspects; | |
| 7 using BLToolkit.Reflection; | |
| 8 | |
| 9 namespace Aspects | |
| 10 { | |
| 11 [TestFixture] | |
| 12 public class AsyncAspectTest | |
| 13 { | |
| 14 private const int ExecutionTime = 200; | |
| 15 | |
| 16 public abstract class TestObject | |
| 17 { | |
| 18 public int Test(int intVal, string strVal) | |
| 19 { | |
| 20 System.Threading.Thread.Sleep(ExecutionTime + 30); | |
| 21 return intVal; | |
| 22 } | |
| 23 | |
| 24 [Async] public abstract IAsyncResult BeginTest(int intVal, string strVal); | |
| 25 [Async] public abstract IAsyncResult BeginTest(int intVal, string strVal, AsyncCallback callback); | |
| 26 [Async] public abstract IAsyncResult BeginTest(int intVal, string strVal, AsyncCallback callback, object state); | |
| 27 [Async] public abstract int EndTest(IAsyncResult asyncResult); | |
| 28 | |
| 29 [Async("Test")] | |
| 30 public abstract IAsyncResult AnyName(int intVal, string strVal, AsyncCallback callback, object state); | |
| 31 [Async("Test", typeof(int), typeof(string))] | |
| 32 public abstract int AnyName(IAsyncResult asyncResult); | |
| 33 } | |
| 34 | |
| 35 public abstract class TestObject<T> | |
| 36 { | |
| 37 public T Test(T intVal) | |
| 38 { | |
| 39 System.Threading.Thread.Sleep(ExecutionTime + 30); | |
| 40 return intVal; | |
| 41 } | |
| 42 | |
| 43 [Async] public abstract IAsyncResult BeginTest(T intVal); | |
| 44 [Async] public abstract T EndTest(IAsyncResult asyncResult); | |
| 45 } | |
| 46 | |
| 47 [Test] | |
| 48 public void AsyncTest() | |
| 49 { | |
| 50 var o = TypeAccessor<TestObject>.CreateInstanceEx(); | |
| 51 var sw = Stopwatch.StartNew(); | |
| 52 | |
| 53 Assert.AreEqual(1, o.Test(1, null)); | |
| 54 var mss = sw.ElapsedMilliseconds; | |
| 55 Assert.IsTrue(mss >= ExecutionTime); | |
| 56 | |
| 57 sw.Reset(); | |
| 58 sw.Start(); | |
| 59 | |
| 60 var ar = o.BeginTest(2, "12"); | |
| 61 mss = sw.ElapsedMilliseconds; | |
| 62 Assert.IsTrue(mss <= ExecutionTime); | |
| 63 | |
| 64 Assert.AreEqual(2, o.EndTest(ar)); | |
| 65 mss = sw.ElapsedMilliseconds; | |
| 66 Assert.IsTrue(mss >= ExecutionTime); | |
| 67 } | |
| 68 | |
| 69 [Test] | |
| 70 public void GenericTest() | |
| 71 { | |
| 72 var o = TypeAccessor<TestObject<DateTime>>.CreateInstanceEx(); | |
| 73 var now = DateTime.Now; | |
| 74 var ar = o.BeginTest(now); | |
| 75 | |
| 76 Assert.AreEqual(now, o.EndTest(ar)); | |
| 77 } | |
| 78 | |
| 79 private static void CallBack(IAsyncResult ar) | |
| 80 { | |
| 81 var o = (TestObject) ar.AsyncState; | |
| 82 Console.WriteLine("Callback"); | |
| 83 o.EndTest(ar); | |
| 84 } | |
| 85 | |
| 86 [Test] | |
| 87 public void CallbackTest() | |
| 88 { | |
| 89 var o = TypeAccessor<TestObject>.CreateInstanceEx(); | |
| 90 | |
| 91 o.BeginTest(2, null, CallBack, o); | |
| 92 } | |
| 93 | |
| 94 [Test] | |
| 95 public void NoStateTest() | |
| 96 { | |
| 97 var o = TypeAccessor<TestObject>.CreateInstanceEx(); | |
| 98 | |
| 99 Assert.AreEqual(1, o.Test(1, null)); | |
| 100 | |
| 101 var ar = o.BeginTest(2, null, null); | |
| 102 Assert.AreEqual(2, o.EndTest(ar)); | |
| 103 } | |
| 104 | |
| 105 [Test] | |
| 106 public void NoCallbackTest() | |
| 107 { | |
| 108 var o = TypeAccessor<TestObject>.CreateInstanceEx(); | |
| 109 | |
| 110 Assert.AreEqual(1, o.Test(1, null)); | |
| 111 | |
| 112 var ar = o.BeginTest(2, "1234"); | |
| 113 Assert.AreEqual(2, o.EndTest(ar)); | |
| 114 } | |
| 115 | |
| 116 [Test] | |
| 117 public void AnyNameTest() | |
| 118 { | |
| 119 var o = TypeAccessor<TestObject>.CreateInstanceEx(); | |
| 120 | |
| 121 var ar = o.AnyName(2, null, null, null); | |
| 122 Assert.AreEqual(2, o.AnyName(ar)); | |
| 123 } | |
| 124 } | |
| 125 } |
