annotate UnitTests/CS/Aspects/AsyncAspectTest.cs @ 3:1ef98bd70424

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