@@ -30,6 +30,10 @@ testSuite_verifyCount <- function(expected, k) {
30
30
31
31
testSuite <- function () {
32
32
33
+ #
34
+ # Reference Implementation is li_boost_shared_ptr_runme.py
35
+ #
36
+
33
37
# simple shared_ptr usage - created in C++
34
38
{
35
39
k = Klass(" me oh my" )
@@ -106,6 +110,26 @@ testSuite <- function() {
106
110
# testSuite_verifyCount(2, kret); # -> use_count not defined on _p_SwigBoost__shared_ptrT_Space__Klass_const_t
107
111
}
108
112
113
+ # const pass by shared_ptr pointer
114
+ {
115
+ k = Klass(" me oh my" )
116
+ kret = constsmartpointerpointertest(k )
117
+ val = Klass_getValue(kret )
118
+ unittest(" me oh my" , val )
119
+ testSuite_verifyCount(2 , k )
120
+ # testSuite_verifyCount(2, kret) # -> use_count not defined on _p_SwigBoost__shared_ptrT_Space__Klass_const_t
121
+ }
122
+
123
+ # const pass by shared_ptr reference
124
+ {
125
+ k = Klass(" me oh my" )
126
+ kret = constsmartpointerreftest(k )
127
+ val = Klass_getValue(kret )
128
+ unittest(" me oh my" , val )
129
+ testSuite_verifyCount(2 , k )
130
+ # testSuite_verifyCount(2, kret) # -> use_count not defined for _p_SwigBoost__shared_ptrT_Space__Klass_const_t
131
+ }
132
+
109
133
# pass by value
110
134
{
111
135
k = Klass(" me oh my" );
@@ -191,6 +215,23 @@ testSuite <- function() {
191
215
if (bNotCatched ) {
192
216
stop(" Failed to catch null pointer" );
193
217
}
218
+
219
+ # test null pointers emitted from C++
220
+
221
+ k = sp_pointer_null()
222
+ if (! is.null(k )) {
223
+ stop(" return was not null" )
224
+ }
225
+
226
+ k = null_sp_pointer()
227
+ if (! is.null(k )) {
228
+ stop(" return was not null" )
229
+ }
230
+
231
+ k = sp_value_null()
232
+ if (! is.null(k )) {
233
+ stop(" return was not null" )
234
+ }
194
235
}
195
236
196
237
# $owner
@@ -209,170 +250,133 @@ testSuite <- function() {
209
250
}
210
251
211
252
#
212
- # ###################### Derived classes ######################
253
+ # ###################### Derived and base class mixed ######################
213
254
#
214
255
215
- # derived pass by shared_ptr
256
+ # pass by shared_ptr (mixed)
216
257
{
217
258
k = KlassDerived(" me oh my" );
218
259
kret = derivedsmartptrtest(k );
219
260
val = kret $ getValue();
220
261
unittest(" me oh my derivedsmartptrtest-Derived" , val );
221
262
testSuite_verifyCount(2 , k );
222
263
testSuite_verifyCount(2 , kret );
223
- # testSuite_verifyCount(4, k); # includes two extra references for upcasts
224
- # testSuite_verifyCount(4, kret);
225
264
}
226
265
227
- # derived pass by shared_ptr pointer
266
+ # pass by shared_ptr pointer (mixed)
228
267
{
229
268
k = KlassDerived(" me oh my" );
230
269
kret = derivedsmartptrpointertest(k );
231
270
val = kret $ getValue();
232
271
unittest(" me oh my derivedsmartptrpointertest-Derived" , val );
233
272
testSuite_verifyCount(2 , k );
234
273
testSuite_verifyCount(2 , kret );
235
- # testSuite_verifyCount(4, k); # includes two extra references for upcasts in the proxy classes
236
- # testSuite_verifyCount(4, kret);
237
274
}
238
275
239
- # derived pass by shared_ptr ref
276
+ # pass by shared_ptr ref (mixed)
240
277
{
241
278
k = KlassDerived(" me oh my" );
242
279
kret = derivedsmartptrreftest(k );
243
280
val = kret $ getValue();
244
281
unittest(" me oh my derivedsmartptrreftest-Derived" , val );
245
282
testSuite_verifyCount(2 , k );
246
283
testSuite_verifyCount(2 , kret );
247
- # testSuite_verifyCount(4, k); # includes two extra references for upcasts in the proxy classes
248
- # testSuite_verifyCount(4, kret);
249
284
}
250
285
251
- # derived pass by shared_ptr pointer ref
286
+ # pass by shared_ptr pointer reference (mixed)
252
287
if (FALSE ) {
253
288
k = KlassDerived(" me oh my" );
254
- kret = derivedsmartptrpointerreftest (k ); # undefined class _p_p_SwigBoost__shared_ptrT_Space__KlassDerived_t
289
+ kret = smartpointerpointerreftest (k ); # undefined class _p_p_SwigBoost__shared_ptrT_Space__Klass_t
255
290
val = kret $ getValue();
256
291
unittest(" me oh my derivedsmartptrpointerreftest-Derived" , val );
257
- testSuite_verifyCount(4 , k ); # includes two extra references for upcasts in the proxy classes
258
- testSuite_verifyCount(4 , kret );
292
+ testSuite_verifyCount(2 , k ); # includes two extra references for upcasts in the proxy classes
293
+ testSuite_verifyCount(2 , kret );
259
294
}
260
295
261
- # derived pass by pointer
296
+ # pass by value (mixed)
297
+ {
298
+ k = KlassDerived(" me oh my" )
299
+ kret = valuetest(k )
300
+ val = kret $ getValue()
301
+ unittest(" me oh my valuetest" , val ) # note slicing
302
+ testSuite_verifyCount(2 , k )
303
+ # testSuite_verifyCount(2, kret) --> use count not defined for _p_Space__Klass
304
+
305
+ # testSuite_verifyCount(1, k) # this is the python expected reference counting
306
+ # testSuite_verifyCount(1, kret)
307
+ }
308
+
309
+ # pass by pointer (mixed)
262
310
{
263
311
k = KlassDerived(" me oh my" );
264
312
kret = derivedpointertest(k );
265
313
val = kret $ getValue();
266
314
unittest(" me oh my derivedpointertest-Derived" , val );
267
315
testSuite_verifyCount(1 , k );
268
316
# testSuite_verifyCount(1, kret); -> use_count not defined for _p_Space__KlassDerived
269
-
270
- # testSuite_verifyCount(2, k); # includes an extra reference for the upcast in the proxy class
271
- # testSuite_verifyCount(2, kret);
272
317
}
273
318
274
- # derived pass by ref
319
+ # pass by ref (mixed)
275
320
{
276
321
k = KlassDerived(" me oh my" );
277
- kret = derivedreftest (k );
322
+ kret = reftest (k );
278
323
val = kret $ getValue();
279
- unittest(" me oh my derivedreftest -Derived" , val );
280
- testSuite_verifyCount(1 , k );
281
- # testSuite_verifyCount(1 , kret); --> use_count not defined for _p_Space__KlassDerived
324
+ unittest(" me oh my reftest -Derived" , val );
325
+ testSuite_verifyCount(2 , k );
326
+ # testSuite_verifyCount(2 , kret); --> use_count not defined for _p_Space__KlassDerived
282
327
283
- # testSuite_verifyCount(2 , k); # includes an extra reference for the upcast in the proxy class
284
- # testSuite_verifyCount(2 , kret);
328
+ # testSuite_verifyCount(1 , k); # --> this is the python expected counting
329
+ # testSuite_verifyCount(1 , kret);
285
330
}
286
331
287
-
288
332
#
289
- # ###################### Derived and base class mixed #### ##################
333
+ # ################# Overloading tests ##################
290
334
#
291
335
292
- # pass by shared_ptr (mixed)
336
+ # Base class
293
337
{
294
- k = KlassDerived(" me oh my" );
295
- kret = smartpointertest(k );
296
- val = kret $ getValue();
297
- unittest(" me oh my smartpointertest-Derived" , val );
298
- testSuite_verifyCount(3 , k ); # an extra reference for the upcast in the proxy class
299
- testSuite_verifyCount(3 , kret );
300
- }
338
+ k = Klass(" me oh my" );
301
339
302
- # pass by shared_ptr pointer (mixed)
303
- {
304
- k = KlassDerived(" me oh my" );
305
- kret = smartpointerpointertest(k );
306
- val = kret $ getValue();
307
- unittest(" me oh my smartpointerpointertest-Derived" , val );
308
- testSuite_verifyCount(3 , k ); # an extra reference for the upcast in the proxy class
309
- testSuite_verifyCount(3 , kret );
310
- }
340
+ unittest(overload_rawbyval(k ), " rawbyval" )
341
+ unittest(overload_rawbyref(k ), " rawbyref" )
342
+ unittest(overload_rawbyptr(k ), " rawbyptr" )
343
+ # unittest(overload_rawbyptrref(k), "rawbyptrref") --> undefined for _p_SwigBoost__shared_ptrT_Space__Klass_t
311
344
312
- # pass by shared_ptr reference (mixed)
313
- {
314
- k = KlassDerived(" me oh my" );
315
- kret = smartpointerreftest(k );
316
- val = kret $ getValue();
317
- unittest(" me oh my smartpointerreftest-Derived" , val );
318
- testSuite_verifyCount(3 , k ); # an extra reference for the upcast in the proxy class
319
- testSuite_verifyCount(3 , kret );
345
+ unittest(overload_smartbyval(k ), " smartbyval" )
346
+ unittest(overload_smartbyref(k ), " smartbyref" )
347
+ unittest(overload_smartbyptr(k ), " smartbyptr" )
348
+ # unittest(overload_smartbyptrref(k), "smartbyptrref") --> undefined for _p_SwigBoost__shared_ptrT_Space__Klass_t
320
349
}
321
350
322
- # pass by shared_ptr pointer reference (mixed)
323
- if (FALSE ) {
324
- k = KlassDerived(" me oh my" );
325
- kret = smartpointerpointerreftest(k ); # -> undefined _p_p_SwigBoost__shared_ptrT_Space__Klass_t
326
- val = kret $ getValue();
327
- unittest(" me oh my smartpointerpointerreftest-Derived" , val );
328
- testSuite_verifyCount(3 , k ); # an extra reference for the upcast in the proxy class
329
- testSuite_verifyCount(3 , kret );
330
- }
331
-
332
- # pass by value (mixed)
351
+ # Derived class
333
352
{
334
- k = KlassDerived(" me oh my" );
335
- kret = valuetest(k );
336
- val = kret $ getValue();
337
- unittest(" me oh my valuetest" , val ); # note slicing
338
- testSuite_verifyCount(2 , k ); # an extra reference for the upcast in the proxy class
339
- # testSuite_verifyCount(1, kret); # -> use count undefined for _p_Space__Klass
340
- }
353
+ k = KlassDerived(" me oh my" )
341
354
342
- # pass by pointer (mixed)
343
- {
344
- k = KlassDerived(" me oh my" );
345
- kret = pointertest(k );
346
- val = kret $ getValue();
347
- unittest(" me oh my pointertest-Derived" , val );
348
- testSuite_verifyCount(2 , k ); # an extra reference for the upcast in the proxy class
349
- # testSuite_verifyCount(1, kret); # -> use count undefined for _p_Space__Klass
350
- }
355
+ unittest(overload_rawbyval(k ), " rawbyval" )
356
+ unittest(overload_rawbyref(k ), " rawbyref" )
357
+ unittest(overload_rawbyptr(k ), " rawbyptr" )
358
+ # unittest(overload_rawbyptrref(k), "rawbyptrref") --> undefined for _p_SwigBoost__shared_ptrT_Space__KlassDerived_t
351
359
352
- # pass by ref (mixed)
353
- {
354
- k = KlassDerived(" me oh my" );
355
- kret = reftest(k );
356
- val = kret $ getValue();
357
- unittest(" me oh my reftest-Derived" , val );
358
- testSuite_verifyCount(2 , k ); # an extra reference for the upcast in the proxy class
359
- # testSuite_verifyCount(1, kret); # -> use count undefined for _p_Space__Klass
360
+ unittest(overload_smartbyval(k ), " smartbyval" )
361
+ unittest(overload_smartbyref(k ), " smartbyref" )
362
+ unittest(overload_smartbyptr(k ), " smartbyptr" )
363
+ # unittest(overload_smartbyptrref(k), "smartbyptrref") --> undefined for _p_SwigBoost__shared_ptrT_Space__KlassDerived_t
360
364
}
361
365
362
366
# 3rd derived class
363
367
{
364
- k = Klass3rdDerived(" me oh my" );
365
- val = k $ getValue();
366
- unittest(" me oh my-3rdDerived" , val );
367
- testSuite_verifyCount(1 , k );
368
- # testSuite_verifyCount(3, k); # 3 classes in inheritance chain == 3 swigCPtr values
368
+ k = Klass3rdDerived(" me oh my" )
369
369
370
- val = test3rdupcast(k );
371
- unittest(" me oh my-3rdDerived" , val );
372
- testSuite_verifyCount(2 , k );
373
- # testSuite_verifyCount(3, k);
374
- }
370
+ unittest(overload_rawbyval(k ), " rawbyval" )
371
+ unittest(overload_rawbyref(k ), " rawbyref" )
372
+ unittest(overload_rawbyptr(k ), " rawbyptr" )
373
+ # unittest(overload_rawbyptrref(k), "rawbyptrref") --> undefined for _p_SwigBoost__shared_ptrT_Space__Klass3rdDerived_t
375
374
375
+ unittest(overload_smartbyval(k ), " smartbyval" )
376
+ unittest(overload_smartbyref(k ), " smartbyref" )
377
+ unittest(overload_smartbyptr(k ), " smartbyptr" )
378
+ # unittest(overload_smartbyptrref(k), "smartbyptrref") --> undefined for _p_SwigBoost__shared_ptrT_Space__Klass3rdDerived_t
379
+ }
376
380
377
381
#
378
382
# ################ Member variables ####################
@@ -395,7 +399,7 @@ testSuite <- function() {
395
399
testSuite_verifyCount(3 , k );
396
400
397
401
delete_MemberVariables(m )
398
- testSuite_verifyCount(2 , kmember ); # these should be -1 wrt to the previous test ?
402
+ testSuite_verifyCount(2 , kmember );
399
403
testSuite_verifyCount(2 , k );
400
404
}
401
405
@@ -443,7 +447,7 @@ testSuite <- function() {
443
447
testSuite_verifyCount(4 , k );
444
448
445
449
delete_MemberVariables(m );
446
- testSuite_verifyCount(3 , kmemberVal ); # should be one less than the previous one
450
+ testSuite_verifyCount(3 , kmemberVal );
447
451
testSuite_verifyCount(3 , kmember );
448
452
testSuite_verifyCount(3 , k );
449
453
}
@@ -624,10 +628,6 @@ testSuite <- function() {
624
628
}
625
629
626
630
627
-
628
-
629
-
630
-
631
631
#
632
632
# ###################### Templates ######################
633
633
#
0 commit comments