gir_ffi 0.10.2 → 0.11.0
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.
- checksums.yaml +4 -4
- data/Changelog.md +13 -0
- data/Gemfile +9 -4
- data/README.md +3 -2
- data/Rakefile +2 -1
- data/lib/ffi-glib/byte_array.rb +1 -1
- data/lib/ffi-glib/main_loop.rb +2 -1
- data/lib/ffi-glib/strv.rb +5 -2
- data/lib/ffi-glib/variant.rb +3 -5
- data/lib/ffi-glib.rb +4 -0
- data/lib/ffi-gobject/closure.rb +8 -10
- data/lib/ffi-gobject/object.rb +9 -6
- data/lib/ffi-gobject/param_spec.rb +4 -0
- data/lib/ffi-gobject/value.rb +13 -16
- data/lib/ffi-gobject_introspection/gobject_type_init.rb +18 -0
- data/lib/ffi-gobject_introspection/i_callable_info.rb +1 -5
- data/lib/ffi-gobject_introspection/i_constant_info.rb +3 -3
- data/lib/ffi-gobject_introspection/i_repository.rb +3 -47
- data/lib/ffi-gobject_introspection/i_vfunc_info.rb +3 -11
- data/lib/ffi-gobject_introspection/lib.rb +8 -31
- data/lib/{gir_ffi-base/glib → ffi-gobject_introspection}/strv.rb +9 -13
- data/lib/ffi-gobject_introspection.rb +47 -2
- data/lib/gir_ffi/allocation_helper.rb +1 -19
- data/lib/gir_ffi/arg_helper.rb +36 -26
- data/lib/{gir_ffi-base/glib → gir_ffi}/boolean.rb +7 -5
- data/lib/gir_ffi/boxed_base.rb +5 -23
- data/lib/gir_ffi/builder.rb +3 -3
- data/lib/gir_ffi/builders/argument_builder.rb +7 -8
- data/lib/gir_ffi/builders/base_argument_builder.rb +0 -1
- data/lib/gir_ffi/builders/callback_argument_builder.rb +2 -2
- data/lib/gir_ffi/builders/callback_return_value_builder.rb +21 -13
- data/lib/gir_ffi/builders/field_builder.rb +4 -10
- data/lib/gir_ffi/builders/module_builder.rb +6 -4
- data/lib/gir_ffi/builders/object_builder.rb +16 -16
- data/lib/gir_ffi/builders/struct_builder.rb +4 -6
- data/lib/gir_ffi/builders/struct_like.rb +1 -1
- data/lib/gir_ffi/builders/user_defined_builder.rb +83 -23
- data/lib/gir_ffi/builders/vfunc_argument_builder.rb +12 -17
- data/lib/gir_ffi/class_base.rb +0 -4
- data/lib/gir_ffi/core.rb +16 -13
- data/lib/gir_ffi/enum_base.rb +2 -41
- data/lib/gir_ffi/enum_like_base.rb +48 -0
- data/lib/gir_ffi/ffi_ext/pointer.rb +1 -1
- data/lib/gir_ffi/flags_base.rb +2 -41
- data/lib/gir_ffi/in_out_pointer.rb +1 -1
- data/lib/gir_ffi/in_pointer.rb +4 -4
- data/lib/gir_ffi/info_ext/i_type_info.rb +14 -5
- data/lib/gir_ffi/info_ext/i_vfunc_info.rb +8 -0
- data/lib/gir_ffi/module_base.rb +4 -0
- data/lib/gir_ffi/receiver_argument_info.rb +1 -1
- data/lib/gir_ffi/sized_array.rb +6 -6
- data/lib/gir_ffi/struct_base.rb +1 -6
- data/lib/gir_ffi/struct_like_base.rb +54 -45
- data/lib/gir_ffi/type_map.rb +6 -7
- data/lib/gir_ffi/union_base.rb +1 -1
- data/lib/gir_ffi/{user_defined_type_info.rb → user_defined_object_info.rb} +1 -2
- data/lib/gir_ffi/user_defined_property_info.rb +80 -2
- data/lib/gir_ffi/version.rb +1 -1
- data/lib/gir_ffi-base/gobject/lib.rb +0 -1
- data/lib/gir_ffi-base/gobject.rb +3 -5
- data/lib/gir_ffi-base.rb +3 -8
- data/tasks/test.rake +17 -3
- data/test/base_test_helper.rb +39 -23
- data/test/ffi-glib/closure_test.rb +37 -0
- data/test/ffi-glib/main_loop_test.rb +24 -0
- data/test/ffi-glib/ruby_closure_test.rb +0 -5
- data/test/ffi-gobject/object_test.rb +6 -10
- data/test/ffi-gobject/param_spec_test.rb +17 -5
- data/test/ffi-gobject/value_test.rb +15 -6
- data/test/ffi-gobject_introspection/gobject_type_init_test.rb +25 -0
- data/test/ffi-gobject_introspection/i_base_info_test.rb +1 -1
- data/test/ffi-gobject_introspection/i_repository_test.rb +18 -0
- data/test/ffi-gobject_introspection/i_vfunc_info_test.rb +40 -0
- data/test/{gir_ffi-base/glib → ffi-gobject_introspection}/strv_test.rb +8 -8
- data/test/gir_ffi/allocation_helper_test.rb +35 -0
- data/test/gir_ffi/arg_helper_test.rb +102 -7
- data/test/gir_ffi/boolean_test.rb +34 -0
- data/test/gir_ffi/boxed_base_test.rb +46 -6
- data/test/gir_ffi/builder_test.rb +88 -29
- data/test/gir_ffi/builders/argument_builder_test.rb +19 -0
- data/test/gir_ffi/builders/callback_argument_builder_test.rb +17 -0
- data/test/gir_ffi/builders/callback_return_value_builder_test.rb +1 -1
- data/test/gir_ffi/builders/field_builder_test.rb +2 -1
- data/test/gir_ffi/builders/struct_builder_test.rb +42 -25
- data/test/gir_ffi/builders/user_defined_builder_test.rb +365 -17
- data/test/gir_ffi/builders/vfunc_argument_builder_test.rb +100 -0
- data/test/gir_ffi/builders/vfunc_builder_test.rb +5 -3
- data/test/{gir_ffi_test.rb → gir_ffi/core_test.rb} +8 -6
- data/test/gir_ffi/in_out_pointer_test.rb +1 -1
- data/test/gir_ffi/receiver_argument_info_test.rb +32 -0
- data/test/gir_ffi/sized_array_test.rb +34 -0
- data/test/gir_ffi/struct_base_test.rb +4 -32
- data/test/gir_ffi/struct_like_base_test.rb +164 -0
- data/test/gir_ffi/union_base_test.rb +4 -20
- data/test/gir_ffi/{user_defined_type_info_test.rb → user_defined_object_info_test.rb} +10 -10
- data/test/gir_ffi/user_defined_property_info_test.rb +22 -5
- data/test/gir_ffi/version_test.rb +1 -1
- data/test/integration/callback_exceptions_test.rb +2 -0
- data/test/integration/derived_classes_test.rb +2 -0
- data/test/integration/generated_everything_test.rb +22 -0
- data/test/integration/generated_gimarshallingtests_test.rb +23 -21
- data/test/integration/generated_gio_test.rb +2 -0
- data/test/integration/generated_glib_test.rb +2 -0
- data/test/integration/generated_gst_test.rb +2 -0
- data/test/integration/generated_gtop_test.rb +2 -0
- data/test/integration/generated_regress_test.rb +113 -29
- data/test/integration/generated_secret_test.rb +2 -0
- data/test/integration/generated_warnlib_test.rb +2 -0
- data/test/integration/method_lookup_test.rb +2 -0
- data/test/introspection_test_helper.rb +15 -0
- metadata +21 -27
- data/lib/gir_ffi-base/glib.rb +0 -8
- data/test/gir_ffi-base/glib/boolean_test.rb +0 -34
| @@ -99,7 +99,7 @@ describe Regress do | |
| 99 99 | 
             
                end
         | 
