gir_ffi 0.7.7 → 0.7.8
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 +9 -0
- data/lib/ffi-glib/array.rb +1 -1
- data/lib/ffi-glib/error.rb +1 -2
- data/lib/ffi-glib/hash_table.rb +2 -2
- data/lib/ffi-glib/variant.rb +1 -1
- data/lib/ffi-gobject/base.rb +23 -23
- data/lib/ffi-gobject/object.rb +7 -3
- data/lib/ffi-gobject/value.rb +6 -1
- data/lib/ffi-gobject.rb +9 -6
- data/lib/ffi-gobject_introspection/i_base_info.rb +3 -3
- data/lib/ffi-gobject_introspection/i_constant_info.rb +1 -1
- data/lib/ffi-gobject_introspection/i_repository.rb +4 -1
- data/lib/ffi-gobject_introspection/i_type_info.rb +1 -1
- data/lib/ffi-gobject_introspection/i_unresolved_info.rb +7 -0
- data/lib/ffi-gobject_introspection/lib.rb +1 -1
- data/lib/gir_ffi/builders/argument_builder.rb +1 -1
- data/lib/gir_ffi/builders/c_to_ruby_convertor.rb +37 -29
- data/lib/gir_ffi/builders/callback_argument_builder.rb +57 -27
- data/lib/gir_ffi/builders/closure_convertor.rb +12 -8
- data/lib/gir_ffi/builders/closure_to_pointer_convertor.rb +12 -8
- data/lib/gir_ffi/builders/constructor_result_convertor.rb +11 -7
- data/lib/gir_ffi/builders/field_builder.rb +1 -1
- data/lib/gir_ffi/builders/function_builder.rb +1 -1
- data/lib/gir_ffi/builders/mapping_method_builder.rb +1 -1
- data/lib/gir_ffi/builders/marshalling_method_builder.rb +2 -2
- data/lib/gir_ffi/builders/method_template.rb +1 -1
- data/lib/gir_ffi/builders/null_convertor.rb +11 -7
- data/lib/gir_ffi/builders/property_builder.rb +1 -1
- data/lib/gir_ffi/builders/ruby_to_c_convertor.rb +17 -13
- data/lib/gir_ffi/error_argument_info.rb +1 -1
- data/lib/gir_ffi/ffi_ext/pointer.rb +1 -1
- data/lib/gir_ffi/info_ext/i_unresolved_info.rb +12 -0
- data/lib/gir_ffi/info_ext/safe_constant_name.rb +2 -2
- data/lib/gir_ffi/info_ext/safe_function_name.rb +1 -1
- data/lib/gir_ffi/info_ext.rb +1 -0
- data/lib/gir_ffi/module_base.rb +1 -1
- data/lib/gir_ffi/receiver_argument_info.rb +15 -12
- data/lib/gir_ffi/user_data_argument_info.rb +17 -15
- data/lib/gir_ffi/user_data_type_info.rb +14 -12
- data/lib/gir_ffi/version.rb +1 -1
- data/lib/gir_ffi-base/gobject/lib.rb +1 -1
- data/test/base_test_helper.rb +15 -15
- data/test/ffi-glib/array_test.rb +38 -38
- data/test/ffi-glib/byte_array_test.rb +6 -7
- data/test/ffi-glib/bytes_test.rb +9 -9
- data/test/ffi-glib/hash_table_test.rb +26 -23
- data/test/ffi-glib/iconv_test.rb +5 -5
- data/test/ffi-glib/list_test.rb +16 -16
- data/test/ffi-glib/main_loop_test.rb +6 -6
- data/test/ffi-glib/ptr_array_test.rb +45 -45
- data/test/ffi-glib/ruby_closure_test.rb +6 -6
- data/test/ffi-glib/s_list_test.rb +15 -15
- data/test/ffi-glib/strv_test.rb +21 -21
- data/test/ffi-glib/variant_test.rb +4 -4
- data/test/ffi-gobject/gobject_test.rb +35 -35
- data/test/ffi-gobject/object_class_test.rb +1 -1
- data/test/ffi-gobject/object_test.rb +29 -6
- data/test/ffi-gobject/value_test.rb +66 -52
- data/test/ffi-gobject_introspection/i_base_info_test.rb +10 -11
- data/test/ffi-gobject_introspection/i_constant_info_test.rb +6 -6
- data/test/ffi-gobject_introspection/i_enum_info_test.rb +4 -5
- data/test/ffi-gobject_introspection/i_function_info_test.rb +0 -2
- data/test/ffi-gobject_introspection/i_object_info_test.rb +5 -5
- data/test/ffi-gobject_introspection/i_registered_type_info_test.rb +9 -8
- data/test/ffi-gobject_introspection/i_repository_test.rb +16 -16
- data/test/ffi-gobject_introspection/i_type_info_test.rb +16 -2
- data/test/ffi-gobject_introspection/lib_test.rb +2 -2
- data/test/ffi-gobject_test.rb +50 -40
- data/test/gir_ffi/arg_helper_test.rb +5 -5
- data/test/gir_ffi/builder_test.rb +41 -41
- data/test/gir_ffi/builders/argument_builder_test.rb +240 -207
- data/test/gir_ffi/builders/base_argument_builder_test.rb +0 -1
- data/test/gir_ffi/builders/callback_argument_builder_test.rb +81 -15
- data/test/gir_ffi/builders/callback_builder_test.rb +39 -14
- data/test/gir_ffi/builders/callback_return_value_builder_test.rb +41 -33
- data/test/gir_ffi/builders/enum_builder_test.rb +3 -3
- data/test/gir_ffi/builders/field_builder_test.rb +17 -17
- data/test/gir_ffi/builders/function_builder_test.rb +16 -16
- data/test/gir_ffi/builders/interface_builder_test.rb +9 -7
- data/test/gir_ffi/builders/module_builder_test.rb +5 -6
- data/test/gir_ffi/builders/object_builder_test.rb +24 -19
- data/test/gir_ffi/builders/property_builder_test.rb +25 -23
- data/test/gir_ffi/builders/registered_type_builder_test.rb +11 -11
- data/test/gir_ffi/builders/return_value_builder_test.rb +237 -197
- data/test/gir_ffi/builders/signal_closure_builder_test.rb +29 -22
- data/test/gir_ffi/builders/struct_builder_test.rb +10 -10
- data/test/gir_ffi/builders/unintrospectable_builder_test.rb +8 -8
- data/test/gir_ffi/builders/union_builder_test.rb +5 -6
- data/test/gir_ffi/builders/user_defined_builder_test.rb +42 -33
- data/test/gir_ffi/builders/vfunc_builder_test.rb +37 -30
- data/test/gir_ffi/callback_base_test.rb +4 -5
- data/test/gir_ffi/class_base_test.rb +35 -28
- data/test/gir_ffi/error_type_info_test.rb +14 -14
- data/test/gir_ffi/ffi_ext/pointer_test.rb +4 -4
- data/test/gir_ffi/g_type_test.rb +6 -6
- data/test/gir_ffi/in_out_pointer_test.rb +27 -27
- data/test/gir_ffi/in_pointer_test.rb +54 -50
- data/test/gir_ffi/info_ext/i_callable_info_test.rb +8 -7
- data/test/gir_ffi/info_ext/i_callback_info_test.rb +7 -7
- data/test/gir_ffi/info_ext/i_field_info_test.rb +10 -8
- data/test/gir_ffi/info_ext/i_function_info_test.rb +17 -15
- data/test/gir_ffi/info_ext/i_signal_info_test.rb +10 -8
- data/test/gir_ffi/info_ext/i_type_info_test.rb +158 -155
- data/test/gir_ffi/info_ext/i_unresolved_info_test.rb +17 -0
- data/test/gir_ffi/info_ext/safe_constant_name_test.rb +12 -10
- data/test/gir_ffi/info_ext/safe_function_name_test.rb +12 -10
- data/test/gir_ffi/interface_base_test.rb +6 -6
- data/test/gir_ffi/method_stubber_test.rb +16 -13
- data/test/gir_ffi/object_base_test.rb +6 -6
- data/test/gir_ffi/sized_array_test.rb +23 -23
- data/test/gir_ffi/type_map_test.rb +3 -3
- data/test/gir_ffi/unintrospectable_type_info_test.rb +18 -18
- data/test/gir_ffi/user_defined_property_info_test.rb +4 -4
- data/test/gir_ffi/user_defined_type_info_test.rb +16 -16
- data/test/gir_ffi/variable_name_generator_test.rb +6 -6
- data/test/gir_ffi/version_test.rb +1 -1
- data/test/gir_ffi/zero_terminated_test.rb +16 -17
- data/test/gir_ffi-base/glib/boolean_test.rb +13 -13
- data/test/gir_ffi-base/glib/strv_test.rb +11 -11
- data/test/gir_ffi_test.rb +18 -18
- data/test/gir_ffi_test_helper.rb +13 -18
- data/test/integration/derived_classes_test.rb +8 -8
- data/test/integration/generated_gimarshallingtests_test.rb +794 -792
- data/test/integration/generated_gio_test.rb +25 -26
- data/test/integration/generated_glib_test.rb +8 -2
- data/test/integration/generated_gobject_test.rb +16 -9
- data/test/integration/generated_pango_ft2_test.rb +1 -2
- data/test/integration/generated_pango_test.rb +2 -2
- data/test/integration/generated_regress_test.rb +785 -705
- data/test/integration/generated_secret_test.rb +5 -5
- data/test/integration/method_lookup_test.rb +5 -5
- data/test/introspection_test_helper.rb +3 -1
- data/test/minitest/stats_plugin.rb +3 -3
- metadata +6 -3
| @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            require 'gir_ffi_test_helper'
         | 
