gir_ffi 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -14,6 +14,8 @@ class EverythingTest < Test::Unit::TestCase
14
14
  context "The generated Everything module" do
15
15
  setup do
16
16
  GirFFI.setup :Everything
17
+ GirFFI.setup :GObject
18
+ GirFFI.setup :GLib
17
19
  end
18
20
 
19
21
  context "the Everything::TestBoxed class" do
@@ -40,7 +42,7 @@ class EverythingTest < Test::Unit::TestCase
40
42
  assert_equal 54, tb[:some_int8]
41
43
  end
42
44
 
43
- should "have non-zero result for #get_gtype" do
45
+ should "have non-zero positive result for #get_gtype" do
44
46
  assert Everything::TestBoxed.get_gtype > 0
45
47
  end
46
48
 
@@ -176,6 +178,10 @@ class EverythingTest < Test::Unit::TestCase
176
178
  @o.instance_method_callback Proc.new { a = 2 }
177
179
  assert_equal 2, a
178
180
  end
181
+
182
+ should "not respond to #static_method" do
183
+ assert_raises(NoMethodError) { @o.static_method 1 }
184
+ end
179
185
  end
180
186
  end
181
187
 
@@ -271,13 +277,31 @@ class EverythingTest < Test::Unit::TestCase
271
277
  assert_instance_of Everything::TestWi8021x, o
272
278
  end
273
279
 
280
+ should "have a working #static_method" do
281
+ assert_equal(-84, Everything::TestWi8021x.static_method(-42))
282
+ end
283
+
274
284
  context "an instance" do
275
285
  setup do
276
286
  @obj = Everything::TestWi8021x.new
277
287
  end
288
+
278
289
  should "set its boolean struct member with #set_testbool" do
279
290
  @obj.set_testbool true
280
291
  assert_equal 1, @obj[:testbool]
292
+ @obj.set_testbool false
293
+ assert_equal 0, @obj[:testbool]
294
+ end
295
+
296
+ should "get its boolean struct member with #get_testbool" do
297
+ @obj[:testbool] = 0
298
+ assert_equal false, @obj.get_testbool
299
+ @obj[:testbool] = 1
300
+ assert_equal true, @obj.get_testbool
301
+ end
302
+
303
+ should "get its boolean struct member with #get_property" do
304
+ @obj[:testbool] = 1
281
305
  gv = GObject::Value.new
282
306
  gv.init GObject.type_from_name "gboolean"
283
307
  @obj.get_property "testbool", gv
@@ -286,16 +310,145 @@ class EverythingTest < Test::Unit::TestCase
286
310
  end
287
311
  end
288
312
 