| 100 100 |  | 
| 101 101 | 
             
                it 'has a writable field arr' do
         | 
| 102 | 
            -
                  instance.arr. | 
| 102 | 
            +
                  instance.arr.must_be_nil
         | 
| 103 103 | 
             
                  instance.arr = [1, 2, 3]
         | 
| 104 104 | 
             
                  # TODO: len should be set automatically
         | 
| 105 105 | 
             
                  instance.len = 3
         | 
| @@ -394,6 +394,30 @@ describe Regress do | |
| 394 394 | 
             
                end
         | 
| 395 395 | 
             
              end
         | 
| 396 396 |  | 
| 397 | 
            +
              describe 'Regress::AnonymousUnionAndStruct' do
         | 
| 398 | 
            +
                let(:instance) { Regress::AnonymousUnionAndStruct.new }
         | 
| 399 | 
            +
             | 
| 400 | 
            +
                before do
         | 
| 401 | 
            +
                  skip unless get_introspection_data 'Regress', 'AnonymousUnionAndStruct'
         | 
| 402 | 
            +
                end
         | 
| 403 | 
            +
             | 
| 404 | 
            +
                it 'has a writable field x' do
         | 
| 405 | 
            +
                  instance.x = 42
         | 
| 406 | 
            +
                  instance.x.must_equal 42
         | 
| 407 | 
            +
                end
         | 
| 408 | 
            +
             | 
| 409 | 
            +
                it 'has a writable field a' do
         | 
| 410 | 
            +
                  skip 'Anonymous struct fields are not exposed in the GIR data'
         | 
| 411 | 
            +
                end
         | 
| 412 | 
            +
             | 
| 413 | 
            +
                it 'has a writable field b' do
         | 
| 414 | 
            +
                  skip 'Anonymous struct fields are not exposed in the GIR data'
         | 
| 415 | 
            +
                end
         | 
| 416 | 
            +
             | 
| 417 | 
            +
                it 'has a writable field padding' do
         | 
| 418 | 
            +
                  skip 'Anonymous union fields are not exposed in the GIR data'
         | 
| 419 | 
            +
                end
         | 
| 420 | 
            +
              end
         | 
| 397 421 | 
             
              it 'has the constant BOOL_CONSTANT' do
         | 
| 398 422 | 
             
                skip unless get_introspection_data 'Regress', 'BOOL_CONSTANT'
         | 
| 399 423 | 
             
                Regress::BOOL_CONSTANT.must_equal true
         | 
| @@ -782,11 +806,11 @@ describe Regress do | |
| 782 806 |  | 
| 783 807 | 
             
                describe "its 'string' property" do
         | 
| 784 808 | 
             
                  it 'can be retrieved with #get_property' do
         | 
| 785 | 
            -
                    instance.get_property('string'). | 
| 809 | 
            +
                    instance.get_property('string').must_be_nil
         | 
| 786 810 | 
             
                  end
         | 
| 787 811 |  | 
| 788 812 | 
             
                  it 'can be retrieved with #string' do
         | 
| 789 | 
            -
                    instance.string. | 
| 813 | 
            +
                    instance.string.must_be_nil
         | 
| 790 814 | 
             
                  end
         | 