| 2 2 |  | 
| 3 3 | 
             
            describe GirFFI::ClassBase do
         | 
| 4 | 
            -
              describe  | 
| 4 | 
            +
              describe 'a simple descendant' do
         | 
| 5 5 | 
             
                let(:klass) {
         | 
| 6 6 | 
             
                  Class.new(GirFFI::ClassBase) do
         | 
| 7 7 | 
             
                    self::Struct = Class.new(FFI::Struct) do
         | 
| @@ -11,20 +11,20 @@ describe GirFFI::ClassBase do | |
| 11 11 | 
             
                }
         | 
| 12 12 | 
             
                let(:object) { klass.wrap FFI::MemoryPointer.new(:int32) }
         | 
| 13 13 |  | 
| 14 | 
            -
                it  | 
| 14 | 
            +
                it 'has #from as a pass-through method' do
         | 
| 15 15 | 
             
                  result = klass.from :foo
         | 
| 16 16 | 
             
                  result.must_equal :foo
         | 
| 17 17 | 
             
                end
         | 
| 18 18 |  | 
| 19 | 
            -
                describe  | 
| 20 | 
            -
                  it  | 
| 19 | 
            +
                describe '#==' do
         | 
| 20 | 
            +
                  it 'returns true when comparing to an object of the same class and pointer' do
         | 
| 21 21 | 
             
                    other = klass.wrap object.to_ptr
         | 
| 22 22 |  | 
| 23 23 | 
             
                    object.must_be :==, other
         | 
| 24 24 | 
             
                    other.must_be :==, object
         | 
| 25 25 | 
             
                  end
         | 
| 26 26 |  | 
| 27 | 
            -
                  it  | 
| 27 | 
            +
                  it 'returns true when comparing to an object of the same class and a pointer with the same address' do
         | 
| 28 28 | 
             
                    ptr = FFI::Pointer.new object.to_ptr
         | 
| 29 29 | 
             
                    other = klass.wrap ptr
         | 
| 30 30 |  | 
| @@ -32,7 +32,7 @@ describe GirFFI::ClassBase do | |
| 32 32 | 
             
                    other.must_be :==, object
         | 
| 33 33 | 
             
                  end
         | 
| 34 34 |  | 
| 35 | 
            -
                  it  | 
| 35 | 
            +
                  it 'returns false when comparing to an object of a sub/superclass and the same pointer' do
         | 
| 36 36 | 
             
                    subclass = Class.new(klass)
         | 
| 37 37 | 
             
                    other = subclass.wrap object.to_ptr
         | 
| 38 38 |  | 
| @@ -40,7 +40,7 @@ describe GirFFI::ClassBase do | |
| 40 40 | 
             
                    other.wont_be :==, object
         | 
| 41 41 | 
             
                  end
         | 
| 42 42 |  | 
| 43 | 
            -
                  it  | 
| 43 | 
            +
                  it 'returns false when comparing to an object of the same class and different pointer' do
         | 