313
+ # set_abort_on_error
314
+
315
+ context "test_array_fixed_size_int_in" do
316
+ should "return the correct result" do
317
+ assert_equal 5 + 4 + 3 + 2 + 1, Everything.test_array_fixed_size_int_in([5, 4, 3, 2, 1])
318
+ end
319
+
320
+ should "raise an error when called with the wrong number of arguments" do
321
+ assert_raises ArgumentError do
322
+ Everything.test_array_fixed_size_int_in [2]
323
+ end
324
+ end
325
+ end
326
+
327
+ should "have correct test_array_fixed_size_int_out" do
328
+ assert_equal [0, 1, 2, 3, 4], Everything.test_array_fixed_size_int_out
329
+ end
330
+
331
+ should "have correct test_array_fixed_size_int_return" do
332
+ assert_equal [0, 1, 2, 3, 4], Everything.test_array_fixed_size_int_return
333
+ end
334
+
335
+ should "have correct test_array_gint16_in" do
336
+ assert_equal 5 + 4 + 3, Everything.test_array_gint16_in([5, 4, 3])
337
+ end
338
+
339
+ should "have correct test_array_gint32_in" do
340
+ assert_equal 5 + 4 + 3, Everything.test_array_gint32_in([5, 4, 3])
341
+ end
342
+
343
+ should "have correct test_array_gint64_in" do
344
+ assert_equal 5 + 4 + 3, Everything.test_array_gint64_in([5, 4, 3])
345
+ end
346
+
347
+ should "have correct test_array_gint8_in" do
348
+ assert_equal 5 + 4 + 3, Everything.test_array_gint8_in([5, 4, 3])
349
+ end
350
+
351
+ should "have correct test_array_gtype_in" do
352
+ t1 = GObject.type_from_name "gboolean"
353
+ t2 = GObject.type_from_name "gint64"
354
+ assert_equal "[gboolean,gint64,]", Everything.test_array_gtype_in([t1, t2])
355
+ end
356
+
357
+ should "have correct test_array_int_full_out" do
358
+ assert_equal [0, 1, 2, 3, 4], Everything.test_array_int_full_out
359
+ end
360
+
361
+ should "have correct test_array_int_in" do
362
+ assert_equal 5 + 4 + 3, Everything.test_array_int_in([5, 4, 3])
363
+ end
364
+
365
+ should "have correct test_array_int_in_take" do
366
+ assert_equal 5 + 4 + 3, Everything.test_array_int_in_take([5, 4, 3])
367
+ end
368
+
369
+ should "have correct test_array_int_inout" do
370
+ assert_equal [3, 4], Everything.test_array_int_inout([5, 2, 3])
371
+ end
372
+
373
+ should "have correct test_array_int_none_out" do
374
+ assert_equal [1, 2, 3, 4, 5], Everything.test_array_int_none_out
375
+ end
376
+
377
+ should "have correct test_array_int_null_in" do
378
+ assert_nothing_raised { Everything.test_array_int_null_in nil }
379
+ end
380
+
381
+ should "have correct test_array_int_null_out" do
382
+ assert_equal nil, Everything.test_array_int_null_out
383
+ end
384
+
385
+ should "have correct test_array_int_out" do
386
+ assert_equal [0, 1, 2, 3, 4], Everything.test_array_int_out
387
+ end
388
+
389
+ should "have correct test_async_ready_callback" do
390
+ a = 1
391
+ main_loop = GLib.main_loop_new nil, false
392
+
393
+ Everything.test_async_ready_callback Proc.new {
394
+ GLib.main_loop_quit main_loop
395
+ a = 2
396
+ }
397
+
398
+ GLib.main_loop_run main_loop
399
+
400
+ assert_equal 2, a
401
+ end
402
+
289
403
  should "have correct test_boolean" do
290
404
  assert_equal false, Everything.test_boolean(false)
291
405
  assert_equal true, Everything.test_boolean(true)
292
406
  end
293
407
 
408
+ should "have correct test_boolean_false" do
409
+ assert_equal false, Everything.test_boolean(false)
410
+ end
411
+
412
+ should "have correct test_boolean_true" do
413
+ assert_equal true, Everything.test_boolean(true)
414
+ end
415
+
416
+ should "have correct test_cairo_context_full_return"
417
+ should "have correct test_cairo_context_none_in"
418
+ should "have correct test_cairo_surface_full_out"
419
+ should "have correct test_cairo_surface_full_return"
420
+ should "have correct test_cairo_surface_none_in"
421
+ should "have correct test_cairo_surface_none_return"
422
+
294
423
  should "have correct test_callback" do
295
424
  result = Everything.test_callback Proc.new { 5 }
296
425
  assert_equal 5, result
297
426
  end
298
427
 
428
+ should "have correct test_callback_async" do
429
+ a = 1
430
+ Everything.test_callback_async Proc.new {|b|
431
+ a = 2
432
+ b
433
+ }, 44
434
+ r = Everything.test_callback_thaw_async
435
+ assert_equal 44, r
436
+ assert_equal 2, a
437
+ end
438
+
439
+ should "have correct test_callback_destroy_notify" do
440
+ a = 1
441
+ r1 = Everything.test_callback_destroy_notify Proc.new {|b|
442
+ a = 2
443
+ b
444
+ }, 42, Proc.new { a = 3 }
445
+ assert_equal 2, a
446
+ assert_equal 42, r1
447
+ r2 = Everything.test_callback_thaw_notifications
448
+ assert_equal 3, a
449
+ assert_equal 42, r2
450
+ end
451
+
299
452
  context "the test_callback_user_data function" do
