source: trunk/TestCase/SimpleTestCase/DelegateTest.ab@ 340

Last change on this file since 340 was 340, checked in by dai, 17 years ago

デリゲートを試験実装
【現状のデリゲート制約】
・ダイナミックメソッド限定
・パラメータ相違チェックは行っていない

GCHandle.allocatedメンバをListクラスに変更。
List.Removeメソッドを追加

File size: 1.8 KB
Line 
1Namespace DelegateTest
2
3Delegate Sub Callback1()
4Delegate Function Callback2() As Long
5Delegate Sub Callback3( a As Long )
6Delegate Sub Callback4( a As String )
7Delegate Function Callback7() As Long
8
9
10Class TestClass
11 proc1Flag As Boolean
12 proc2Flag As Boolean
13 proc3Flag As Boolean
14 proc4Flag As Boolean
15 proc5Flag As Boolean
16 proc6Flag As Boolean
17
18 Static staticProc1Flag = False As Boolean
19
20Public
21 Sub TestClass()
22 ClearFlags()
23 End Sub
24
25 Sub ClearFlags()
26 proc1Flag = False
27 proc2Flag = False
28 proc3Flag = False
29 proc4Flag = False
30 proc5Flag = False
31 proc6Flag = False
32 End Sub
33 Function CheckFlags() As Boolean
34 Return proc1Flag and proc2Flag and proc3Flag and proc4Flag and proc5Flag and proc6Flag
35 End Function
36
37 Sub Proc1()
38 proc1Flag = True
39 End Sub
40
41 Sub Proc2()
42 proc2Flag = True
43 End Sub
44
45 Sub Proc3or4( a As Long )
46 proc3Flag = (a=100)
47 End Sub
48
49 Sub Proc3or4( a As String )
50 proc4Flag = (a="Proc4 calling")
51 End Sub
52
53 Sub Proc5( a As String )
54 proc5Flag = (a="Proc4 calling")
55 End Sub
56
57 Sub Proc6( a As String )
58 proc6Flag = (a="Proc4 calling")
59 End Sub
60
61 Function Proc7() As String
62 Return "Proc7 result"
63 End Function
64End Class
65
66Sub TestMain()
67 Dim testObj As TestClass
68 Dim dg1 = New Callback1( AddressOf(testObj.Proc1) )
69 Dim dg2 = New Callback2( AddressOf(testObj.Proc2) )
70 Dim dg3 = New Callback3( AddressOf(testObj.Proc3or4) )
71 Dim dg4 = New Callback4( AddressOf(testObj.Proc3or4) )
72 dg4 += AddressOf(testObj.Proc5)
73 dg4 += AddressOf(testObj.Proc6)
74
75 dg1()
76 dg2()
77 dg3( 100 )
78 dg4( "Proc4 calling" )
79
80 UnitTest( "Delegate1", testObj.CheckFlags() )
81/*
82 Dim dg7 = New Callback7( AddressOf(TestClass.Proc7) )
83 UnitTest( "Delegate2", dg7() = "Proc7 result" )
84*/
85End Sub
86
87End Namespace
88
89DelegateTest.TestMain()
Note: See TracBrowser for help on using the repository browser.