@@ -113,18 +113,24 @@ public void TestReturnCharPointer()
113
113
[ Test ]
114
114
public void TestIndexer ( )
115
115
{
116
- var foo = new Foo ( ) ;
117
-
118
- Assert . That ( foo [ 0 ] , Is . EqualTo ( 50 ) ) ;
119
- foo [ 0 ] = 250 ;
120
- Assert . That ( foo [ 0 ] , Is . EqualTo ( 250 ) ) ;
116
+ using ( var foo = new Foo ( ) )
117
+ {
118
+ Assert . That ( foo [ 0 ] , Is . EqualTo ( 50 ) ) ;
119
+ foo [ 0 ] = 250 ;
120
+ Assert . That ( foo [ 0 ] , Is . EqualTo ( 250 ) ) ;
121
121
122
- Assert . That ( foo [ ( uint ) 0 ] , Is . EqualTo ( 15 ) ) ;
122
+ Assert . That ( foo [ ( uint ) 0 ] , Is . EqualTo ( 15 ) ) ;
123
+ }
123
124
124
- var bar = new Bar ( ) ;
125
- Assert . That ( bar [ 0 ] . A , Is . EqualTo ( 10 ) ) ;
126
- bar [ 0 ] = new Foo { A = 25 } ;
127
- Assert . That ( bar [ 0 ] . A , Is . EqualTo ( 25 ) ) ;
125
+ using ( var bar = new Bar ( ) )
126
+ {
127
+ Assert . That ( bar [ 0 ] . A , Is . EqualTo ( 10 ) ) ;
128
+ using ( Foo foo = new Foo { A = 25 } )
129
+ {
130
+ bar [ 0 ] = foo ;
131
+ Assert . That ( bar [ 0 ] . A , Is . EqualTo ( 25 ) ) ;
132
+ }
133
+ }
128
134
}
129
135
130
136
[ Test ]
@@ -143,8 +149,11 @@ public void TestMultipleInheritance()
143
149
var bar = ( IBar ) baz ;
144
150
Assert . That ( bar . Method , Is . EqualTo ( 2 ) ) ;
145
151
Assert . That ( baz [ 0 ] , Is . EqualTo ( 50 ) ) ;
146
- bar [ 0 ] = new Foo { A = 1000 } ;
147
- Assert . That ( bar [ 0 ] . A , Is . EqualTo ( 1000 ) ) ;
152
+ using ( Foo foo = new Foo { A = 1000 } )
153
+ {
154
+ bar [ 0 ] = foo ;
155
+ Assert . That ( bar [ 0 ] . A , Is . EqualTo ( 1000 ) ) ;
156
+ }
148
157
Assert . That ( baz . FarAwayFunc , Is . EqualTo ( 20 ) ) ;
149
158
Assert . That ( baz . TakesQux ( baz ) , Is . EqualTo ( 20 ) ) ;
150
159
Assert . That ( baz . ReturnQux ( ) . FarAwayFunc , Is . EqualTo ( 20 ) ) ;
@@ -160,12 +169,14 @@ public void TestMultipleInheritance()
160
169
[ Test ]
161
170
public void TestProperties ( )
162
171
{
163
- var proprietor = new Proprietor ( ) ;
164
- Assert . That ( proprietor . Parent , Is . EqualTo ( 0 ) ) ;
165
- proprietor . Value = 20 ;
166
- Assert . That ( proprietor . Value , Is . EqualTo ( 20 ) ) ;
167
- proprietor . Prop = 50 ;
168
- Assert . That ( proprietor . Prop , Is . EqualTo ( 50 ) ) ;
172
+ using ( var proprietor = new Proprietor ( ) )
173
+ {
174
+ Assert . That ( proprietor . Parent , Is . EqualTo ( 0 ) ) ;
175
+ proprietor . Value = 20 ;
176
+ Assert . That ( proprietor . Value , Is . EqualTo ( 20 ) ) ;
177
+ proprietor . Prop = 50 ;
178
+ Assert . That ( proprietor . Prop , Is . EqualTo ( 50 ) ) ;
179
+ }
169
180
using ( var qux = new Qux ( ) )
170
181
{
171
182
using ( var p = new P ( ( IQux ) qux ) { Value = 20 } )
@@ -200,21 +211,25 @@ public void TestDestructors()
200
211
CSharp . TestDestructors . InitMarker ( ) ;
201
212
Assert . AreEqual ( 0 , CSharp . TestDestructors . Marker ) ;
202
213
203
- var dtors = new TestDestructors ( ) ;
204
- Assert . AreEqual ( 0xf00d , CSharp . TestDestructors . Marker ) ;
205
- dtors . Dispose ( ) ;
214
+ using ( var dtors = new TestDestructors ( ) )
215
+ {
216
+ Assert . AreEqual ( 0xf00d , CSharp . TestDestructors . Marker ) ;
217
+ dtors . Dispose ( ) ;
218
+ }
206
219
Assert . AreEqual ( 0xcafe , CSharp . TestDestructors . Marker ) ;
207
220
}
208
221
209
222
[ Test ]
210
223
public unsafe void TestArrayOfPointersToPrimitives ( )
211
224
{
212
- var bar = new Bar ( ) ;
213
- var array = new IntPtr [ 1 ] ;
214
- int i = 5 ;
215
- array [ 0 ] = new IntPtr ( & i ) ;
216
- bar . ArrayOfPrimitivePointers = array ;
217
- Assert . That ( i , Is . EqualTo ( * ( int * ) bar . ArrayOfPrimitivePointers [ 0 ] ) ) ;
225
+ using ( var bar = new Bar ( ) )
226
+ {
227
+ var array = new IntPtr [ 1 ] ;
228
+ int i = 5 ;
229
+ array [ 0 ] = new IntPtr ( & i ) ;
230
+ bar . ArrayOfPrimitivePointers = array ;
231
+ Assert . That ( i , Is . EqualTo ( * ( int * ) bar . ArrayOfPrimitivePointers [ 0 ] ) ) ;
232
+ }
218
233
}
219
234
220
235
[ Test ]
@@ -229,9 +244,11 @@ public void TestCopyConstructorValue()
229
244
[ Test ]
230
245
public void TestPropertiesConflictingWithMethod( )
231
246
{
232
- var p = new P( ( IQux ) new Qux ( ) ) { Test = true } ;
233
- Assert. That ( p . Test , Is . True ) ;
234
- p. GetTest ( ) ;
247
+ using ( var p = new P ( ( IQux ) new Qux ( ) ) { Test = true } )
248
+ {
249
+ Assert. That ( p . Test , Is . True ) ;
250
+ p. GetTest ( ) ;
251
+ }
235
252
}
236
253
237
254
[ Test ]
@@ -310,43 +327,51 @@ public void TestQFlags()
310
327
[ Test ]
311
328
public void TestCopyCtor( )
312
329
{
313
- Qux q1 = new Qux( ) ;
314
- for ( int i = 0 ; i < q1 . Array . Length ; i++ )
330
+ using ( Qux q1 = new Qux ( ) )
315
331
{
316
- q1. Array [ i ] = i ;
317
- }
318
- Qux q2 = new Qux ( q1 ) ;
319
- for ( int i = 0 ; i < q2 . Array . Length ; i ++ )
320
- {
321
- Assert . AreEqual ( q1 . Array [ i ] , q2 . Array [ i ] ) ;
332
+ for ( int i = 0 ; i < q1 . Array . Length ; i++ )
333
+ {
334
+ q1. Array [ i ] = i ;
335
+ }
336
+ using ( Qux q2 = new Qux ( q1 ) )
337
+ {
338
+ for ( int i = 0 ; i < q2 . Array . Length ; i ++ )
339
+ {
340
+ Assert . AreEqual ( q1 . Array [ i ] , q2 . Array [ i ] ) ;
341
+ }
342
+ }
322
343
}
323
344
}
324
345
325
346
[ Test ]
326
347
public void TestBooleanArray ( )
327
348
{
328
- Foo foo = new Foo { A = 10 } ;
329
- var new_values = new bool [ 5 ] ;
330
- for ( int i = 0 ; i < new_values . Length ; ++ i )
349
+ using ( Foo foo = new Foo { A = 10 } )
331
350
{
332
- new_values [ i ] = i % 2 == 0 ;
351
+ var new_values = new bool [ 5 ] ;
352
+ for ( int i = 0 ; i < new_values . Length ; ++ i )
353
+ {
354
+ new_values [ i ] = i % 2 == 0 ;
355
+ }
356
+ foo . Btest = new_values ;
357
+ Assert . AreEqual ( true , foo . Btest [ 0 ] ) ;
358
+ Assert . AreEqual ( false , foo . Btest [ 1 ] ) ;
359
+ Assert . AreEqual ( true , foo . Btest [ 2 ] ) ;
360
+ Assert . AreEqual ( false , foo . Btest [ 3 ] ) ;
361
+ Assert . AreEqual ( true , foo . Btest [ 4 ] ) ;
333
362
}
334
- foo . Btest = new_values ;
335
- Assert . AreEqual ( true , foo . Btest [ 0 ] ) ;
336
- Assert . AreEqual ( false , foo . Btest [ 1 ] ) ;
337
- Assert . AreEqual ( true , foo . Btest [ 2 ] ) ;
338
- Assert . AreEqual ( false , foo . Btest [ 3 ] ) ;
339
- Assert . AreEqual ( true , foo . Btest [ 4 ] ) ;
340
363
}
341
364
342
365
343
366
[ Test ]
344
367
public void TestImplicitCtor ( )
345
368
{
346
- Foo foo = new Foo { A = 10 } ;
347
- using ( MethodsWithDefaultValues m = foo )
369
+ using ( Foo foo = new Foo { A = 10 } )
348
370
{
349
- Assert . AreEqual ( foo . A , m . A ) ;
371
+ using ( MethodsWithDefaultValues m = foo )
372
+ {
373
+ Assert . AreEqual ( foo . A , m . A ) ;
374
+ }
350
375
}
351
376
using ( MethodsWithDefaultValues m1 = 5 )
352
377
{
@@ -431,9 +456,11 @@ public void TestNativeToManagedMapWithOwnObjects()
431
456
[ Test ]
432
457
public void TestCallingVirtualDtor ( )
433
458
{
434
- var callDtorVirtually = new CallDtorVirtually ( ) ;
435
- var hasVirtualDtor1 = CallDtorVirtually . GetHasVirtualDtor1 ( callDtorVirtually ) ;
436
- hasVirtualDtor1 . Dispose ( ) ;
459
+ using ( var callDtorVirtually = new CallDtorVirtually ( ) )
460
+ {
461
+ var hasVirtualDtor1 = CallDtorVirtually . GetHasVirtualDtor1 ( callDtorVirtually ) ;
462
+ hasVirtualDtor1 . Dispose ( ) ;
463
+ }
437
464
Assert . That ( CallDtorVirtually . Destroyed , Is . True ) ;
438
465
}
439
466
@@ -451,43 +478,46 @@ public void TestParamTypeToInterfacePass()
451
478
Assert . AreEqual ( dervClass . M , 2 ) ;
452
479
dervClass = new TestParamToInterfacePass ( dervClass + baseInterface ) ;
453
480
Assert . AreEqual ( dervClass . M , 2 ) ;
481
+ baseClass . Dispose ( ) ;
454
482
}
455
-
483
+
456
484
[ Test ]
457
485
public unsafe void TestMultiOverLoadPtrToRef ( )
458
486
{
459
487
var r = 0 ;
460
488
MultiOverloadPtrToRef m = & r ;
461
489
m . Dispose ( ) ;
462
- var obj = new MultiOverloadPtrToRef ( ref r ) ;
463
- var p = obj . ReturnPrimTypePtr ( ) ;
464
- Assert . AreEqual ( 0 , p [ 0 ] ) ;
465
- Assert . AreEqual ( 0 , p [ 1 ] ) ;
466
- Assert . AreEqual ( 0 , p [ 2 ] ) ;
490
+ using ( var obj = new MultiOverloadPtrToRef ( ref r ) )
491
+ {
492
+ var p = obj . ReturnPrimTypePtr ( ) ;
493
+ Assert . AreEqual ( 0 , p [ 0 ] ) ;
494
+ Assert . AreEqual ( 0 , p [ 1 ] ) ;
495
+ Assert . AreEqual ( 0 , p [ 2 ] ) ;
467
496
468
- obj . TakePrimTypePtr ( ref * p ) ;
469
- Assert . AreEqual ( 100 , p [ 0 ] ) ;
470
- Assert . AreEqual ( 200 , p [ 1 ] ) ;
471
- Assert . AreEqual ( 300 , p [ 2 ] ) ;
497
+ obj . TakePrimTypePtr ( ref * p ) ;
498
+ Assert . AreEqual ( 100 , p [ 0 ] ) ;
499
+ Assert . AreEqual ( 200 , p [ 1 ] ) ;
500
+ Assert . AreEqual ( 300 , p [ 2 ] ) ;
472
501
473
- int [ ] array = { 1 , 2 , 3 } ;
474
- fixed ( int * p1 = array )
475
- {
476
- obj . TakePrimTypePtr ( ref * p1 ) ;
477
- Assert . AreEqual ( 100 , p1 [ 0 ] ) ;
478
- Assert . AreEqual ( 200 , p1 [ 1 ] ) ;
479
- Assert . AreEqual ( 300 , p1 [ 2 ] ) ;
480
- }
502
+ int [ ] array = { 1 , 2 , 3 } ;
503
+ fixed ( int * p1 = array )
504
+ {
505
+ obj . TakePrimTypePtr ( ref * p1 ) ;
506
+ Assert . AreEqual ( 100 , p1 [ 0 ] ) ;
507
+ Assert . AreEqual ( 200 , p1 [ 1 ] ) ;
508
+ Assert . AreEqual ( 300 , p1 [ 2 ] ) ;
509
+ }
481
510
482
- Assert . AreEqual ( 100 , array [ 0 ] ) ;
483
- Assert . AreEqual ( 200 , array [ 1 ] ) ;
484
- Assert . AreEqual ( 300 , array [ 2 ] ) ;
511
+ Assert . AreEqual ( 100 , array [ 0 ] ) ;
512
+ Assert . AreEqual ( 200 , array [ 1 ] ) ;
513
+ Assert . AreEqual ( 300 , array [ 2 ] ) ;
485
514
486
- float pThree = 0 ;
487
- var refInt = 0 ;
488
- obj . FuncPrimitivePtrToRef ( ref refInt , null , ref pThree ) ;
489
- obj . FuncPrimitivePtrToRefWithDefVal ( ref refInt , null , null , ref refInt ) ;
490
- obj . FuncPrimitivePtrToRefWithMultiOverload ( ref refInt , null , null , ref refInt ) ;
515
+ float pThree = 0 ;
516
+ var refInt = 0 ;
517
+ obj . FuncPrimitivePtrToRef ( ref refInt , null , ref pThree ) ;
518
+ obj . FuncPrimitivePtrToRefWithDefVal ( ref refInt , null , null , ref refInt ) ;
519
+ obj . FuncPrimitivePtrToRefWithMultiOverload ( ref refInt , null , null , ref refInt ) ;
520
+ }
491
521
}
492
522
493
523
[ Test ]
@@ -506,23 +536,37 @@ public void TestFixedArrayRefType()
506
536
Assert . AreEqual ( 7 , retFoos [ 2 ] . A ) ;
507
537
Assert . AreEqual ( 8 , retFoos [ 3 ] . A ) ;
508
538
539
+ foreach ( Foo foo in foos )
540
+ {
541
+ foo . Dispose ( ) ;
542
+ }
543
+
509
544
Foo [ ] foosMore = new Foo [ 2 ] ;
510
545
foosMore [ 0 ] = new Foo ( ) ;
511
546
foosMore [ 1 ] = new Foo ( ) ;
512
547
var ex = Assert . Throws < ArgumentOutOfRangeException > ( ( ) => bar . Foos = foosMore ) ;
513
548
Assert . AreEqual ( "value" , ex . ParamName ) ;
514
549
Assert . AreEqual ( "The dimensions of the provided array don't match the required size." + Environment . NewLine + "Parameter name: value" , ex . Message ) ;
550
+
551
+ foreach ( Foo foo in foosMore )
552
+ {
553
+ foo . Dispose ( ) ;
554
+ }
515
555
}
516
556
517
557
[ Test ]
518
558
public void TestOutTypeInterfacePassTry ( )
519
559
{
520
- var interfaceClassObj = new TestParamToInterfacePassBaseTwo ( ) ;
521
- ITestParamToInterfacePassBaseTwo interfaceType = interfaceClassObj ;
522
- var obj = new TestOutTypeInterfaces ( ) ;
523
- obj . FuncTryInterfaceTypeOut ( out interfaceType ) ;
524
- ITestParamToInterfacePassBaseTwo interfaceTypePtr ;
525
- obj . FuncTryInterfaceTypePtrOut ( out interfaceTypePtr ) ;
560
+ using ( var interfaceClassObj = new TestParamToInterfacePassBaseTwo ( ) )
561
+ {
562
+ ITestParamToInterfacePassBaseTwo interfaceType = interfaceClassObj ;
563
+ using ( var obj = new TestOutTypeInterfaces ( ) )
564
+ {
565
+ obj . FuncTryInterfaceTypeOut ( out interfaceType ) ;
566
+ ITestParamToInterfacePassBaseTwo interfaceTypePtr ;
567
+ obj . FuncTryInterfaceTypePtrOut ( out interfaceTypePtr ) ;
568
+ }
569
+ }
526
570
}
527
571
528
572
[ Test ]
@@ -1030,9 +1074,11 @@ public void TestGenerationOfIncompleteClasses()
1030
1074
[ Test ]
1031
1075
public void TestForwardDeclaredStruct ( )
1032
1076
{
1033
- var forwardDeclaredStruct = CSharp . CSharp . CreateForwardDeclaredStruct ( 10 ) ;
1034
- var i = CSharp . CSharp . UseForwardDeclaredStruct ( forwardDeclaredStruct ) ;
1035
- Assert . AreEqual ( forwardDeclaredStruct . I , i ) ;
1077
+ using ( var forwardDeclaredStruct = CSharp . CSharp . CreateForwardDeclaredStruct ( 10 ) )
1078
+ {
1079
+ var i = CSharp . CSharp . UseForwardDeclaredStruct ( forwardDeclaredStruct ) ;
1080
+ Assert . AreEqual ( forwardDeclaredStruct . I , i ) ;
1081
+ }
1036
1082
}
1037
1083
1038
1084
[ Test ]
0 commit comments