300
453
  should "return the callbacks return value" do
301
454
  result = Everything.test_callback_user_data Proc.new {|u| 5 }, nil
@@ -312,11 +465,284 @@ class EverythingTest < Test::Unit::TestCase
312
465
  end
313
466
  end
314
467
 
468
+ should "have correct test_closure"
469
+ should "have correct test_closure_one_arg"
470
+
471
+ should "have correct test_double" do
472
+ r = Everything.test_double 5435.32
473
+ assert_equal 5435.32, r
474
+ end
475
+
476
+ should "have correct test_enum_param" do
477
+ r = Everything.test_enum_param :value3
478
+ assert_equal "value3", r
479
+ end
480
+
481
+ should "have correct test_filename_return"
482
+
483
+ should "have correct test_float" do
484
+ r = Everything.test_float 5435.32
485
+ assert_in_delta 5435.32, r, 0.001
486
+ end
487
+
488
+ should "have correct test_ghash_container_in"
489
+ should "have correct test_ghash_container_return"
490
+ should "have correct test_ghash_everything_in"
491
+ should "have correct test_ghash_everything_return"
492
+ should "have correct test_ghash_free"
493
+ should "have correct test_ghash_nested_everything_return"
494
+ should "have correct test_ghash_nested_everything_return2"
495
+ should "have correct test_ghash_nothing_in"
496
+ should "have correct test_ghash_nothing_in2"
497
+ should "have correct test_ghash_nothing_return"
498
+ should "have correct test_ghash_nothing_return2"
499
+ should "have correct test_ghash_null_in"
500
+ should "have correct test_ghash_null_out"
501
+ should "have correct test_ghash_null_return"
502
+ should "have correct test_glist_container_in"
503
+ should "have correct test_glist_container_return"
504
+ should "have correct test_glist_everything_in"
505
+ should "have correct test_glist_everything_return"
506
+ should "have correct test_glist_free"
507
+ should "have correct test_glist_nothing_in"
508
+ should "have correct test_glist_nothing_in2"
509
+ should "have correct test_glist_nothing_return"
510
+ should "have correct test_glist_nothing_return2"
511
+ should "have correct test_glist_null_in"
512
+ should "have correct test_glist_null_out"
513
+ should "have correct test_gslist_container_in"
514
+ should "have correct test_gslist_container_return"
515
+ should "have correct test_gslist_everything_in"
516
+ should "have correct test_gslist_everything_return"
517
+ should "have correct test_gslist_free"
518
+ should "have correct test_gslist_nothing_in"
519
+ should "have correct test_gslist_nothing_in2"
520
+ should "have correct test_gslist_nothing_return"
521
+ should "have correct test_gslist_nothing_return2"
522
+ should "have correct test_gslist_null_in"
523
+ should "have correct test_gslist_null_out"
524
+
315
525
  should "have correct test_gtype" do
316
526
  result = Everything.test_gtype 23
317
527
  assert_equal 23, result
318
528
  end
319
529
 