| 791 815 |  | 
| 792 816 | 
             
                  it 'can be set with #set_property' do
         | 
| @@ -895,7 +919,7 @@ describe Regress do | |
| 895 919 | 
             
              describe 'Regress::FooStruct' do
         | 
| 896 920 | 
             
                let(:instance) { Regress::FooStruct.new }
         | 
| 897 921 |  | 
| 898 | 
            -
                it 'blocks access to the field priv' do
         | 
| 922 | 
            +
                it 'blocks access to the hidden struct field priv' do
         | 
| 899 923 | 
             
                  proc { instance.priv = nil }.must_raise NoMethodError
         | 
| 900 924 | 
             
                  proc { instance.priv }.must_raise NoMethodError
         | 
| 901 925 | 
             
                end
         | 
| @@ -956,7 +980,6 @@ describe Regress do | |
| 956 980 |  | 
| 957 981 | 
             
              describe 'Regress::FooSubobject' do
         | 
| 958 982 | 
             
                it 'creates an instance using #new' do
         | 
| 959 | 
            -
                  # TODO: Guard against instantiating abstract classes
         | 
| 960 983 | 
             
                  skip 'This function is defined in the header but not implemented'
         | 
| 961 984 | 
             
                end
         | 
| 962 985 | 
             
              end
         | 
| @@ -1167,7 +1190,7 @@ describe Regress do | |
| 1167 1190 | 
             
                  instance.nested_a.some_int.must_equal 12_345
         | 
| 1168 1191 | 
             
                end
         | 
| 1169 1192 |  | 
| 1170 | 
            -
                it 'blocks access to the field priv' do
         | 
| 1193 | 
            +
                it 'blocks access to the hidden struct field priv' do
         | 
| 1171 1194 | 
             
                  proc { instance.priv = nil }.must_raise NoMethodError
         | 
| 1172 1195 | 
             
                  proc { instance.priv }.must_raise NoMethodError
         | 
| 1173 1196 | 
             
                end
         | 
| @@ -1440,20 +1463,18 @@ describe Regress do | |
| 1440 1463 | 
             
                  proc { Regress::TestFundamentalObject.new }.must_raise NoMethodError
         | 
| 1441 1464 | 
             
                end
         | 
| 1442 1465 |  | 
| 1443 | 
            -
                 | 
| 1444 | 
            -
                # TestFundamentalObject is an abstract class.
         | 
| 1445 | 
            -
                let(:instance) { Regress::TestFundamentalSubObject.new 'foo' }
         | 
| 1466 | 
            +
                let(:derived_instance) { Regress::TestFundamentalSubObject.new 'foo' }
         | 
| 1446 1467 |  | 
| 1447 1468 | 
             
                it 'has a working method #ref' do
         | 
| 1448 | 
            -
                   | 
| 1449 | 
            -
                   | 
| 1450 | 
            -
                   | 
| 1469 | 
            +
                  derived_instance.refcount.must_equal 1
         | 
| 1470 | 
            +
                  derived_instance.ref
         | 
| 1471 | 
            +
                  derived_instance.refcount.must_equal 2
         | 
| 1451 1472 | 
             
                end
         | 
| 1452 1473 |  | 
| 1453 1474 | 
             
                it 'has a working method #unref' do
         | 
| 1454 | 
            -
                   | 
| 1455 | 
            -
                   | 
| 1456 | 
            -
                   | 
| 1475 | 
            +
                  derived_instance.refcount.must_equal 1
         | 
| 1476 | 
            +
                  derived_instance.unref
         | 
| 1477 | 
            +
                  derived_instance.refcount.must_equal 0
         | 
| 1457 1478 | 
             
                end
         | 
| 1458 1479 | 
             
              end
         | 
| 1459 1480 |  | 
| @@ -1483,23 +1504,28 @@ describe Regress do | |
| 1483 1504 | 
             
                  skip unless get_introspection_data 'Regress', 'TestInheritDrawable'
         | 
| 1484 1505 | 
             
                end
         | 
| 1485 1506 |  | 
| 1486 | 
            -
                 | 
| 1507 | 
            +
                it 'cannot be instantiated' do
         | 
| 1508 | 
            +
                  proc { Regress::TestInheritDrawable.new }.must_raise NoMethodError
         | 
| 1509 | 
            +
                end
         | 
| 1510 | 
            +
             | 
| 1511 | 
            +
                let(:derived_instance) { ConcreteDrawable.new }
         | 
| 1512 | 
            +
             | 
| 1487 1513 | 
             
                it 'has a working method #do_foo' do
         | 
| 1488 | 
            -
                   | 
| 1514 | 
            +
                  derived_instance.do_foo 42
         | 
| 1489 1515 | 
             
                  pass
         | 
| 1490 1516 | 
             
                end
         | 
| 1491 1517 |  | 
| 1492 1518 | 
             
                it 'has a working method #do_foo_maybe_throw' do
         | 
| 1493 | 
            -
                   | 
