@@ -113,18 +113,24 @@ public void TestReturnCharPointer()
113113 [ Test ]
114114 public void TestIndexer ( )
115115 {
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 ) ) ;
121121
122- Assert . That ( foo [ ( uint ) 0 ] , Is . EqualTo ( 15 ) ) ;
122+ Assert . That ( foo [ ( uint ) 0 ] , Is . EqualTo ( 15 ) ) ;
123+ }
123124
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+ }
128134 }
129135
130136 [ Test ]
@@ -143,8 +149,11 @@ public void TestMultipleInheritance()
143149 var bar = ( IBar ) baz ;
144150 Assert . That ( bar . Method , Is . EqualTo ( 2 ) ) ;
145151 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+ }
148157 Assert . That ( baz . FarAwayFunc , Is . EqualTo ( 20 ) ) ;
149158 Assert . That ( baz . TakesQux ( baz ) , Is . EqualTo ( 20 ) ) ;
150159 Assert . That ( baz . ReturnQux ( ) . FarAwayFunc , Is . EqualTo ( 20 ) ) ;
@@ -160,12 +169,14 @@ public void TestMultipleInheritance()
160169 [ Test ]
161170 public void TestProperties ( )
162171 {
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+ }
169180 using ( var qux = new Qux ( ) )
170181 {
171182 using ( var p = new P ( ( IQux ) qux ) { Value = 20 } )
@@ -200,21 +211,25 @@ public void TestDestructors()
200211 CSharp . TestDestructors . InitMarker ( ) ;
201212 Assert . AreEqual ( 0 , CSharp . TestDestructors . Marker ) ;
202213
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+ }
206219 Assert . AreEqual ( 0xcafe , CSharp . TestDestructors . Marker ) ;
207220 }
208221
209222 [ Test ]
210223 public unsafe void TestArrayOfPointersToPrimitives ( )
211224 {
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+ }
218233 }
219234
220235 [ Test ]
@@ -229,9 +244,11 @@ public void TestCopyConstructorValue()
229244 [ Test ]
230245 public void TestPropertiesConflictingWithMethod( )
231246 {
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+ }
235252 }
236253
237254 [ Test ]
@@ -310,43 +327,51 @@ public void TestQFlags()
310327 [ Test ]
311328 public void TestCopyCtor( )
312329 {
313- Qux q1 = new Qux( ) ;
314- for ( int i = 0 ; i < q1 . Array . Length ; i++ )
330+ using ( Qux q1 = new Qux ( ) )
315331 {
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+ }
322343 }
323344 }
324345
325346 [ Test ]
326347 public void TestBooleanArray ( )
327348 {
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 } )
331350 {
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 ] ) ;
333362 }
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 ] ) ;
340363 }
341364
342365
343366 [ Test ]
344367 public void TestImplicitCtor ( )
345368 {
346- Foo foo = new Foo { A = 10 } ;
347- using ( MethodsWithDefaultValues m = foo )
369+ using ( Foo foo = new Foo { A = 10 } )
348370 {
349- Assert . AreEqual ( foo . A , m . A ) ;
371+ using ( MethodsWithDefaultValues m = foo )
372+ {
373+ Assert . AreEqual ( foo . A , m . A ) ;
374+ }
350375 }
351376 using ( MethodsWithDefaultValues m1 = 5 )
352377 {
@@ -431,9 +456,11 @@ public void TestNativeToManagedMapWithOwnObjects()
431456 [ Test ]
432457 public void TestCallingVirtualDtor ( )
433458 {
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+ }
437464 Assert . That ( CallDtorVirtually . Destroyed , Is . True ) ;
438465 }
439466
@@ -451,43 +478,46 @@ public void TestParamTypeToInterfacePass()
451478 Assert . AreEqual ( dervClass . M , 2 ) ;
452479 dervClass = new TestParamToInterfacePass ( dervClass + baseInterface ) ;
453480 Assert . AreEqual ( dervClass . M , 2 ) ;
481+ baseClass . Dispose ( ) ;
454482 }
455-
483+
456484 [ Test ]
457485 public unsafe void TestMultiOverLoadPtrToRef ( )
458486 {
459487 var r = 0 ;
460488 MultiOverloadPtrToRef m = & r ;
461489 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 ] ) ;
467496
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 ] ) ;
472501
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+ }
481510
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 ] ) ;
485514
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+ }
491521 }
492522
493523 [ Test ]
@@ -506,23 +536,37 @@ public void TestFixedArrayRefType()
506536 Assert . AreEqual ( 7 , retFoos [ 2 ] . A ) ;
507537 Assert . AreEqual ( 8 , retFoos [ 3 ] . A ) ;
508538
539+ foreach ( Foo foo in foos )
540+ {
541+ foo . Dispose ( ) ;
542+ }
543+
509544 Foo [ ] foosMore = new Foo [ 2 ] ;
510545 foosMore [ 0 ] = new Foo ( ) ;
511546 foosMore [ 1 ] = new Foo ( ) ;
512547 var ex = Assert . Throws < ArgumentOutOfRangeException > ( ( ) => bar . Foos = foosMore ) ;
513548 Assert . AreEqual ( "value" , ex . ParamName ) ;
514549 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+ }
515555 }
516556
517557 [ Test ]
518558 public void TestOutTypeInterfacePassTry ( )
519559 {
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+ }
526570 }
527571
528572 [ Test ]
@@ -1030,9 +1074,11 @@ public void TestGenerationOfIncompleteClasses()
10301074 [ Test ]
10311075 public void TestForwardDeclaredStruct ( )
10321076 {
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+ }
10361082 }
10371083
10381084 [ Test ]
0 commit comments