530
+ should "have correct test_int" do
531
+ result = Everything.test_int 23
532
+ assert_equal 23, result
533
+ end
534
+
535
+ should "have correct test_int16" do
536
+ result = Everything.test_int16 23
537
+ assert_equal 23, result
538
+ end
539
+
540
+ should "have correct test_int32" do
541
+ result = Everything.test_int32 23
542
+ assert_equal 23, result
543
+ end
544
+
545
+ should "have correct test_int64" do
546
+ result = Everything.test_int64 2300000000000
547
+ assert_equal 2300000000000, result
548
+ end
549
+
550
+ should "have correct test_int8" do
551
+ result = Everything.test_int8 23
552
+ assert_equal 23, result
553
+ end
554
+
555
+ should "have correct test_int_out_utf8" do
556
+ len = Everything.test_int_out_utf8 "How long?"
557
+ assert_equal 9, len
558
+ end
559
+
560
+ should "have correct test_int_value_arg" do
561
+ gv = GObject::Value.new
562
+ gv.init GObject.type_from_name "gint"
563
+ gv.set_int 343
564
+ result = Everything.test_int_value_arg gv
565
+ assert_equal 343, result
566
+ end
567
+
568
+ should "have correct test_long" do
569
+ result = Everything.test_long 2300000000000
570
+ assert_equal 2300000000000, result
571
+ end
572
+
573
+ should "have correct test_multi_callback" do
574
+ a = 1
575
+ result = Everything.test_multi_callback Proc.new {
576
+ a += 1
577
+ 23
578
+ }
579
+ assert_equal 2 * 23, result
580
+ assert_equal 3, a
581
+ end
582
+
583
+ should "have correct test_multi_double_args" do
584
+ one, two = Everything.test_multi_double_args 23.1
585
+ assert_equal 2 * 23.1, one
586
+ assert_equal 3 * 23.1, two
587
+ end
588
+
589
+ should "have correct test_object_null_in" do
590
+ assert_nothing_raised { Everything.test_object_null_in nil }
591
+ end
592
+
593
+ should "have correct test_object_null_out" do
594
+ result = Everything.test_object_null_out
595
+ assert_equal nil, result
596
+ end
597
+
598
+ should "have correct test_short" do
599
+ result = Everything.test_short 23
600
+ assert_equal 23, result
601
+ end
602
+
603
+ should "have correct test_simple_boxed_a_const_return" do
604
+ result = Everything.test_simple_boxed_a_const_return
605
+ assert_equal [5, 6, 7.0], [result[:some_int], result[:some_int8], result[:some_double]]
606
+ end
607
+
608
+ context "the test_simple_callback function" do
609
+ should "call the passed-in proc" do
610
+ a = 0
611
+ Everything.test_simple_callback Proc.new { a = 1 }
612
+ assert_equal 1, a
613
+ end
614
+
615
+ # XXX: The scope data does not seem to be reliable enough.
616
+ if false
617
+ should "not store the proc in CALLBACKS" do
618
+ n = Everything::Lib::CALLBACKS.length
619
+ Everything.test_simple_callback Proc.new { }
620
+ assert_equal n, Everything::Lib::CALLBACKS.length
621
+ end
622
+ end
623
+ end
624
+
625
+ should "have correct test_size" do
626
+ assert_equal 2354, Everything.test_size(2354)
627
+ end
628
+
629
+ should "have correct test_ssize"
630
+ should "have correct test_strv_in"
631
+ should "have correct test_strv_in_container"
632
+ should "have correct test_strv_out"
633
+ should "have correct test_strv_out_c"
634
+ should "have correct test_strv_out_container"
635
+ should "have correct test_strv_outarg"
636
+ should "have correct test_timet"
637
+
638
+ should "have correct test_torture_signature_0" do
639
+ y, z, q = Everything.test_torture_signature_0 86, "foo", 2
640
+ assert_equal [86, 2*86, 3+2], [y, z, q]
641
+ end
642
+
643
+ context "its #test_torture_signature_1 method" do
644
+ should "work for m even" do
645
+ ret, y, z, q = Everything.test_torture_signature_1(-21, "hello", 12)
646
+ assert_equal [true, -21, 2 * -21, "hello".length + 12], [ret, y, z, q]
647
+ end
648
+
649
+ should "throw an exception for m odd" do
650
+ assert_raises RuntimeError do
651
+ Everything.test_torture_signature_1(-21, "hello", 11)
652
+ end
653
+ end
654
+ end
655
+
656
+ should "have correct test_torture_signature_2" do
657
+ a = 1
658
+ y, z, q = Everything.test_torture_signature_2 244,
659
+ Proc.new {|u| a = u }, 2, Proc.new { a = 3 },
660
+ "foofoo", 31
661
+ assert_equal [244, 2*244, 6+31], [y, z, q]
662
+ assert_equal 3, a
663
+ end
664
+
665
+ should "have correct test_uint" do
666
+ assert_equal 31, Everything.test_uint(31)
667
+ end
668
+
669
+ should "have correct test_uint16" do
670
+ assert_equal 31, Everything.test_uint16(31)
671
+ end
672
+
673
+ should "have correct test_uint32" do
674
+ assert_equal 540000, Everything.test_uint32(540000)
675
+ end
676
+
677
+ should "have correct test_uint64" do
678
+ assert_equal 54_000_000_000_000, Everything.test_uint64(54_000_000_000_000)
679
+ end
680
+
681
+ should "have correct test_uint8" do
682
+ assert_equal 31, Everything.test_uint8(31)
683
+ end
684
+
685
+ should "have correct test_ulong" do
686
+ assert_equal 54_000_000_000_000, Everything.test_uint64(54_000_000_000_000)
687
+ end
688
+
689
+ should "have correct test_ushort" do
690
+ assert_equal 54_000_000, Everything.test_uint64(54_000_000)
691
+ end
692
+
693
+ should "have correct test_utf8_const_in" do
694
+ # TODO: Capture stderr to automatically look for error messages.
695
+ assert_nothing_raised do
696
+ Everything.test_utf8_const_in("const \xe2\x99\xa5 utf8")
697
+ end
698
+ end
699
+
700
+ should "have correct test_utf8_const_return" do
701
+ result = Everything.test_utf8_const_return
702
+ assert_equal "const \xe2\x99\xa5 utf8", result
703
+ end
704
+
705
+ should "have correct test_utf8_inout" do
706
+ result = Everything.test_utf8_inout "const \xe2\x99\xa5 utf8"
707
+ assert_equal "nonconst \xe2\x99\xa5 utf8", result
708
+ end
709
+
710
+ should "have correct test_utf8_nonconst_in" do
711
+ assert_nothing_raised do
712
+ Everything.test_utf8_nonconst_in "nonconst \xe2\x99\xa5 utf8"
713
+ end
714
+ end
715
+
716
+ should "have correct test_utf8_nonconst_return" do
717
+ result = Everything.test_utf8_nonconst_return
718
+ assert_equal "nonconst \xe2\x99\xa5 utf8", result
719
+ end
720
+
721
+ should "have correct test_utf8_null_in" do
722
+ assert_nothing_raised do
723
+ Everything.test_utf8_null_in nil
724
+ end
725
+ end
726
+
727
+ should "have correct test_utf8_null_out" do
728
+ assert_equal nil, Everything.test_utf8_null_out
729
+ end
730
+
731
+ should "have correct test_utf8_out" do
732
+ result = Everything.test_utf8_out
733
+ assert_equal "nonconst \xe2\x99\xa5 utf8", result
734
+ end
735
+
736
+ should "have correct test_utf8_out_nonconst_return" do
737
+ r, out = Everything.test_utf8_out_nonconst_return
738
+ assert_equal ["first", "second"], [r, out]
739
+ end
740
+
741
+ should "have correct test_utf8_out_out" do
742
+ out0, out1 = Everything.test_utf8_out_nonconst_return
743
+ assert_equal ["first", "second"], [out0, out1]
744
+ end
745
+
320
746
  should "have correct test_value_return" do