| 1494 | 
            -
                  proc {  | 
| 1519 | 
            +
                  derived_instance.do_foo_maybe_throw 42
         | 
| 1520 | 
            +
                  proc { derived_instance.do_foo_maybe_throw 41 }.must_raise GirFFI::GLibError
         | 
| 1495 1521 | 
             
                end
         | 
| 1496 1522 |  | 
| 1497 1523 | 
             
                it 'has a working method #get_origin' do
         | 
| 1498 | 
            -
                   | 
| 1524 | 
            +
                  derived_instance.get_origin.must_equal [0, 0]
         | 
| 1499 1525 | 
             
                end
         | 
| 1500 1526 |  | 
| 1501 1527 | 
             
                it 'has a working method #get_size' do
         | 
| 1502 | 
            -
                   | 
| 1528 | 
            +
                  derived_instance.get_size.must_equal [42, 42]
         | 
| 1503 1529 | 
             
                end
         | 
| 1504 1530 | 
             
              end
         | 
| 1505 1531 |  | 
| @@ -1596,6 +1622,17 @@ describe Regress do | |
| 1596 1622 | 
             
                  instance.do_matrix('bar').must_equal 42
         | 
| 1597 1623 | 
             
                end
         | 
| 1598 1624 |  | 
| 1625 | 
            +
                it 'has a working method #emit_sig_with_array_len_prop' do
         | 
| 1626 | 
            +
                  skip unless get_method_introspection_data('Regress', 'TestObj',
         | 
| 1627 | 
            +
                                                            'emit_sig_with_array_len_prop')
         | 
| 1628 | 
            +
                  array = nil
         | 
| 1629 | 
            +
                  instance.signal_connect 'sig-with-array-len-prop' do |_obj, ary|
         | 
| 1630 | 
            +
                    array = ary.to_a
         | 
| 1631 | 
            +
                  end
         | 
| 1632 | 
            +
                  instance.emit_sig_with_array_len_prop
         | 
| 1633 | 
            +
                  array.to_a.must_equal [0, 1, 2, 3, 4]
         | 
| 1634 | 
            +
                end
         | 
| 1635 | 
            +
             | 
| 1599 1636 | 
             
                it 'has a working method #emit_sig_with_foreign_struct' do
         | 
| 1600 1637 | 
             
                  skip unless get_method_introspection_data('Regress', 'TestObj',
         | 
| 1601 1638 | 
             
                                                            'emit_sig_with_foreign_struct')
         | 
| @@ -1657,6 +1694,21 @@ describe Regress do | |
| 1657 1694 | 
             
                  instance.ref_count.must_equal 1
         | 
| 1658 1695 | 
             
                end
         | 
| 1659 1696 |  | 
| 1697 | 
            +
                it 'has a working method #not_nullable_element_typed_gpointer_in' do
         | 
| 1698 | 
            +
                  skip unless get_method_introspection_data('Regress', 'TestObj',
         | 
| 1699 | 
            +
                                                            'not_nullable_element_typed_gpointer_in')
         | 
| 1700 | 
            +
                  instance.not_nullable_element_typed_gpointer_in [1, 2, 3]
         | 
| 1701 | 
            +
                  # TODO: Make method raise when passed nil
         | 
| 1702 | 
            +
                end
         | 
| 1703 | 
            +
             | 
| 1704 | 
            +
                it 'has a working method #not_nullable_typed_gpointer_in' do
         | 
| 1705 | 
            +
                  skip unless get_method_introspection_data('Regress', 'TestObj',
         | 
| 1706 | 
            +
                                                            'not_nullable_typed_gpointer_in')
         | 
| 1707 | 
            +
                  obj = Regress::TestObj.new_from_file('bar')
         | 
| 1708 | 
            +
                  instance.not_nullable_typed_gpointer_in obj
         | 
| 1709 | 
            +
                  # TODO: Make method raise when passed nil
         | 
| 1710 | 
            +
                end
         | 
| 1711 | 
            +
             | 
| 1660 1712 | 
             
                it 'has a working method #set_bare' do
         | 
| 1661 1713 | 
             
                  obj = Regress::TestObj.new_from_file('bar')
         | 
| 1662 1714 | 
             
                  instance.set_bare obj
         | 
| @@ -2198,7 +2250,7 @@ describe Regress do | |
| 2198 2250 | 
             
                  Regress::TestPrivateEnum[:public_enum_before].must_equal 1
         | 
| 2199 2251 | 
             
                end
         | 
| 2200 2252 | 
             
                it 'does not have the member :private' do
         | 
| 2201 | 
            -
                  Regress::TestPrivateEnum[:private]. | 
| 2253 | 
            +
                  Regress::TestPrivateEnum[:private].must_be_nil
         | 
| 2202 2254 | 
             
                end
         | 
| 2203 2255 | 
             
                it 'has the member :public_enum_after' do
         | 
| 2204 2256 | 
             
                  Regress::TestPrivateEnum[:public_enum_after].must_equal 4
         | 
| @@ -2432,7 +2484,7 @@ describe Regress do | |
| 2432 2484 |  | 
| 2433 2485 | 
             
                it 'has a writable field obj' do
         | 
| 2434 2486 | 
             
                  o = Regress::TestSubObj.new
         | 
| 2435 | 
            -
                  instance.obj. | 
| 2487 | 
            +
                  instance.obj.must_be_nil
         | 
| 2436 2488 | 
             
                  instance.obj = o
         | 
| 2437 2489 | 
             
                  instance.obj.must_equal o
         | 
| 2438 2490 | 
             
                end
         | 
| @@ -2455,7 +2507,7 @@ describe Regress do | |
| 2455 2507 | 
             
                end
         | 
| 2456 2508 |  | 
| 2457 2509 | 
             
                it 'has a writable field field' do
         | 
| 2458 | 
            -
                  instance.field. | 
| 2510 | 
            +
                  instance.field.must_be_nil
         | 
| 2459 2511 | 
             
                  o = Regress::TestSubObj.new
         | 
| 2460 2512 | 
             
                  instance.field = o
         | 
| 2461 2513 | 
             
                  instance.field.must_equal o
         | 
| @@ -2564,7 +2616,7 @@ describe Regress do | |
| 2564 2616 |  | 
| 2565 2617 | 
             
                it 'has a writable field data1' do
         | 
| 2566 2618 | 
             
                  instance.data1.must_be :null?
         | 
| 2567 | 
            -
                  instance.data1 =  | 
| 2619 | 
            +
                  instance.data1 = FFI::MemoryPointer.new(:int32).tap { |it| it.put_int(0, 42) }
         | 
| 2568 2620 | 
             
                  instance.data1.read_int.must_equal 42
         | 
| 2569 2621 | 
             
                end
         | 
| 2570 2622 |  | 
| @@ -2872,6 +2924,13 @@ describe Regress do | |
| 2872 2924 | 
             
                pass
         | 
| 2873 2925 | 
             
              end
         | 
| 2874 2926 |  | 
| 2927 | 
            +
              it 'has a working function #get_variant' do
         | 
| 2928 | 
            +
                skip unless get_introspection_data 'Regress', 'get_variant'
         | 
| 2929 | 
            +
                var = Regress.get_variant
         | 
| 2930 | 
            +
                var.get_int32.must_equal 42
         | 
| 2931 | 
            +
                # TODO: Make var not floating
         | 
| 2932 | 
            +
              end
         | 
| 2933 | 
            +
             | 
| 2875 2934 | 
             
              it 'has a working function #global_get_flags_out' do
         | 
| 2876 2935 | 
             
                result = Regress.global_get_flags_out
         | 
| 2877 2936 | 
             
                result.must_equal(flag1: true, flag3: true)
         | 
| @@ -3003,13 +3062,19 @@ describe Regress do | |
| 3003 3062 | 
             
              end
         | 
| 3004 3063 |  | 
| 3005 3064 | 
             
              it 'has a working function #test_array_int_null_out' do
         | 
| 3006 | 
            -
                 | 
| 3065 | 
            +
                Regress.test_array_int_null_out.must_be_nil
         | 
| 3007 3066 | 
             
              end
         | 
| 3008 3067 |  | 
| 3009 3068 | 
             
              it 'has a working function #test_array_int_out' do
         | 
| 3010 3069 | 
             
                Regress.test_array_int_out.must_be :==, [0, 1, 2, 3, 4]
         | 
| 3011 3070 | 
             
              end
         | 
| 3012 3071 |  | 
| 3072 | 
            +
              it 'has a working function #test_array_struct_out' do
         | 
| 3073 | 
            +
                skip unless get_introspection_data 'Regress', 'test_array_struct_out'
         | 
| 3074 | 
            +
                result = Regress.test_array_struct_out
         | 
| 3075 | 
            +
                result.map(&:some_int).must_equal [22, 33, 44]
         | 
| 3076 | 
            +
              end
         | 
| 3077 | 
            +
             | 
| 3013 3078 | 
             
              it 'has a working function #test_async_ready_callback' do
         | 
| 3014 3079 | 
             
                main_loop = GLib::MainLoop.new nil, false
         | 
| 3015 3080 |  | 
| @@ -3408,7 +3473,7 @@ describe Regress do | |
| 3408 3473 |  | 
| 3409 3474 | 
             
              it 'has a working function #test_glist_null_out' do
         | 
| 3410 3475 | 
             
                result = Regress.test_glist_null_out
         | 
| 3411 | 
            -
                 | 
| 3476 | 
            +
                result.must_be_nil
         | 
| 3412 3477 | 
             
              end
         | 
| 3413 3478 |  | 
| 3414 3479 | 
             
              it 'has a working function #test_gslist_container_return' do
         | 
| @@ -3449,7 +3514,7 @@ describe Regress do | |
| 3449 3514 |  | 
| 3450 3515 | 
             
              it 'has a working function #test_gslist_null_out' do
         | 
| 3451 3516 | 
             
                result = Regress.test_gslist_null_out
         | 
| 3452 | 
            -
                 | 
| 3517 | 
            +
                result.must_be_nil
         | 
| 3453 3518 | 
             
              end
         | 
| 3454 3519 |  | 
| 3455 3520 | 
             
              it 'has a working function #test_gtype' do
         | 
| @@ -3554,6 +3619,13 @@ describe Regress do | |
| 3554 3619 | 
             
                Regress.test_nested_parameter(3).must_be_nil
         | 
| 3555 3620 | 
             
              end
         | 
| 3556 3621 |  | 
| 3622 | 
            +
              it 'has a working function #test_noptr_callback' do
         | 
| 3623 | 
            +
                skip unless get_introspection_data 'Regress', 'test_noptr_callback'
         | 
| 3624 | 
            +
                a = 0
         | 
| 3625 | 
            +
                Regress.test_noptr_callback { a = 1 }
         | 
| 3626 | 
            +
                a.must_equal 1
         | 
| 3627 | 
            +
              end
         | 
| 3628 | 
            +
             | 
| 3557 3629 | 
             
              it 'has a working function #test_null_gerror_callback' do
         | 
| 3558 3630 | 
             
                value = nil
         | 
| 3559 3631 | 
             
                Regress.test_owned_gerror_callback { |err| value = err }
         | 
| @@ -3566,6 +3638,18 @@ describe Regress do | |
| 3566 3638 | 
             
                value.message.must_equal 'regression test owned error'
         | 
| 3567 3639 | 
             
              end
         | 
| 3568 3640 |  | 
| 3641 | 
            +
              it 'has a working function #test_return_allow_none' do
         | 
| 3642 | 
            +
                skip unless get_introspection_data 'Regress', 'test_return_allow_none'
         | 
| 3643 | 
            +
                result = Regress.test_return_allow_none
         | 
| 3644 | 
            +
                result.must_be_nil
         | 
| 3645 | 
            +
              end
         | 
| 3646 | 
            +
             | 
| 3647 | 
            +
              it 'has a working function #test_return_nullable' do
         | 
| 3648 | 
            +
                skip unless get_introspection_data 'Regress', 'test_return_nullable'
         | 
| 3649 | 
            +
                result = Regress.test_return_nullable
         | 
| 3650 | 
            +
                result.must_be_nil
         | 
| 3651 | 
            +
              end
         | 
| 3652 | 
            +
             | 
| 3569 3653 | 
             
              it 'has a working function #test_short' do
         | 
| 3570 3654 | 
             
                result = Regress.test_short 23
         | 
| 3571 3655 | 
             
                assert_equal 23, result
         | 
| @@ -3724,7 +3808,7 @@ describe Regress do | |
| 3724 3808 | 
             
              end
         | 
| 3725 3809 |  | 
| 3726 3810 | 
             
              it 'has a working function #test_utf8_null_out' do
         | 
| 3727 | 
            -
                 | 
| 3811 | 
            +
                Regress.test_utf8_null_out.must_be_nil
         | 
| 3728 3812 | 
             
              end
         | 
| 3729 3813 |  | 
| 3730 3814 | 
             
              it 'has a working function #test_utf8_out' do
         | 
| @@ -3,6 +3,21 @@ require 'base_test_helper' | |
| 3 3 |  | 
| 4 4 | 
             
            require 'ffi-gobject_introspection'
         | 
| 5 5 |  | 
| 6 | 
            +
            GObjectIntrospection::IRepository.prepend_search_path File.join(File.dirname(__FILE__), 'lib')
         | 
| 7 | 
            +
             | 
| 8 | 
            +
            module LocalSharedLibrary
         | 
| 9 | 
            +
              def shared_library(namespace)
         | 
| 10 | 
            +
                case namespace
         | 
| 11 | 
            +
                when 'Everything', 'GIMarshallingTests', 'Regress', 'Utility', 'WarnLib'
         | 
| 12 | 
            +
                  File.join(File.dirname(__FILE__), 'lib', "lib#{namespace.downcase}.so")
         | 
| 13 | 
            +
                else
         | 
| 14 | 
            +
                  super
         | 
| 15 | 
            +
                end
         | 
| 16 | 
            +
              end
         | 
| 17 | 
            +
            end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
            GObjectIntrospection::IRepository.prepend LocalSharedLibrary
         | 
| 20 | 
            +
             | 
| 6 21 | 
             
            module IntrospectionTestExtensions
         | 
| 7 22 | 
             
              module_function
         | 
| 8 23 |  | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: gir_ffi
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.11.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Matijs van Zuijlen
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2016- | 
| 11 | 
            +
            date: 2016-10-16 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: ffi
         | 
| @@ -66,34 +66,20 @@ dependencies: | |
| 66 66 | 
             
                - - "~>"
         | 
| 67 67 | 
             
                  - !ruby/object:Gem::Version
         | 
| 68 68 | 
             
                    version: '5.5'
         | 
| 69 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 70 | 
            -
              name: minitest-rspec_mocks
         | 
| 71 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 72 | 
            -
                requirements:
         | 
| 73 | 
            -
                - - "~>"
         | 
| 74 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 75 | 
            -
                    version: 0.3.0
         | 
| 76 | 
            -
              type: :development
         | 
| 77 | 
            -
              prerelease: false
         | 
| 78 | 
            -
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 79 | 
            -
                requirements:
         | 
| 80 | 
            -
                - - "~>"
         | 
| 81 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 82 | 
            -
                    version: 0.3.0
         | 
| 83 69 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 84 70 | 
             
              name: rspec-mocks
         | 
| 85 71 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 86 72 | 
             
                requirements:
         | 
| 87 73 | 
             
                - - "~>"
         | 
| 88 74 | 
             
                  - !ruby/object:Gem::Version
         | 
| 89 | 
            -
                    version: 3. | 
| 75 | 
            +
                    version: 3.5.0
         | 
| 90 76 | 
             
              type: :development
         | 
| 91 77 | 
             
              prerelease: false
         | 
| 92 78 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 93 79 | 
             
                requirements:
         | 
| 94 80 | 
             
                - - "~>"
         | 
| 95 81 | 
             
                  - !ruby/object:Gem::Version
         | 
| 96 | 
            -
                    version: 3. | 
| 82 | 
            +
                    version: 3.5.0
         | 
| 97 83 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 98 84 | 
             
              name: rake
         | 
| 99 85 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -173,6 +159,7 @@ files: | |
| 173 159 | 
             
            - lib/ffi-gobject/value.rb
         | 
| 174 160 | 
             
            - lib/ffi-gobject_introspection.rb
         | 
| 175 161 | 
             
            - lib/ffi-gobject_introspection/g_error.rb
         | 
| 162 | 
            +
            - lib/ffi-gobject_introspection/gobject_type_init.rb
         | 
| 176 163 | 
             
            - lib/ffi-gobject_introspection/i_arg_info.rb
         | 
| 177 164 | 
             
            - lib/ffi-gobject_introspection/i_base_info.rb
         | 
| 178 165 | 
             
            - lib/ffi-gobject_introspection/i_callable_info.rb
         | 
| @@ -195,15 +182,14 @@ files: | |
| 195 182 | 
             
            - lib/ffi-gobject_introspection/i_value_info.rb
         | 
| 196 183 | 
             
            - lib/ffi-gobject_introspection/i_vfunc_info.rb
         | 
| 197 184 | 
             
            - lib/ffi-gobject_introspection/lib.rb
         | 
| 185 | 
            +
            - lib/ffi-gobject_introspection/strv.rb
         | 
| 198 186 | 
             
            - lib/gir_ffi-base.rb
         | 
| 199 | 
            -
            - lib/gir_ffi-base/glib.rb
         | 
| 200 | 
            -
            - lib/gir_ffi-base/glib/boolean.rb
         | 
| 201 | 
            -
            - lib/gir_ffi-base/glib/strv.rb
         | 
| 202 187 | 
             
            - lib/gir_ffi-base/gobject.rb
         | 
| 203 188 | 
             
            - lib/gir_ffi-base/gobject/lib.rb
         | 
| 204 189 | 
             
            - lib/gir_ffi.rb
         | 
| 205 190 | 
             
            - lib/gir_ffi/allocation_helper.rb
         | 
| 206 191 | 
             
            - lib/gir_ffi/arg_helper.rb
         | 
| 192 | 
            +
            - lib/gir_ffi/boolean.rb
         | 
| 207 193 | 
             
            - lib/gir_ffi/boxed_base.rb
         | 
| 208 194 | 
             
            - lib/gir_ffi/builder.rb
         | 
| 209 195 | 
             
            - lib/gir_ffi/builder_helper.rb
         | 
| @@ -262,6 +248,7 @@ files: | |
| 262 248 | 
             
            - lib/gir_ffi/class_base.rb
         | 
| 263 249 | 
             
            - lib/gir_ffi/core.rb
         | 
| 264 250 | 
             
            - lib/gir_ffi/enum_base.rb
         | 
| 251 | 
            +
            - lib/gir_ffi/enum_like_base.rb
         | 
| 265 252 | 
             
            - lib/gir_ffi/error_argument_info.rb
         | 
| 266 253 | 
             
            - lib/gir_ffi/error_type_info.rb
         | 
| 267 254 | 
             
            - lib/gir_ffi/ffi_ext.rb
         | 
| @@ -311,8 +298,8 @@ files: | |
| 311 298 | 
             
            - lib/gir_ffi/unintrospectable_type_info.rb
         | 
| 312 299 | 
             
            - lib/gir_ffi/union.rb
         | 
| 313 300 | 
             
            - lib/gir_ffi/union_base.rb
         | 
| 301 | 
            +
            - lib/gir_ffi/user_defined_object_info.rb
         | 
| 314 302 | 
             
            - lib/gir_ffi/user_defined_property_info.rb
         | 
| 315 | 
            -
            - lib/gir_ffi/user_defined_type_info.rb
         | 
| 316 303 | 
             
            - lib/gir_ffi/variable_name_generator.rb
         | 
| 317 304 | 
             
            - lib/gir_ffi/version.rb
         | 
| 318 305 | 
             
            - lib/gir_ffi/vfunc_implementation.rb
         | 
| @@ -323,6 +310,7 @@ files: | |
| 323 310 | 
             
            - test/ffi-glib/array_test.rb
         | 
| 324 311 | 
             
            - test/ffi-glib/byte_array_test.rb
         | 
| 325 312 | 
             
            - test/ffi-glib/bytes_test.rb
         | 
| 313 | 
            +
            - test/ffi-glib/closure_test.rb
         | 
| 326 314 | 
             
            - test/ffi-glib/destroy_notify_test.rb
         | 
| 327 315 | 
             
            - test/ffi-glib/hash_table_test.rb
         | 
| 328 316 | 
             
            - test/ffi-glib/iconv_test.rb
         | 
| @@ -338,6 +326,7 @@ files: | |
| 338 326 | 
             
            - test/ffi-gobject/object_test.rb
         | 
| 339 327 | 
             
            - test/ffi-gobject/param_spec_test.rb
         | 
| 340 328 | 
             
            - test/ffi-gobject/value_test.rb
         | 
| 329 | 
            +
            - test/ffi-gobject_introspection/gobject_type_init_test.rb
         | 
| 341 330 | 
             
            - test/ffi-gobject_introspection/i_base_info_test.rb
         | 
| 342 331 | 
             
            - test/ffi-gobject_introspection/i_constant_info_test.rb
         | 
| 343 332 | 
             
            - test/ffi-gobject_introspection/i_enum_info_test.rb
         | 
| @@ -350,11 +339,13 @@ files: | |
| 350 339 | 
             
            - test/ffi-gobject_introspection/i_struct_info_test.rb
         | 
| 351 340 | 
             
            - test/ffi-gobject_introspection/i_type_info_test.rb
         | 
| 352 341 | 
             
            - test/ffi-gobject_introspection/i_union_info_test.rb
         | 
| 342 | 
            +
            - test/ffi-gobject_introspection/i_vfunc_info_test.rb
         | 
| 353 343 | 
             
            - test/ffi-gobject_introspection/lib_test.rb
         | 
| 344 | 
            +
            - test/ffi-gobject_introspection/strv_test.rb
         | 
| 354 345 | 
             
            - test/ffi-gobject_test.rb
         | 
| 355 | 
            -
            - test/gir_ffi | 
| 356 | 
            -
            - test/gir_ffi-base/glib/strv_test.rb
         | 
| 346 | 
            +
            - test/gir_ffi/allocation_helper_test.rb
         | 
| 357 347 | 
             
            - test/gir_ffi/arg_helper_test.rb
         | 
| 348 | 
            +
            - test/gir_ffi/boolean_test.rb
         | 
| 358 349 | 
             
            - test/gir_ffi/boxed_base_test.rb
         | 
| 359 350 | 
             
            - test/gir_ffi/builder_test.rb
         | 
| 360 351 | 
             
            - test/gir_ffi/builders/argument_builder_test.rb
         | 
| @@ -380,9 +371,11 @@ files: | |
| 380 371 | 
             
            - test/gir_ffi/builders/unintrospectable_builder_test.rb
         | 
| 381 372 | 
             
            - test/gir_ffi/builders/union_builder_test.rb
         | 
| 382 373 | 
             
            - test/gir_ffi/builders/user_defined_builder_test.rb
         | 
| 374 | 
            +
            - test/gir_ffi/builders/vfunc_argument_builder_test.rb
         | 
| 383 375 | 
             
            - test/gir_ffi/builders/vfunc_builder_test.rb
         | 
| 384 376 | 
             
            - test/gir_ffi/callback_base_test.rb
         | 
| 385 377 | 
             
            - test/gir_ffi/class_base_test.rb
         | 
| 378 | 
            +
            - test/gir_ffi/core_test.rb
         | 
| 386 379 | 
             
            - test/gir_ffi/error_type_info_test.rb
         | 
| 387 380 | 
             
            - test/gir_ffi/ffi_ext/pointer_test.rb
         | 
| 388 381 | 
             
            - test/gir_ffi/g_type_test.rb
         | 
| @@ -401,17 +394,18 @@ files: | |
| 401 394 | 
             
            - test/gir_ffi/method_stubber_test.rb
         | 
| 402 395 | 
             
            - test/gir_ffi/object_base_test.rb
         | 
| 403 396 | 
             
            - test/gir_ffi/object_store_test.rb
         | 
| 397 | 
            +
            - test/gir_ffi/receiver_argument_info_test.rb
         | 
| 404 398 | 
             
            - test/gir_ffi/sized_array_test.rb
         | 
| 405 399 | 
             
            - test/gir_ffi/struct_base_test.rb
         | 
| 400 | 
            +
            - test/gir_ffi/struct_like_base_test.rb
         | 
| 406 401 | 
             
            - test/gir_ffi/type_map_test.rb
         | 
| 407 402 | 
             
            - test/gir_ffi/unintrospectable_type_info_test.rb
         | 
| 408 403 | 
             
            - test/gir_ffi/union_base_test.rb
         | 
| 404 | 
            +
            - test/gir_ffi/user_defined_object_info_test.rb
         | 
| 409 405 | 
             
            - test/gir_ffi/user_defined_property_info_test.rb
         | 
| 410 | 
            -
            - test/gir_ffi/user_defined_type_info_test.rb
         | 
| 411 406 | 
             
            - test/gir_ffi/variable_name_generator_test.rb
         | 
| 412 407 | 
             
            - test/gir_ffi/version_test.rb
         | 
| 413 408 | 
             
            - test/gir_ffi/zero_terminated_test.rb
         | 
| 414 | 
            -
            - test/gir_ffi_test.rb
         | 
| 415 409 | 
             
            - test/gir_ffi_test_helper.rb
         | 
| 416 410 | 
             
            - test/integration/callback_exceptions_test.rb
         | 
| 417 411 | 
             
            - test/integration/derived_classes_test.rb
         | 
| @@ -449,7 +443,7 @@ required_ruby_version: !ruby/object:Gem::Requirement | |
| 449 443 | 
             
              requirements:
         | 
| 450 444 | 
             
              - - ">="
         | 
| 451 445 | 
             
                - !ruby/object:Gem::Version
         | 
| 452 | 
            -
                  version: 2. | 
| 446 | 
            +
                  version: 2.1.0
         | 
| 453 447 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 454 448 | 
             
              requirements:
         | 
| 455 449 | 
             
              - - ">="
         | 
    
        data/lib/gir_ffi-base/glib.rb
    DELETED
    
    
| @@ -1,34 +0,0 @@ | |
| 1 | 
            -
            # frozen_string_literal: true
         | 
| 2 | 
            -
            require 'base_test_helper'
         | 
| 3 | 
            -
             | 
| 4 | 
            -
            describe GLib::Boolean do
         | 
| 5 | 
            -
              it 'has the same native size as an int' do
         | 
| 6 | 
            -
                FFI.type_size(GLib::Boolean).must_equal FFI.type_size :int
         | 
| 7 | 
            -
              end
         | 
| 8 | 
            -
             | 
| 9 | 
            -
              describe '.from_native' do
         | 
| 10 | 
            -
                it 'converts 0 to false' do
         | 
| 11 | 
            -
                  GLib::Boolean.from_native(0, 'whatever').must_equal false
         | 
| 12 | 
            -
                end
         | 
| 13 | 
            -
             | 
| 14 | 
            -
                it 'converts 1 to true' do
         | 
| 15 | 
            -
                  GLib::Boolean.from_native(1, 'whatever').must_equal true
         | 
| 16 | 
            -
                end
         | 
| 17 | 
            -
              end
         | 
| 18 | 
            -
             | 
| 19 | 
            -
              describe '.to_native' do
         | 
| 20 | 
            -
                it 'converts false to 0' do
         | 
| 21 | 
            -
                  GLib::Boolean.to_native(false, 'whatever').must_equal 0
         | 
| 22 | 
            -
                end
         | 
| 23 | 
            -
             | 
| 24 | 
            -
                it 'converts true to 1' do
         | 
| 25 | 
            -
                  GLib::Boolean.to_native(true, 'whatever').must_equal 1
         | 
| 26 | 
            -
                end
         | 
| 27 | 
            -
              end
         | 
| 28 | 
            -
             | 
| 29 | 
            -
              describe '.size' do
         | 
| 30 | 
            -
                it 'returns the correct type size' do
         | 
| 31 | 
            -
                  GLib::Boolean.size.must_equal FFI.type_size :int
         | 
| 32 | 
            -
                end
         | 
| 33 | 
            -
              end
         | 
| 34 | 
            -
            end
         |