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
RevLine 
[340]1Namespace DelegateTest
2
[491]3Class StringEx
4 Inherits String
5Public
6 Sub StringEx( str As String )
7 String( str )
8 End Sub
9End Class
10
[340]11Delegate Sub Callback1()
12Delegate Function Callback2() As Long
13Delegate Sub Callback3( a As Long )
[491]14Delegate Sub Callback4( a As StringEx )
[342]15Delegate Function Callback7( str As String ) As String
[340]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
[352]24 proc8Flag As Boolean
[340]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
[352]40 proc8Flag = True
[340]41 End Sub
42 Function CheckFlags() As Boolean
[352]43 Return proc1Flag and proc2Flag and proc3Flag and proc4Flag and proc5Flag and proc6Flag and proc8Flag
[340]44 End Function
45
46 Sub Proc1()
47 proc1Flag = True
48 End Sub
49
[343]50 Function Proc2() As Long
[340]51 proc2Flag = True
[343]52 End Function
[340]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
[491]70 Static Function Proc7( str As String ) As StringEx
71 Return New StringEx( "Proc7 result[" + str + "]" )
[340]72 End Function
[352]73
74 Sub Proc8( a As String )
75 proc8Flag = False
76 End Sub
[340]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)
[352]87 dg4 += AddressOf(testObj.Proc8)
88 dg4 -= AddressOf(testObj.Proc8)
[340]89
90 dg1()
91 dg2()
92 dg3( 100 )
[491]93 dg4( New StringEx( "Proc4 calling" ) ) ' 反変引数サポートのテスト
[340]94
95 UnitTest( "Delegate1", testObj.CheckFlags() )
[342]96
[491]97 Dim dg7 = New Callback7( AddressOf(TestClass.Proc7) ) ' 共変戻り値サポートのテスト
[342]98 UnitTest( "Delegate2", dg7( "test value" ) = "Proc7 result[test value]" )
99
[340]100End Sub
101
102End Namespace
103
104DelegateTest.TestMain()
Note: See TracBrowser for help on using the repository browser.