source: trunk/ab5.0/ablib/TestCase/SimpleTestCase/DelegateTest.ab@ 549

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

#177の不具合が生じていないことを証明するためのテストケースを追加した。

File size: 2.5 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
[549]25 proc9Flag As Boolean
[340]26
27 Static staticProc1Flag = False As Boolean
28
29Public
[549]30
31 x As DWord
32
[340]33 Sub TestClass()
34 ClearFlags()
[549]35 x = 0
[340]36 End Sub
37
38 Sub ClearFlags()
39 proc1Flag = False
40 proc2Flag = False
41 proc3Flag = False
42 proc4Flag = False
43 proc5Flag = False
44 proc6Flag = False
[352]45 proc8Flag = True
[549]46 proc9Flag = False
[340]47 End Sub
48 Function CheckFlags() As Boolean
[352]49 Return proc1Flag and proc2Flag and proc3Flag and proc4Flag and proc5Flag and proc6Flag and proc8Flag
[340]50 End Function
51
52 Sub Proc1()
53 proc1Flag = True
54 End Sub
55
[343]56 Function Proc2() As Long
[340]57 proc2Flag = True
[343]58 End Function
[340]59
60 Sub Proc3or4( a As Long )
61 proc3Flag = (a=100)
62 End Sub
63
64 Sub Proc3or4( a As String )
65 proc4Flag = (a="Proc4 calling")
66 End Sub
67
68 Sub Proc5( a As String )
69 proc5Flag = (a="Proc4 calling")
70 End Sub
71
72 Sub Proc6( a As String )
73 proc6Flag = (a="Proc4 calling")
74 End Sub
75
[491]76 Static Function Proc7( str As String ) As StringEx
77 Return New StringEx( "Proc7 result[" + str + "]" )
[340]78 End Function
[352]79
80 Sub Proc8( a As String )
81 proc8Flag = False
82 End Sub
[549]83
84 Sub Proc9()
85 proc9Flag = ( x = &H12345678 )
86 End Sub
87
88 Sub Ticket177()
89 Dim dg = New Callback1( AddressOf( This.Proc9 ) )
90 dg()
91 End Sub
[340]92End Class
93
94Sub TestMain()
95 Dim testObj As TestClass
96 Dim dg1 = New Callback1( AddressOf(testObj.Proc1) )
97 Dim dg2 = New Callback2( AddressOf(testObj.Proc2) )
98 Dim dg3 = New Callback3( AddressOf(testObj.Proc3or4) )
99 Dim dg4 = New Callback4( AddressOf(testObj.Proc3or4) )
100 dg4 += AddressOf(testObj.Proc5)
101 dg4 += AddressOf(testObj.Proc6)
[352]102 dg4 += AddressOf(testObj.Proc8)
103 dg4 -= AddressOf(testObj.Proc8)
[340]104
105 dg1()
106 dg2()
107 dg3( 100 )
[491]108 dg4( New StringEx( "Proc4 calling" ) ) ' 反変引数サポートのテスト
[340]109
[549]110 testObj.x = &H12345678
111 testObj.Ticket177()
112
[340]113 UnitTest( "Delegate1", testObj.CheckFlags() )
[342]114
[491]115 Dim dg7 = New Callback7( AddressOf(TestClass.Proc7) ) ' 共変戻り値サポートのテスト
[342]116 UnitTest( "Delegate2", dg7( "test value" ) = "Proc7 result[test value]" )
117
[340]118End Sub
119
120End Namespace
121
122DelegateTest.TestMain()
Note: See TracBrowser for help on using the repository browser.