| 44 44 | 
             
                    other = klass.wrap FFI::MemoryPointer.new(:int32)
         | 
| 45 45 |  | 
| 46 46 | 
             
                    object.wont_be :==, other
         | 
| @@ -54,14 +54,14 @@ describe GirFFI::ClassBase do | |
| 54 54 | 
             
                    other.wont_be :==, object
         | 
| 55 55 | 
             
                  end
         | 
| 56 56 |  | 
| 57 | 
            -
                  it  | 
| 57 | 
            +
                  it 'returns false when comparing to an object of a different class and same pointer' do
         | 
| 58 58 | 
             
                    stub(other = Object.new).to_ptr { object.to_ptr }
         | 
| 59 59 |  | 
| 60 60 | 
             
                    object.wont_be :==, other
         | 
| 61 61 | 
             
                    other.wont_be :==, object
         | 
| 62 62 | 
             
                  end
         | 
| 63 63 |  | 
| 64 | 
            -
                  it  | 
| 64 | 
            +
                  it 'returns false when comparing to an object of a different class and different pointer' do
         | 
| 65 65 | 
             
                    stub(other = Object.new).to_ptr { FFI::MemoryPointer.new(:int32) }
         | 
| 66 66 |  | 
| 67 67 | 
             
                    object.wont_be :==, other
         | 
| @@ -70,13 +70,13 @@ describe GirFFI::ClassBase do | |
| 70 70 | 
             
                end
         | 
| 71 71 | 
             
              end
         | 
| 72 72 |  | 
| 73 | 
            -
              describe  | 
| 74 | 
            -
                it  | 
