gir_ffi 0.0.4 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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