File: LateBindingTests6.vb

package info (click to toggle)
mono-basic 2.10-2
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 22,964 kB
  • sloc: cs: 34,086; xml: 7,804; makefile: 471; sh: 317
file content (342 lines) | stat: -rw-r--r-- 8,184 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
'
' LateBindingTests6.vb
'
' Author:
'   Boris Kirzner (borisk@mainsoft.com)
'

'
' Copyright (C) 2002-2006 Mainsoft Corporation.
' Copyright (C) 2004-2006 Novell, Inc (http://www.novell.com)
'
' Permission is hereby granted, free of charge, to any person obtaining
' a copy of this software and associated documentation files (the
' "Software"), to deal in the Software without restriction, including
' without limitation the rights to use, copy, modify, merge, publish,
' distribute, sublicense, and/or sell copies of the Software, and to
' permit persons to whom the Software is furnished to do so, subject to
' the following conditions:
' 
' The above copyright notice and this permission notice shall be
' included in all copies or substantial portions of the Software.
' 
' THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
' EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
' MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
' NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
' LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
' OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
' WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Imports System
Imports System.Reflection
Imports NUnit.Framework

<TestFixture()> _
Public Class LateBindingTests6
    Class C100
        Overridable Function fun(ByVal j As Integer)
            Return -1
        End Function
    End Class

    Class C200
        Inherits C100
        Overrides Function fun(ByVal j As Integer)
            i = j
            Return i
        End Function
        Public i As Integer = 2
    End Class

    <Test()> _
    Public Sub LateBind_OverrideA()
        Dim a As Object = New C200
        Assert.AreEqual(2, a.fun(a.i))
    End Sub

    Class B100
        Overridable Function F() As Integer
            Return 5
        End Function
    End Class

    Class D100
        Inherits B100

        Overrides Function F() As Integer
            ' you should be able to access 
            ' the members of base class 
            ' using 'MyBase' as follows
            MyBase.F()

            Return 10
        End Function
    End Class

    <Test()> _
    Public Sub LateBind_OverrideB()
        Dim x As Object

        x = New B100
        Assert.AreEqual(5, x.F())

        x = New D100
        Assert.AreEqual(10, x.F())
    End Sub

    Class base100
        Default Public Overridable ReadOnly Property Item(ByVal i As Integer) As Integer
            Get
                Return i
            End Get
        End Property
    End Class

    Class derive100
        Inherits base100
        Default Public Overrides ReadOnly Property Item(ByVal i As Integer) As Integer
            Get
                Return 2 * i
            End Get
        End Property
    End Class

    <Test()> _
    Public Sub LateBind_OverrideC()
        Dim a As Object = New derive100
        Assert.AreEqual(20, a(10))
    End Sub

    Class base200
        Public Overridable ReadOnly Property Item(ByVal i As Integer) As Integer
            Get
                Return i
            End Get
        End Property
    End Class

    Class derive200
        Inherits base200
        Public Overrides ReadOnly Property Item(ByVal i As Integer) As Integer
            Get
                Return 2 * i
            End Get
        End Property
    End Class

    <Test()> _
    Public Sub LateBind_OverrideD()
        Dim a As Object = New derive200
        Assert.AreEqual(20, a.Item(10))
    End Sub

    Class base300
        Public Overridable Property Item(ByVal i As Integer) As Integer
            Get
                Return i
            End Get
            Set(ByVal Value As Integer)
            End Set
        End Property
    End Class

    Class derive300
        Inherits base300
        Public Overrides Property Item(ByVal i As Integer) As Integer
            Get
                Return 2 * i
            End Get
            Set(ByVal Value As Integer)
            End Set
        End Property
    End Class

    <Test()> _
    Public Sub LateBind_OverrideE()
        Dim a As Object = New derive300
        Assert.AreEqual(20, a.Item(10))
    End Sub

    Class C5
        Private i As Integer = 20

        Public Property p() As Integer
            Get
                Return i
            End Get

            Set(ByVal val As Integer)
                i = val
            End Set

        End Property
    End Class

    <Test()> _
    Public Sub LateBind_PropertyA()
        Dim o As Object = New C5
        Assert.AreEqual(20, o.p)
    End Sub

    <Test()> _
   Public Sub LateBind_PropertyB()
        Dim o As Object = New C5
        o.p = 10
        Assert.AreEqual(10, o.p)
    End Sub

    Class C6
        Public Shared y As Integer = 20
        Public z As Integer = 30

        Shared Sub New()
        End Sub

        Public Sub New()
        End Sub

        Shared Function f() As Integer
            Return 50
        End Function
    End Class

    <Test()> _
    Public Sub LateBind_VariablesA()
        Assert.AreEqual(20, C6.y)

        Dim c As Object = New C6
        Dim d As Object = New C6

        Assert.AreEqual(20, c.y)
        Assert.AreEqual(20, d.y)

        C6.y = 25
        Assert.AreEqual(25, c.y)

        c.y = 35
        Assert.AreEqual(35, C6.y)
        Assert.AreEqual(35, d.y)
        Assert.AreEqual(30, c.z)
        Assert.AreEqual(50, C6.f)
    End Sub

    Class A100
        Public Shared i As Integer
    End Class

    <Test()> _
    Public Sub LateBind_VariablesB()
        Dim o As Object = New A100
        o.i = o.i + 1
        A100.i = A100.i + 1
        Assert.AreEqual(2, A100.i)
    End Sub

    Class A200
        Public i As Integer
        Sub New()
            i = 20
        End Sub
        Sub New(ByVal a As A200)
            i = a.i
        End Sub
    End Class

    <Test()> _
    Public Sub LateBind_VariablesC()
        Dim a As Object = New A200
        Dim j As Object = New A200(a)
        Assert.AreEqual(20, j.i)
    End Sub

    Class A300
        Inherits System.MarshalByRefObject
        Public Function fun()
            Return -1
        End Function
    End Class

    Class A400
        Public Function fun(ByVal a As A300)
            Return 1
        End Function
    End Class

    <Test()> _
    Public Sub LateBind_VariablesD()
        Dim b As Object = New A300
        Dim a As Object = New A400
        Assert.AreEqual(1, a.fun(b))
    End Sub

    Class C300
        Public a1 As Integer = 10
        Public a2 As String = "Hello"
        Sub f1()

        End Sub
    End Class


    <Test()> _
    Public Sub LateBind_IndexOfReturnObjectFromProperty1()
        Dim o As Object
        Dim res As Object
        o = New A
        res = o.dodo(0)
        Assert.AreEqual("1", res)
    End Sub

    <Test()> _
    Public Sub LateBind_IndexOfReturnObjectFromProperty2()
        Dim o As Object
        Dim res As Object
        o = New B
        res = o.dodo(0)
        Assert.AreEqual("3", res)
    End Sub

    Public Class A
        Public ReadOnly Property dodo() As Object()
            Get
                Return New Object() {"1", "2"}
            End Get
        End Property
    End Class

    Public Class B
        Public ReadOnly Property dodo() As C
            Get
                Return New C
            End Get
        End Property
    End Class

    Public Class C
        Default Public ReadOnly Property Blubber(ByVal i As Integer) As Object
            Get
                Return "3"
            End Get
        End Property
    End Class

    <Test()> _
    Public Sub LateBind_WithStatementA()
        Dim a As Object = New C300
        Dim bRes1 As Boolean = False
        Dim bRes2 As Boolean = False

        With a
            .a2 = "Hello World"
            GoTo labelA
            ' Exit before all statements in With have been executed  
            Throw New Exception("Exit before all statements in With have been executed")
labelA:
        End With
        bRes1 = False
        If (a.a1 = 20) Then bRes1 = True
        Assert.AreEqual(False, bRes1)

    End Sub
End Class