| 75 | 
            -
                  mock(builder = Object.new).setup_method( | 
| 73 | 
            +
              describe '.setup_and_call' do
         | 
| 74 | 
            +
                it 'looks up class methods in all builders' do
         | 
| 75 | 
            +
                  mock(builder = Object.new).setup_method('foo') { 'foo' }
         | 
| 76 76 | 
             
                  klass = Class.new GirFFI::ClassBase
         | 
| 77 77 | 
             
                  klass.const_set :GIR_FFI_BUILDER, builder
         | 
| 78 78 |  | 
| 79 | 
            -
                  mock(sub_builder = Object.new).setup_method( | 
| 79 | 
            +
                  mock(sub_builder = Object.new).setup_method('foo') { nil }
         | 
| 80 80 | 
             
                  sub_klass = Class.new klass do
         | 
| 81 81 | 
             
                    def self.foo; end
         | 
| 82 82 | 
             
                  end
         | 
| @@ -85,32 +85,37 @@ describe GirFFI::ClassBase do | |
| 85 85 | 
             
                  sub_klass.setup_and_call :foo, []
         | 
| 86 86 | 
             
                end
         | 
| 87 87 |  | 
| 88 | 
            -
                it  | 
| 89 | 
            -
                  mock(builder = Object.new).setup_method( | 
| 88 | 
            +
                it 'calls the method given by the result of .setup_method' do
         | 
| 89 | 
            +
                  mock(builder = Object.new).setup_method('foo') { 'bar' }
         | 
| 90 90 | 
             
                  klass = Class.new GirFFI::ClassBase do
         | 
| 91 91 | 
             
                    def self.bar
         | 
| 92 | 
            -
                       | 
| 92 | 
            +
                      'correct-result'
         | 
| 93 | 
            +
                    end
         | 
| 94 | 
            +
                    def self.new
         | 
| 95 | 
            +
                      _real_new
         | 
| 93 96 | 
             
                    end
         | 
| 94 | 
            -
                    def self.new; self._real_new; end
         | 
| 95 97 | 
             
                  end
         | 
| 96 98 | 
             
                  klass.const_set :GIR_FFI_BUILDER, builder
         | 
| 97 99 |  | 
| 98 100 | 
             
                  result = klass.setup_and_call :foo, []
         | 
| 99 | 
            -
                  result.must_equal  | 
| 101 | 
            +
                  result.must_equal 'correct-result'
         | 
| 100 102 | 
             
                end
         | 
| 101 103 | 
             
              end
         | 
| 102 104 |  | 
| 103 | 
            -
              describe  | 
| 104 | 
            -
                it  | 
| 105 | 
            -
                  mock(builder = Object.new).setup_instance_method( | 
| 105 | 
            +
              describe '#setup_and_call' do
         | 
| 106 | 
            +
                it 'looks up instance methods in all builders' do
         | 
| 107 | 
            +
                  mock(builder = Object.new).setup_instance_method('foo') { 'foo' }
         | 
| 106 108 | 
             
                  klass = Class.new GirFFI::ClassBase
         | 
| 107 109 | 
             
                  klass.const_set :GIR_FFI_BUILDER, builder
         | 
| 108 110 |  | 
| 109 | 
            -
                  mock(sub_builder = Object.new).setup_instance_method( | 
| 111 | 
            +
                  mock(sub_builder = Object.new).setup_instance_method('foo') { nil }
         | 
| 110 112 | 
             
                  sub_klass = Class.new klass do
         | 
| 111 113 | 
             
                    def foo; end
         | 
| 114 | 
            +
             | 
| 112 115 | 
             
                    def initialize; end
         | 
| 113 | 
            -
                    def self.new | 
| 116 | 
            +
                    def self.new
         | 
| 117 | 
            +
                      _real_new
         | 
| 118 | 
            +
                    end
         | 
| 114 119 | 
             
                  end
         | 
| 115 120 | 
             
                  sub_klass.const_set :GIR_FFI_BUILDER, sub_builder
         | 
| 116 121 |  | 
| @@ -119,20 +124,22 @@ describe GirFFI::ClassBase do | |
| 119 124 | 
             
                  obj.setup_and_call :foo, []
         | 
| 120 125 | 
             
                end
         | 
| 121 126 |  | 
| 122 | 
            -
                it  | 
| 123 | 
            -
                  mock(builder = Object.new).setup_instance_method( | 
| 127 | 
            +
                it 'calls the method given by the result of .setup_instance_method' do
         | 
| 128 | 
            +
                  mock(builder = Object.new).setup_instance_method('foo') { 'bar' }
         | 
| 124 129 | 
             
                  klass = Class.new GirFFI::ClassBase do
         | 
| 125 130 | 
             
                    def bar
         | 
| 126 | 
            -
                       | 
| 131 | 
            +
                      'correct-result'
         | 
| 132 | 
            +
                    end
         | 
| 133 | 
            +
                    def self.new
         | 
| 134 | 
            +
                      _real_new
         | 
| 127 135 | 
             
                    end
         | 
| 128 | 
            -
                    def self.new; self._real_new; end
         | 
| 129 136 | 
             
                  end
         | 
| 130 137 | 
             
                  klass.const_set :GIR_FFI_BUILDER, builder
         | 
| 131 138 |  | 
| 132 139 | 
             
                  obj = klass.new
         | 
| 133 140 |  | 
| 134 141 | 
             
                  result = obj.setup_and_call :foo, []
         | 
| 135 | 
            -
                  result.must_equal  | 
| 142 | 
            +
                  result.must_equal 'correct-result'
         | 
| 136 143 | 
             
                end
         | 
| 137 144 | 
             
              end
         | 
| 138 145 | 
             
            end
         | 
| @@ -4,44 +4,44 @@ require 'gir_ffi/error_type_info' | |
| 4 4 | 
             
            describe GirFFI::ErrorTypeInfo do
         | 
| 5 5 | 
             
              let(:instance) { GirFFI::ErrorTypeInfo.new }
         | 
| 6 6 |  | 
| 7 | 
            -
              describe  | 
| 8 | 
            -
                it  | 
| 7 | 
            +
              describe '#array_length' do
         | 
| 8 | 
            +
                it 'returns the correct value' do
         | 
| 9 9 | 
             
                  instance.array_length.must_equal(-1)
         | 
| 10 10 | 
             
                end
         | 
| 11 11 | 
             
              end
         | 
| 12 12 |  | 
| 13 | 
            -
              describe  | 
| 14 | 
            -
                it  | 
| 13 | 
            +
              describe '#tag_or_class' do
         | 
| 14 | 
            +
                it 'returns the correct value' do
         | 
| 15 15 | 
             
                  instance.tag_or_class.must_equal [:pointer, :error]
         | 
| 16 16 | 
             
                end
         | 
| 17 17 | 
             
              end
         | 
| 18 18 |  | 
| 19 | 
            -
              describe  | 
| 20 | 
            -
                it  | 
| 19 | 
            +
              describe '#pointer?' do
         | 
| 20 | 
            +
                it 'returns the correct value' do
         | 
| 21 21 | 
             
                  instance.pointer?.must_equal true
         | 
| 22 22 | 
             
                end
         | 
| 23 23 | 
             
              end
         | 
| 24 24 |  | 
| 25 | 
            -
              describe  | 
| 26 | 
            -
                it  | 
| 25 | 
            +
              describe '#flattened_tag' do
         | 
| 26 | 
            +
                it 'returns the correct value' do
         | 
| 27 27 | 
             
                  instance.flattened_tag.must_equal :error
         | 
| 28 28 | 
             
                end
         | 
| 29 29 | 
             
              end
         | 
| 30 30 |  | 
| 31 | 
            -
              describe  | 
| 32 | 
            -
                it  | 
| 31 | 
            +
              describe '#extra_conversion_arguments' do
         | 
| 32 | 
            +
                it 'returns the correct value' do
         | 
| 33 33 | 
             
                  instance.extra_conversion_arguments.must_equal []
         | 
| 34 34 | 
             
                end
         | 
| 35 35 | 
             
              end
         | 
| 36 36 |  | 
| 37 | 
            -
              describe  | 
| 38 | 
            -
                it  | 
| 37 | 
            +
              describe '#argument_class_name' do
         | 
| 38 | 
            +
                it 'returns the correct value' do
         | 
| 39 39 | 
             
                  instance.argument_class_name.must_equal 'GLib::Error'
         | 
| 40 40 | 
             
                end
         | 
| 41 41 | 
             
              end
         | 
| 42 42 |  | 
| 43 | 
            -
              describe  | 
| 44 | 
            -
                it  | 
| 43 | 
            +
              describe '#needs_ruby_to_c_conversion_for_callbacks?' do
         | 
| 44 | 
            +
                it 'returns the correct value' do
         | 
| 45 45 | 
             
                  instance.needs_ruby_to_c_conversion_for_callbacks?.must_equal true
         | 
| 46 46 | 
             
                end
         | 
| 47 47 | 
             
              end
         | 
| @@ -2,17 +2,17 @@ require 'gir_ffi_test_helper' | |
| 2 2 |  | 
| 3 3 | 
             
            describe GirFFI::FFIExt::Pointer do
         | 
| 4 4 | 
             
              let(:klass) { Class.new { include GirFFI::FFIExt::Pointer } }
         | 
| 5 | 
            -
              describe  | 
| 6 | 
            -
                it  | 
| 5 | 
            +
              describe '#to_object' do
         | 
| 6 | 
            +
                it 'finds the wrapping class by gtype and wraps the pointer in it' do
         | 
| 7 7 | 
             
                  ptr = klass.new
         | 
| 8 8 | 
             
                  mock(ptr).null? { false }
         | 
| 9 9 | 
             
                  object_class = Class.new
         | 
| 10 10 |  | 
| 11 11 | 
             
                  mock(GObject).type_from_instance_pointer(ptr) { 0xdeadbeef }
         | 
| 12 12 | 
             
                  mock(GirFFI::Builder).build_by_gtype(0xdeadbeef) { object_class }
         | 
| 13 | 
            -
                  mock(object_class).direct_wrap(ptr) {  | 
| 13 | 
            +
                  mock(object_class).direct_wrap(ptr) { 'good-result' }
         | 
| 14 14 |  | 
| 15 | 
            -
                  ptr.to_object.must_equal  | 
| 15 | 
            +
                  ptr.to_object.must_equal 'good-result'
         | 
| 16 16 | 
             
                end
         | 
| 17 17 | 
             
              end
         | 
| 18 18 | 
             
            end
         | 
    
        data/test/gir_ffi/g_type_test.rb
    CHANGED
    
    | @@ -6,22 +6,22 @@ describe GirFFI::GType do | |
| 6 6 | 
             
              let(:gobject_gtype) { GObject::Object.get_gtype }
         | 
| 7 7 | 
             
              let(:gobject_type_query) { GObject.type_query gobject_gtype }
         | 
| 8 8 |  | 
| 9 | 
            -
              describe  | 
| 10 | 
            -
                it  | 
| 9 | 
            +
              describe '#to_i' do
         | 
| 10 | 
            +
                it 'returns the integer gtype' do
         | 
| 11 11 | 
             
                  gt = GirFFI::GType.new(gobject_gtype)
         | 
| 12 12 | 
             
                  gt.to_i.must_equal gobject_gtype
         | 
| 13 13 | 
             
                end
         | 
| 14 14 | 
             
              end
         | 
| 15 15 |  | 
| 16 | 
            -
              describe  | 
| 17 | 
            -
                it  | 
| 16 | 
            +
              describe '#class_size' do
         | 
| 17 | 
            +
                it 'returns the class size for object types' do
         | 
| 18 18 | 
             
                  gt = GirFFI::GType.new(gobject_gtype)
         | 
| 19 19 | 
             
                  gt.class_size.must_equal gobject_type_query.class_size
         | 
| 20 20 | 
             
                end
         | 
| 21 21 | 
             
              end
         | 
| 22 22 |  | 
| 23 | 
            -
              describe  | 
| 24 | 
            -
                it  | 
| 23 | 
            +
              describe '#instance_size' do
         | 
| 24 | 
            +
                it 'returns the instance size for object types' do
         | 
| 25 25 | 
             
                  gt = GirFFI::GType.new(gobject_gtype)
         | 
| 26 26 | 
             
                  gt.instance_size.must_equal gobject_type_query.instance_size
         | 
| 27 27 | 
             
                end
         | 
| @@ -1,8 +1,8 @@ | |
| 1 1 | 
             
            require 'gir_ffi_test_helper'
         | 
| 2 2 |  | 
| 3 3 | 
             
            describe GirFFI::InOutPointer do
         | 
| 4 | 
            -
              describe  | 
| 5 | 
            -
                it  | 
| 4 | 
            +
              describe '.new' do
         | 
| 5 | 
            +
                it 'wraps an existing pointer and a type' do
         | 
| 6 6 | 
             
                  ptr = GirFFI::AllocationHelper.safe_malloc(FFI.type_size(:int32))
         | 
| 7 7 | 
             
                  ptr.put_int32 0, 42
         | 
| 8 8 | 
             
                  instance = GirFFI::InOutPointer.new :gint32, ptr
         | 
| @@ -10,89 +10,89 @@ describe GirFFI::InOutPointer do | |
| 10 10 | 
             
                end
         | 
| 11 11 | 
             
              end
         | 
| 12 12 |  | 
| 13 | 
            -
              describe  | 
| 13 | 
            +
              describe 'an instance created with .from' do
         | 
| 14 14 | 
             
                before do
         | 
| 15 15 | 
             
                  @result = GirFFI::InOutPointer.from :gint32, 23
         | 
| 16 16 | 
             
                end
         | 
| 17 17 |  | 
| 18 | 
            -
                it  | 
| 18 | 
            +
                it 'holds a pointer to the given value' do
         | 
| 19 19 | 
             
                  assert_equal 23, @result.get_int32(0)
         | 
| 20 20 | 
             
                end
         | 
| 21 21 |  | 
| 22 | 
            -
                it  | 
| 22 | 
            +
                it 'is an instance of GirFFI::InOutPointer' do
         | 
| 23 23 | 
             
                  assert_instance_of GirFFI::InOutPointer, @result
         | 
| 24 24 | 
             
                end
         | 
| 25 25 | 
             
              end
         | 
| 26 26 |  | 
| 27 | 
            -
              describe  | 
| 28 | 
            -
                it  | 
| 27 | 
            +
              describe '.from' do
         | 
| 28 | 
            +
                it 'handles :gboolean false' do
         | 
| 29 29 | 
             
                  ptr = GirFFI::InOutPointer.from :gboolean, false
         | 
| 30 30 | 
             
                  ptr.read_int.must_equal 0
         | 
| 31 31 | 
             
                end
         | 
| 32 32 |  | 
| 33 | 
            -
                it  | 
| 33 | 
            +
                it 'handles :gboolean true' do
         | 
| 34 34 | 
             
                  ptr = GirFFI::InOutPointer.from :gboolean, true
         | 
| 35 35 | 
             
                  ptr.read_int.must_equal(1)
         | 
| 36 36 | 
             
                end
         | 
| 37 37 |  | 
| 38 | 
            -
                it  | 
| 39 | 
            -
                  str_ptr = GirFFI::InPointer.from :utf8,  | 
| 38 | 
            +
                it 'handles :utf8 pointers' do
         | 
| 39 | 
            +
                  str_ptr = GirFFI::InPointer.from :utf8, 'Hello'
         | 
| 40 40 | 
             
                  GirFFI::InOutPointer.from :utf8, str_ptr
         | 
| 41 41 | 
             
                end
         | 
| 42 42 | 
             
              end
         | 
| 43 43 |  | 
| 44 | 
            -
              describe  | 
| 44 | 
            +
              describe 'in instance created with .for' do
         | 
| 45 45 | 
             
                before do
         | 
| 46 46 | 
             
                  @result = GirFFI::InOutPointer.for :gint32
         | 
| 47 47 | 
             
                end
         | 
| 48 48 |  | 
| 49 | 
            -
                it  | 
| 49 | 
            +
                it 'holds a pointer to a null value' do
         | 
| 50 50 | 
             
                  assert_equal 0, @result.get_int32(0)
         | 
| 51 51 | 
             
                end
         | 
| 52 52 |  | 
| 53 | 
            -
                it  | 
| 53 | 
            +
                it 'is an instance of GirFFI::InOutPointer' do
         | 
| 54 54 | 
             
                  assert_instance_of GirFFI::InOutPointer, @result
         | 
| 55 55 | 
             
                end
         | 
| 56 56 | 
             
              end
         | 
| 57 57 |  | 
| 58 | 
            -
              describe  | 
| 59 | 
            -
                it  | 
| 58 | 
            +
              describe '.for' do
         | 
| 59 | 
            +
                it 'handles :gboolean' do
         | 
| 60 60 | 
             
                  GirFFI::InOutPointer.for :gboolean
         | 
| 61 61 | 
             
                end
         | 
| 62 62 |  | 
| 63 | 
            -
                it  | 
| 63 | 
            +
                it 'handles :utf8' do
         | 
| 64 64 | 
             
                  GirFFI::InOutPointer.for :utf8
         | 
| 65 65 | 
             
                end
         | 
| 66 66 | 
             
              end
         | 
| 67 67 |  | 
| 68 | 
            -
              describe  | 
| 69 | 
            -
                it  | 
| 68 | 
            +
              describe '#to_value' do
         | 
| 69 | 
            +
                it 'returns the held value' do
         | 
| 70 70 | 
             
                  ptr = GirFFI::InOutPointer.from :gint32, 123
         | 
| 71 71 | 
             
                  assert_equal 123, ptr.to_value
         | 
| 72 72 | 
             
                end
         | 
| 73 73 |  | 
| 74 | 
            -
                describe  | 
| 75 | 
            -
                  it  | 
| 74 | 
            +
                describe 'for :gboolean values' do
         | 
| 75 | 
            +
                  it 'works when the value is false' do
         | 
| 76 76 | 
             
                    ptr = GirFFI::InOutPointer.from :gboolean, false
         | 
| 77 77 | 
             
                    ptr.to_value.must_equal false
         | 
| 78 78 | 
             
                  end
         | 
| 79 79 |  | 
| 80 | 
            -
                  it  | 
| 80 | 
            +
                  it 'works when the value is true' do
         | 
| 81 81 | 
             
                    ptr = GirFFI::InOutPointer.from :gboolean, true
         | 
| 82 82 | 
             
                    ptr.to_value.must_equal true
         | 
| 83 83 | 
             
                  end
         | 
| 84 84 | 
             
                end
         | 
| 85 85 |  | 
| 86 | 
            -
                describe  | 
| 87 | 
            -
                  it  | 
| 88 | 
            -
                    str_ptr = GirFFI::InPointer.from :utf8,  | 
| 86 | 
            +
                describe 'for :utf8 values' do
         | 
| 87 | 
            +
                  it 'returns a pointer to the held value' do
         | 
| 88 | 
            +
                    str_ptr = GirFFI::InPointer.from :utf8, 'Some value'
         | 
| 89 89 | 
             
                    ptr = GirFFI::InOutPointer.from :utf8, str_ptr
         | 
| 90 | 
            -
                    assert_equal  | 
| 90 | 
            +
                    assert_equal 'Some value', ptr.to_value.read_string
         | 
| 91 91 | 
             
                  end
         | 
| 92 92 | 
             
                end
         | 
| 93 93 |  | 
| 94 | 
            -
                describe  | 
| 95 | 
            -
                  it  | 
| 94 | 
            +
                describe 'for struct values' do
         | 
| 95 | 
            +
                  it 'returns a pointer to the held value' do
         | 
| 96 96 | 
             
                    val = GObject::EnumValue.new
         | 
| 97 97 | 
             
                    val.value = 3
         | 
| 98 98 | 
             
                    ptr = GirFFI::InOutPointer.from GObject::EnumValue, val
         | 
| @@ -3,17 +3,17 @@ require 'gir_ffi_test_helper' | |
| 3 3 | 
             
            require 'gir_ffi/in_pointer'
         | 
| 4 4 |  | 
| 5 5 | 
             
            describe GirFFI::InPointer do
         | 
| 6 | 
            -
              describe  | 
| 7 | 
            -
                it  | 
| 6 | 
            +
              describe '.from_array' do
         | 
| 7 | 
            +
                it 'returns nil when passed nil' do
         | 
| 8 8 | 
             
                  result = GirFFI::InPointer.from_array :gint32, nil
         | 
| 9 9 | 
             
                  assert_nil result
         | 
| 10 10 | 
             
                end
         | 
| 11 11 |  | 
| 12 | 
            -
                it  | 
| 12 | 
            +
                it 'handles type tag :GType' do
         | 
| 13 13 | 
             
                  GirFFI::InPointer.from_array :GType, [2]
         | 
| 14 14 | 
             
                end
         | 
| 15 15 |  | 
| 16 | 
            -
                it  | 
| 16 | 
            +
                it 'handles enum types' do
         | 
| 17 17 | 
             
                  e = Module.new do
         | 
| 18 18 | 
             
                    extend GirFFI::EnumBase
         | 
| 19 19 | 
             
                    self::Enum = FFI::Enum.new [:foo, :bar, :baz]
         | 
| @@ -22,7 +22,7 @@ describe GirFFI::InPointer do | |
| 22 22 | 
             
                  ptr.read_array_of_int32(3).must_equal [1, 0, 2]
         | 
| 23 23 | 
             
                end
         | 
| 24 24 |  | 
| 25 | 
            -
                it  | 
| 25 | 
            +
                it 'handles struct types' do
         | 
| 26 26 | 
             
                  e = Class.new(GirFFI::StructBase) do
         | 
| 27 27 | 
             
                    self::Struct = Class.new(FFI::Struct) do
         | 
| 28 28 | 
             
                      layout :foo, :int32, :bar, :int32
         | 
| @@ -38,7 +38,7 @@ describe GirFFI::InPointer do | |
| 38 38 | 
             
                  new_struct[:bar].must_equal 24
         | 
| 39 39 | 
             
                end
         | 
| 40 40 |  | 
| 41 | 
            -
                it  | 
| 41 | 
            +
                it 'handles typed pointers' do
         | 
| 42 42 | 
             
                  p1 = GirFFI::InPointer.from :gint32, 42
         | 
| 43 43 | 
             
                  p2 = GirFFI::InPointer.from :gint32, 24
         | 
| 44 44 |  | 
| @@ -47,94 +47,94 @@ describe GirFFI::InPointer do | |
| 47 47 | 
             
                  ptr.read_array_of_pointer(2).must_equal [p1, p2]
         | 
| 48 48 | 
             
                end
         | 
| 49 49 |  | 
| 50 | 
            -
                it  | 
| 50 | 
            +
                it 'handles pointer casting' do
         | 
| 51 51 | 
             
                  ptr = GirFFI::InPointer.from_array [:pointer, :gint32], [42, 24]
         | 
| 52 52 |  | 
| 53 53 | 
             
                  ptr.read_array_of_pointer(2).map(&:address).must_equal [42, 24]
         | 
| 54 54 | 
             
                end
         | 
| 55 55 | 
             
              end
         | 
| 56 56 |  | 
| 57 | 
            -
              describe  | 
| 57 | 
            +
              describe 'an instance created with .from_array :gint32' do
         | 
| 58 58 | 
             
                before do
         | 
| 59 59 | 
             
                  @result = GirFFI::InPointer.from_array :gint32, [24, 13]
         | 
| 60 60 | 
             
                end
         | 
| 61 61 |  | 
| 62 | 
            -
                it  | 
| 62 | 
            +
                it 'holds a pointer to the correct input values' do
         | 
| 63 63 | 
             
                  assert_equal 24, @result.get_int(0)
         | 
| 64 64 | 
             
                  assert_equal 13, @result.get_int(4)
         | 
| 65 65 | 
             
                end
         | 
| 66 66 |  | 
| 67 | 
            -
                it  | 
| 67 | 
            +
                it 'is an instance of GirFFI::InPointer' do
         | 
| 68 68 | 
             
                  assert_instance_of GirFFI::InPointer, @result
         | 
| 69 69 | 
             
                end
         | 
| 70 70 |  | 
| 71 | 
            -
                it  | 
| 71 | 
            +
                it 'is zero-terminated' do
         | 
| 72 72 | 
             
                  assert_equal 0, @result.get_int(8)
         | 
| 73 73 | 
             
                end
         | 
| 74 74 | 
             
              end
         | 
| 75 75 |  | 
| 76 | 
            -
              describe  | 
| 76 | 
            +
              describe 'an instance created with .from_array :utf8' do
         | 
| 77 77 | 
             
                before do
         | 
| 78 | 
            -
                  @result = GirFFI::InPointer.from_array :utf8,  | 
| 78 | 
            +
                  @result = GirFFI::InPointer.from_array :utf8, %w(foo bar baz)
         | 
| 79 79 | 
             
                end
         | 
| 80 80 |  | 
| 81 | 
            -
                it  | 
| 81 | 
            +
                it 'returns an array of pointers to strings' do
         | 
| 82 82 | 
             
                  ary = @result.read_array_of_pointer(3)
         | 
| 83 | 
            -
                  assert_equal  | 
| 83 | 
            +
                  assert_equal %w(foo bar baz), ary.map(&:read_string)
         | 
| 84 84 | 
             
                end
         | 
| 85 85 | 
             
              end
         | 
| 86 86 |  | 
| 87 | 
            -
              describe  | 
| 87 | 
            +
              describe 'an instance created with .from_array :filename' do
         | 
| 88 88 | 
             
                before do
         | 
| 89 | 
            -
                  @result = GirFFI::InPointer.from_array :filename,  | 
| 89 | 
            +
                  @result = GirFFI::InPointer.from_array :filename, %w(foo bar baz)
         | 
| 90 90 | 
             
                end
         | 
| 91 91 |  | 
| 92 | 
            -
                it  | 
| 92 | 
            +
                it 'returns an array of pointers to strings' do
         | 
| 93 93 | 
             
                  ary = @result.read_array_of_pointer(3)
         | 
| 94 | 
            -
                  assert_equal  | 
| 94 | 
            +
                  assert_equal %w(foo bar baz), ary.map(&:read_string)
         | 
| 95 95 | 
             
                end
         | 
| 96 96 | 
             
              end
         | 
| 97 97 |  | 
| 98 | 
            -
              describe  | 
| 98 | 
            +
              describe 'an instance created with .from :utf8' do
         | 
| 99 99 | 
             
                before do
         | 
| 100 | 
            -
                  @result = GirFFI::InPointer.from :utf8,  | 
| 100 | 
            +
                  @result = GirFFI::InPointer.from :utf8, 'foo'
         | 
| 101 101 | 
             
                end
         | 
| 102 102 |  | 
| 103 | 
            -
                it  | 
| 104 | 
            -
                  assert_equal  | 
| 103 | 
            +
                it 'returns a pointer to the given string' do
         | 
| 104 | 
            +
                  assert_equal 'foo', @result.read_string
         | 
| 105 105 | 
             
                end
         | 
| 106 106 |  | 
| 107 | 
            -
                it  | 
| 107 | 
            +
                it 'is an instance of GirFFI::InPointer' do
         | 
| 108 108 | 
             
                  assert_instance_of GirFFI::InPointer, @result
         | 
| 109 109 | 
             
                end
         | 
| 110 110 | 
             
              end
         | 
| 111 111 |  | 
| 112 | 
            -
              describe  | 
| 112 | 
            +
              describe 'an instance created with .from :guint32' do
         | 
| 113 113 | 
             
                before do
         | 
| 114 | 
            -
                  @result = GirFFI::InPointer.from :guint32,  | 
| 114 | 
            +
                  @result = GirFFI::InPointer.from :guint32, 12_345
         | 
| 115 115 | 
             
                end
         | 
| 116 116 |  | 
| 117 | 
            -
                it  | 
| 118 | 
            -
                  assert_equal  | 
| 117 | 
            +
                it 'returns a pointer with an address equal to the given value' do
         | 
| 118 | 
            +
                  assert_equal 12_345, @result.address
         | 
| 119 119 | 
             
                end
         | 
| 120 120 |  | 
| 121 | 
            -
                it  | 
| 121 | 
            +
                it 'is an instance of GirFFI::InPointer' do
         | 
| 122 122 | 
             
                  assert_instance_of GirFFI::InPointer, @result
         | 
| 123 123 | 
             
                end
         | 
| 124 124 | 
             
              end
         | 
| 125 125 |  | 
| 126 | 
            -
              describe  | 
| 126 | 
            +
              describe 'an instance created with .from :filename' do
         | 
| 127 127 | 
             
                before do
         | 
| 128 | 
            -
                  @result = GirFFI::InPointer.from :filename,  | 
| 128 | 
            +
                  @result = GirFFI::InPointer.from :filename, 'foo'
         | 
| 129 129 | 
             
                end
         | 
| 130 130 |  | 
| 131 | 
            -
                it  | 
| 132 | 
            -
                  assert_equal  | 
| 131 | 
            +
                it 'returns a pointer to the given string' do
         | 
| 132 | 
            +
                  assert_equal 'foo', @result.read_string
         | 
| 133 133 | 
             
                end
         | 
| 134 134 | 
             
              end
         | 
| 135 135 |  | 
| 136 | 
            -
              describe  | 
| 137 | 
            -
                it  | 
| 136 | 
            +
              describe '.from' do
         | 
| 137 | 
            +
                it 'returns nil when passed nil' do
         | 
| 138 138 | 
             
                  result = GirFFI::InPointer.from :foo, nil
         | 
| 139 139 | 
             
                  assert_nil result
         | 
| 140 140 | 
             
                end
         | 
| @@ -144,10 +144,10 @@ describe GirFFI::InPointer do | |
| 144 144 | 
             
                  assert_equal 23, result.address
         | 
| 145 145 | 
             
                end
         | 
| 146 146 |  | 
| 147 | 
            -
                it  | 
| 147 | 
            +
                it 'handles enum types' do
         | 
| 148 148 | 
             
                  e = Module.new do
         | 
| 149 149 | 
             
                    self::Enum = FFI::Enum.new [:foo, :bar, :baz]
         | 
| 150 | 
            -
                    def self.[] | 
| 150 | 
            +
                    def self.[] val
         | 
| 151 151 | 
             
                      self::Enum[val]
         | 
| 152 152 | 
             
                    end
         | 
| 153 153 | 
             
                  end
         | 
| @@ -155,38 +155,42 @@ describe GirFFI::InPointer do | |
| 155 155 | 
             
                  ptr.address.must_equal 1
         | 
| 156 156 | 
             
                end
         | 
| 157 157 |  | 
| 158 | 
            -
                describe  | 
| 159 | 
            -
                  it  | 
| 158 | 
            +
                describe 'for type :void' do
         | 
| 159 | 
            +
                  it 'returns the result of to_ptr' do
         | 
| 160 160 | 
             
                    obj = Object.new
         | 
| 161 | 
            -
                    def obj.to_ptr | 
| 161 | 
            +
                    def obj.to_ptr
         | 
| 162 | 
            +
                      :test_value
         | 
| 163 | 
            +
                    end
         | 
| 162 164 | 
             
                    GirFFI::InPointer.from(:void, obj).must_equal :test_value
         | 
| 163 165 | 
             
                  end
         | 
| 164 166 |  | 
| 165 | 
            -
                  it  | 
| 167 | 
            +
                  it 'returns nil when passed nil' do
         | 
| 166 168 | 
             
                    GirFFI::InPointer.from(:void, nil).must_equal nil
         | 
| 167 169 | 
             
                  end
         | 
| 168 170 | 
             
                end
         | 
| 169 171 |  | 
| 170 | 
            -
                describe  | 
| 171 | 
            -
                  it  | 
| 172 | 
            +
                describe 'for types that are classes' do
         | 
| 173 | 
            +
                  it 'returns the result of to_ptr' do
         | 
| 172 174 | 
             
                    klass = Class.new
         | 
| 173 175 | 
             
                    obj = klass.new
         | 
| 174 | 
            -
                    def obj.to_ptr | 
| 176 | 
            +
                    def obj.to_ptr
         | 
| 177 | 
            +
                      :test_value
         | 
| 178 | 
            +
                    end
         | 
| 175 179 | 
             
                    GirFFI::InPointer.from(klass, obj).must_equal :test_value
         | 
| 176 180 | 
             
                  end
         | 
| 177 181 | 
             
                end
         | 
| 178 182 | 
             
              end
         | 
| 179 183 |  | 
| 180 | 
            -
              describe  | 
| 181 | 
            -
                describe  | 
| 182 | 
            -
                  it  | 
| 184 | 
            +
              describe '.from_closure_data' do
         | 
| 185 | 
            +
                describe 'when called with nil' do
         | 
| 186 | 
            +
                  it 'returns a pointer pointing to nil.object_id' do
         | 
| 183 187 | 
             
                    GirFFI::InPointer.from_closure_data(nil).address.must_equal nil.object_id
         | 
| 184 188 | 
             
                  end
         | 
| 185 189 | 
             
                end
         | 
| 186 190 |  | 
| 187 | 
            -
                describe  | 
| 188 | 
            -
                  it  | 
| 189 | 
            -
                    str =  | 
| 191 | 
            +
                describe 'when called with a string' do
         | 
| 192 | 
            +
                  it 'stores the string in GirFFI::ArgHelper::OBJECT_STORE' do
         | 
| 193 | 
            +
                    str = 'Foo'
         | 
| 190 194 | 
             
                    ptr = GirFFI::InPointer.from_closure_data(str)
         | 
| 191 195 | 
             
                    result = GirFFI::ArgHelper::OBJECT_STORE.fetch(ptr)
         | 
| 192 196 | 
             
                    result.must_equal str
         | 
| @@ -1,23 +1,24 @@ | |
| 1 1 | 
             
            require 'gir_ffi_test_helper'
         | 
| 2 2 |  | 
| 3 3 | 
             
            describe GirFFI::InfoExt::ICallableInfo do
         | 
| 4 | 
            -
              let(:klass) { | 
| 5 | 
            -
                 | 
| 6 | 
            -
             | 
| 4 | 
            +
              let(:klass) {
         | 
| 5 | 
            +
                Class.new do
         | 
| 6 | 
            +
                  include GirFFI::InfoExt::ICallableInfo
         | 
| 7 | 
            +
                end
         | 
| 8 | 
            +
              }
         | 
| 7 9 | 
             
              let(:callable_info) { klass.new }
         | 
| 8 10 |  | 
| 9 | 
            -
              describe  | 
| 10 | 
            -
                describe  | 
| 11 | 
            +
              describe '#argument_ffi_types' do
         | 
| 12 | 
            +
                describe 'for a simple callable with several arguments' do
         | 
| 11 13 | 
             
                  before do
         | 
| 12 14 | 
             
                    stub(arg_info1 = Object.new).to_ffitype { :type1 }
         | 
| 13 15 | 
             
                    stub(arg_info2 = Object.new).to_ffitype { :type2 }
         | 
| 14 16 | 
             
                    stub(callable_info).args { [arg_info1, arg_info2] }
         | 
| 15 17 | 
             
                  end
         | 
| 16 18 |  | 
| 17 | 
            -
                  it  | 
| 19 | 
            +
                  it 'returns the ffi types of the arguments' do
         | 
| 18 20 | 
             
                    callable_info.argument_ffi_types.must_equal [:type1, :type2]
         | 
| 19 21 | 
             
                  end
         | 
| 20 22 | 
             
                end
         | 
| 21 23 | 
             
              end
         | 
| 22 24 | 
             
            end
         | 
| 23 | 
            -
             |