321
747
  result = Everything.test_value_return 3423
322
748
  assert_equal 3423, result.get_int
@@ -9,13 +9,16 @@ class FunctionDefinitionBuilderTest < Test::Unit::TestCase
9
9
  code = fbuilder.generate
10
10
 
11
11
  expected = "
12
- def init argc, argv
12
+ def init argv
13
+ argc = argv.length
13
14
  _v1 = GirFFI::ArgHelper.int_to_inoutptr argc
14
- _v3 = GirFFI::ArgHelper.string_array_to_inoutptr argv
15
+ _v3 = GirFFI::ArgHelper.utf8_array_to_inoutptr argv
15
16
  ::Lib.gtk_init _v1, _v3
16
17
  _v2 = GirFFI::ArgHelper.outptr_to_int _v1
17
- _v4 = GirFFI::ArgHelper.outptr_to_string_array _v3, argv.nil? ? 0 : argv.size
18
- return _v2, _v4
18
+ GirFFI::ArgHelper.cleanup_ptr _v1
19
+ _v4 = GirFFI::ArgHelper.outptr_to_utf8_array _v3, _v2
20
+ GirFFI::ArgHelper.cleanup_ptr_array_ptr _v3, _v2
21
+ return _v4
19
22
  end
20
23
  "
21
24
 
