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
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 proc9Flag As Boolean
26
27 Static staticProc1Flag = False As Boolean
28
29Public
30
31 x As DWord
32
33 Sub TestClass()
34 ClearFlags()
35 x = 0
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
45 proc8Flag = True
46 proc9Flag = False
47 End Sub
48 Function CheckFlags() As Boolean
49 Return proc1Flag and proc2Flag and proc3Flag and proc4Flag and proc5Flag and proc6Flag and proc8Flag
50 End Function
51
52 Sub Proc1()
53 proc1Flag = True
54 End Sub
55
56 Function Proc2() As Long
57 proc2Flag = True
58 End Function
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
76 Static Function Proc7( str As String ) As StringEx
77 Return New StringEx( "Proc7 result[" + str + "]" )
78 End Function
79
80 Sub Proc8( a As String )
81 proc8Flag = False
82 End Sub
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
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)
102 dg4 += AddressOf(testObj.Proc8)
103 dg4 -= AddressOf(testObj.Proc8)
104
105 dg1()
106 dg2()
107 dg3( 100 )
108 dg4( New StringEx( "Proc4 calling" ) ) ' 反変引数サポートのテスト
109
110 testObj.x = &H12345678
111 testObj.Ticket177()
112
113 UnitTest( "Delegate1", testObj.CheckFlags() )
114
115 Dim dg7 = New Callback7( AddressOf(TestClass.Proc7) ) ' 共変戻り値サポートのテスト
116 UnitTest( "Delegate2", dg7( "test value" ) = "Proc7 result[test value]" )
117
118End Sub
119
120End Namespace
121
122DelegateTest.TestMain()
Note: See TracBrowser for help on using the repository browser.