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

Last change on this file since 491 was 491, checked in by dai, 16 years ago

・デリゲートの共変戻り値、反変引数に対応した。
・core.libで定義されたデリゲートがアプリケーションプロジェクトで利用できないバグを修正。

File size: 2.3 KB
Line 
1Namespace DelegateTest
2
3Class StringEx
4 Inherits String
5Public
6 Sub StringEx( str As String )
7 String( str )
8 End Sub
9End Class
10
11Delegate Sub Callback1()
12Delegate Function Callback2() As Long
13Delegate Sub Callback3( a As Long )
14Delegate Sub Callback4( a As StringEx )
15Delegate Function Callback7( str As String ) As String
16
17Class TestClass
18 proc1Flag As Boolean
19 proc2Flag As Boolean
20 proc3Flag As Boolean
21 proc4Flag As Boolean
22 proc5Flag As Boolean
23 proc6Flag As Boolean
24 proc8Flag As Boolean
25
26 Static staticProc1Flag = False As Boolean
27
28Public
29 Sub TestClass()
30 ClearFlags()
31 End Sub
32
33 Sub ClearFlags()
34 proc1Flag = False
35 proc2Flag = False
36 proc3Flag = False
37 proc4Flag = False
38 proc5Flag = False
39 proc6Flag = False
40 proc8Flag = True
41 End Sub
42 Function CheckFlags() As Boolean
43 Return proc1Flag and proc2Flag and proc3Flag and proc4Flag and proc5Flag and proc6Flag and proc8Flag
44 End Function
45
46 Sub Proc1()
47 proc1Flag = True
48 End Sub
49
50 Function Proc2() As Long
51 proc2Flag = True
52 End Function
53
54 Sub Proc3or4( a As Long )
55 proc3Flag = (a=100)
56 End Sub
57
58 Sub Proc3or4( a As String )
59 proc4Flag = (a="Proc4 calling")
60 End Sub
61
62 Sub Proc5( a As String )
63 proc5Flag = (a="Proc4 calling")
64 End Sub
65
66 Sub Proc6( a As String )
67 proc6Flag = (a="Proc4 calling")
68 End Sub
69
70 Static Function Proc7( str As String ) As StringEx
71 Return New StringEx( "Proc7 result[" + str + "]" )
72 End Function
73
74 Sub Proc8( a As String )
75 proc8Flag = False
76 End Sub
77End Class
78
79Sub TestMain()
80 Dim testObj As TestClass
81 Dim dg1 = New Callback1( AddressOf(testObj.Proc1) )
82 Dim dg2 = New Callback2( AddressOf(testObj.Proc2) )
83 Dim dg3 = New Callback3( AddressOf(testObj.Proc3or4) )
84 Dim dg4 = New Callback4( AddressOf(testObj.Proc3or4) )
85 dg4 += AddressOf(testObj.Proc5)
86 dg4 += AddressOf(testObj.Proc6)
87 dg4 += AddressOf(testObj.Proc8)
88 dg4 -= AddressOf(testObj.Proc8)
89
90 dg1()
91 dg2()
92 dg3( 100 )
93 dg4( New StringEx( "Proc4 calling" ) ) ' 反変引数サポートのテスト
94
95 UnitTest( "Delegate1", testObj.CheckFlags() )
96
97 Dim dg7 = New Callback7( AddressOf(TestClass.Proc7) ) ' 共変戻り値サポートのテスト
98 UnitTest( "Delegate2", dg7( "test value" ) = "Proc7 result[test value]" )
99
100End Sub
101
102End Namespace
103
104DelegateTest.TestMain()
Note: See TracBrowser for help on using the repository browser.