@@ -43,14 +46,16 @@ class FunctionDefinitionBuilderTest < Test::Unit::TestCase
43
46
 
44
47
  expected =
45
48
  "def signal_connect_data instance, detailed_signal, c_handler, data, destroy_data, connect_flags
46
- _v2 = GirFFI::ArgHelper.object_to_inptr instance
49
+ _v1 = GirFFI::ArgHelper.object_to_inptr instance
50
+ _v2 = GirFFI::ArgHelper.utf8_to_inptr detailed_signal
47
51
  _v3 = GirFFI::ArgHelper.mapped_callback_args c_handler
48
52
  ::Lib::CALLBACKS << _v3
49
53
  _v4 = GirFFI::ArgHelper.object_to_inptr data
50
54
  _v5 = GirFFI::ArgHelper.mapped_callback_args destroy_data
51
55
  ::Lib::CALLBACKS << _v5
52
- _v1 = ::Lib.g_signal_connect_data _v2, detailed_signal, _v3, _v4, _v5, connect_flags
53
- return _v1
56
+ _v6 = connect_flags
57
+ _v7 = ::Lib.g_signal_connect_data _v1, _v2, _v3, _v4, _v5, _v6
58
+ return _v7
54
59
  end"
55
60
 
56
61
  assert_equal cws(expected), cws(code)
@@ -63,15 +68,67 @@ class FunctionDefinitionBuilderTest < Test::Unit::TestCase
63
68
 
64
69
  expected =
65
70
  "def new_from_file x
66
- _v3 = FFI::MemoryPointer.new(:pointer).write_pointer nil
67
- _v1 = ::Lib.test_obj_new_from_file x, _v3
68
- GirFFI::ArgHelper.check_error(_v3)
69
- _v2 = ::Everything::TestObj._real_new(_v1)
70
- GirFFI::ArgHelper.sink_if_floating(_v2)
71
+ _v1 = GirFFI::ArgHelper.utf8_to_inptr x
72
+ _v4 = FFI::MemoryPointer.new(:pointer).write_pointer nil
73
+ _v2 = ::Lib.test_obj_new_from_file _v1, _v4
74
+ GirFFI::ArgHelper.check_error(_v4)
75
+ _v3 = ::Everything::TestObj.wrap(_v2)
76
+ GirFFI::ArgHelper.sink_if_floating(_v3)
77
+ return _v3
78
+ end"
79
+
80
+ assert_equal cws(expected), cws(code)
81
+ end
82
+
83
+ should "build correct definition of Everything:test_array_int_null_in" do
84
+ go = get_function_introspection_data 'Everything', 'test_array_int_null_in'
85
+ fbuilder = GirFFI::FunctionDefinitionBuilder.new go, Lib
86
+ code = fbuilder.generate
87
+
88
+ expected =
89
+ "def test_array_int_null_in arr
90
+ _v1 = GirFFI::ArgHelper.int_array_to_inptr arr
91
+ len = arr.nil? ? 0 : arr.length
92
+ _v2 = len
93
+ ::Lib.test_array_int_null_in _v1, _v2
94
+ GirFFI::ArgHelper.cleanup_ptr _v1
95
+ end"
96
+
97
+ assert_equal cws(expected), cws(code)
98
+ end
99
+
100
+ should "build correct definition of Everything:test_array_int_null_out" do
101
+ go = get_function_introspection_data 'Everything', 'test_array_int_null_out'
102
+ fbuilder = GirFFI::FunctionDefinitionBuilder.new go, Lib
103
+ code = fbuilder.generate
104
+
105
+ expected =
106
+ "def test_array_int_null_out
107
+ _v1 = GirFFI::ArgHelper.pointer_outptr
108
+ _v3 = GirFFI::ArgHelper.int_outptr
109
+ ::Lib.test_array_int_null_out _v1, _v3
110
+ _v4 = GirFFI::ArgHelper.outptr_to_int _v3
111
+ GirFFI::ArgHelper.cleanup_ptr _v3
112
+ _v2 = GirFFI::ArgHelper.outptr_to_int_array _v1, _v4
113
+ GirFFI::ArgHelper.cleanup_ptr_ptr _v1
71
114
  return _v2
