annotate HowTo/Aspects/AsyncAspect.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.Threading;
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 HowTo.Aspects
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
10 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
11 public /*[a]*/abstract/*[/a]*/ class AsyncTestObject
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
12 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
13 // This is a member we will call asynchronously.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
14 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
15 public /*[a]*/int/*[/a]*/ /*[a]*/Test/*[/a]*/(/*[a]*/int intVal, string strVal/*[/a]*/)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
16 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
17 Thread.Sleep(200);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
18 return intVal;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
19 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
20
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
21 // Begin async method should take the same parameter list as the Test method and return IAsyncResult.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
22 // Two additional parameters can be provided: AsyncCallback and state object.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
23 // 'Begin' prefix is a part of the default naming convention.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
24 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
25 [/*[a]*/Async/*[/a]*/] public abstract /*[a]*/IAsyncResult/*[/a]*/ /*[a]*/BeginTest/*[/a]*/(/*[a]*/int intVal, string strVal/*[/a]*/);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
26 [/*[a]*/Async/*[/a]*/] public abstract /*[a]*/IAsyncResult/*[/a]*/ /*[a]*/BeginTest/*[/a]*/(/*[a]*/int intVal, string strVal/*[/a]*/, /*[a]*/AsyncCallback/*[/a]*/ callback);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
27 [/*[a]*/Async/*[/a]*/] public abstract /*[a]*/IAsyncResult/*[/a]*/ /*[a]*/BeginTest/*[/a]*/(/*[a]*/int intVal, string strVal/*[/a]*/, /*[a]*/AsyncCallback/*[/a]*/ callback, /*[a]*/object/*[/a]*/ state);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
28
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
29 // End async method should take IAsyncResult and return the same type as the Test method.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
30 // 'End' prefix is a part of the default naming convention.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
31 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
32 [/*[a]*/Async/*[/a]*/] public abstract /*[a]*/int/*[/a]*/ /*[a]*/EndTest/*[/a]*/ (/*[a]*/IAsyncResult/*[/a]*/ asyncResult);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
33
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
34 // Begin/End naming convention is not required. You can use any name
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
35 // if you provide the target method name as a parameter of the Async attribute.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
36 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
37 [/*[a]*/Async/*[/a]*/("Test")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
38 public abstract /*[a]*/IAsyncResult/*[/a]*/ AnyName(/*[a]*/int intVal/*[/a]*/, /*[a]*/string strVal/*[/a]*/, /*[a]*/AsyncCallback/*[/a]*/ callback, /*[a]*/object/*[/a]*/ state);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
39
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
40 // Here we provide the parameter list along with the method name.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
41 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
42 [/*[a]*/Async/*[/a]*/("Test", typeof(int), typeof(string))]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
43 public abstract /*[a]*/int/*[/a]*/ AnyName(/*[a]*/IAsyncResult/*[/a]*/ asyncResult);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
44 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
45
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
46 [TestFixture]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
47 public class AsyncAspectTest
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
48 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
49 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
50 public void AsyncTest()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
51 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
52 AsyncTestObject o = /*[a]*/TypeAccessor/*[/a]*/<AsyncTestObject>.CreateInstance();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
53
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
54 IAsyncResult ar = o./*[a]*/BeginTest/*[/a]*/(1, "10");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
55 Assert.AreEqual(1, o./*[a]*/EndTest/*[/a]*/(ar));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
56 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
57
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
58 private static void /*[a]*/CallBack/*[/a]*/(IAsyncResult ar)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
59 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
60 Console.WriteLine("Callback");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
61
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
62 AsyncTestObject o = (AsyncTestObject)ar.AsyncState;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
63 o.EndTest(ar);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
64 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
65
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
66 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
67 public void CallbackTest()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
68 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
69 AsyncTestObject o = TypeAccessor<AsyncTestObject>.CreateInstance();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
70
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
71 o.BeginTest(2, null, /*[a]*/CallBack/*[/a]*/, /*[a]*/o/*[/a]*/);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
72 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
73
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
74 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
75 public void AnyNameTest()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
76 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
77 AsyncTestObject o = TypeAccessor<AsyncTestObject>.CreateInstance();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
78
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
79 IAsyncResult ar = o./*[a]*/AnyName/*[/a]*/(2, null, null, null);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
80 Assert.AreEqual(2, o./*[a]*/AnyName/*[/a]*/(ar));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
81 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
82 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
83 }