72
115
  end"
73
116
 
74
117
  assert_equal cws(expected), cws(code)
75
118
  end
119
+
120
+ should "build correct definition of Everything:test_utf8_nonconst_in" do
121
+ go = get_function_introspection_data 'Everything', 'test_utf8_nonconst_in'
122
+ fbuilder = GirFFI::FunctionDefinitionBuilder.new go, Lib
123
+ code = fbuilder.generate
124
+
125
+ expected =
126
+ "def test_utf8_nonconst_in in_
127
+ _v1 = GirFFI::ArgHelper.utf8_to_inptr in_
128
+ ::Lib.test_utf8_nonconst_in _v1
129
+ end"
130
+
131
+ assert_equal cws(expected), cws(code)
132
+ end
76
133
  end
77
134
  end
@@ -2,7 +2,7 @@ require File.expand_path('test_helper.rb', File.dirname(__FILE__))
2
2
  require 'gir_ffi'
3
3
 
4
4
  class GObjectOverridesTest < Test::Unit::TestCase
5
- context "The GObject module with overridden functions" do
5
+ context "In the GObject module with overridden functions" do
6
6
  setup do
7
7
  GirFFI.setup :GObject
8
8
  GirFFI.setup :Everything
@@ -71,7 +71,7 @@ class GObjectOverridesTest < Test::Unit::TestCase
71
71
  GObject.signal_connect_data o, "test-with-static-scope-arg", callback, nil, nil, 0
72
72
  GObject.signal_emit o, "test-with-static-scope-arg", sb
73
73
 
74
- sb2 = Everything::TestSimpleBoxedA.new b2
74
+ sb2 = Everything::TestSimpleBoxedA.wrap b2
75
75
  assert sb.equals(sb2)
76
76
  end
77
77
  end
@@ -116,6 +116,13 @@ class GObjectOverridesTest < Test::Unit::TestCase
116
116
  assert_equal true, rv.get_boolean
117
117
  end
118
118
 
119
+ should "require a block" do
120
+ o = Everything::TestSubObj.new
121
+ assert_raises ArgumentError do
122
+ GObject.signal_connect o, "test"
123
+ end
124
+ end
125
+
119
126
  context "connecting a signal with extra arguments" do
120
127
  setup do
121
128
  @a = nil
@@ -123,12 +130,13 @@ class GObjectOverridesTest < Test::Unit::TestCase
123
130
 
124
131
  o = Everything::TestSubObj.new
125
132
  sb = Everything::TestSimpleBoxedA.new
133
+ sb[:some_int] = 23
126
134
 
127
135
  GObject.signal_connect(o, "test-with-static-scope-arg", 2) { |i, object, d|
128
136
  @a = d
129
137
  @b = object
130
138
  }
131
- GObject.signal_emit o, "test-with-static-scope-arg"
139
+ GObject.signal_emit o, "test-with-static-scope-arg", sb
132
140
  end
133
141
 
134
142
  should "move the user data argument" do
@@ -137,6 +145,7 @@ class GObjectOverridesTest < Test::Unit::TestCase
137
145
 
138
146
  should "pass on the extra arguments" do
139
147
  assert_instance_of Everything::TestSimpleBoxedA, @b
148
+ assert_equal 23, @b[:some_int]
140
149
  end
141
150
  end
142
151
 
data/test/test_helper.rb CHANGED
@@ -3,6 +3,11 @@ require 'rr'
3
3
  require 'ffi'
4
4
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
5
5
 
6
+ if RUBY_PLATFORM == 'java'
7
+ require 'java'
8
+ JRuby.objectspace = true
9
+ end
10
+
6
11
  # Since the tests will call Gtk+ functions, Gtk+ must be initialized.
7
12
  module DummyGtk
8
13
  module Lib