gir_ffi 0.7.10 → 0.8.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 +6 -0
- data/Gemfile +3 -1
- data/README.md +5 -2
- data/lib/ffi-glib.rb +1 -0
- data/lib/ffi-glib/array.rb +6 -6
- data/lib/ffi-glib/array_methods.rb +1 -1
- data/lib/ffi-glib/byte_array.rb +1 -1
- data/lib/ffi-glib/bytes.rb +3 -3
- data/lib/ffi-glib/container_class_methods.rb +2 -2
- data/lib/ffi-glib/error.rb +2 -2
- data/lib/ffi-glib/hash_table.rb +9 -9
- data/lib/ffi-glib/iconv.rb +1 -1
- data/lib/ffi-glib/list.rb +2 -2
- data/lib/ffi-glib/list_methods.rb +8 -7
- data/lib/ffi-glib/main_loop.rb +1 -1
- data/lib/ffi-glib/ptr_array.rb +7 -7
- data/lib/ffi-glib/s_list.rb +2 -2
- data/lib/ffi-glib/strv.rb +3 -3
- data/lib/ffi-glib/variant.rb +9 -2
- data/lib/ffi-gobject.rb +10 -10
- data/lib/ffi-gobject/closure.rb +1 -1
- data/lib/ffi-gobject/initially_unowned.rb +4 -3
- data/lib/ffi-gobject/object.rb +19 -19
- data/lib/ffi-gobject/object_class.rb +2 -2
- data/lib/ffi-gobject/ruby_closure.rb +5 -4
- data/lib/ffi-gobject/value.rb +15 -20
- data/lib/ffi-gobject_introspection/g_error.rb +1 -1
- data/lib/ffi-gobject_introspection/i_base_info.rb +6 -6
- data/lib/ffi-gobject_introspection/i_callable_info.rb +1 -1
- data/lib/ffi-gobject_introspection/i_enum_info.rb +2 -2
- data/lib/ffi-gobject_introspection/i_interface_info.rb +8 -8
- data/lib/ffi-gobject_introspection/i_object_info.rb +9 -9
- data/lib/ffi-gobject_introspection/i_repository.rb +13 -13
- data/lib/ffi-gobject_introspection/i_struct_info.rb +2 -2
- data/lib/ffi-gobject_introspection/i_type_info.rb +1 -1
- data/lib/ffi-gobject_introspection/i_union_info.rb +3 -3
- data/lib/ffi-gobject_introspection/lib.rb +4 -4
- data/lib/gir_ffi-base/glib/boolean.rb +4 -4
- data/lib/gir_ffi-base/glib/strv.rb +2 -2
- data/lib/gir_ffi/allocation_helper.rb +1 -1
- data/lib/gir_ffi/arg_helper.rb +8 -8
- data/lib/gir_ffi/boxed_base.rb +5 -9
- data/lib/gir_ffi/builder.rb +4 -4
- data/lib/gir_ffi/builder_helper.rb +3 -3
- data/lib/gir_ffi/builders/argument_builder_collection.rb +1 -1
- data/lib/gir_ffi/builders/base_argument_builder.rb +3 -3
- data/lib/gir_ffi/builders/base_method_builder.rb +71 -0
- data/lib/gir_ffi/builders/base_type_builder.rb +1 -1
- data/lib/gir_ffi/builders/boxed_builder.rb +3 -2
- data/lib/gir_ffi/builders/c_to_ruby_convertor.rb +1 -1
- data/lib/gir_ffi/builders/closure_convertor.rb +1 -1
- data/lib/gir_ffi/builders/closure_to_pointer_convertor.rb +1 -1
- data/lib/gir_ffi/builders/constructor_builder.rb +52 -0
- data/lib/gir_ffi/builders/enum_builder.rb +3 -3
- data/lib/gir_ffi/builders/field_builder.rb +3 -2
- data/lib/gir_ffi/builders/function_builder.rb +9 -50
- data/lib/gir_ffi/builders/initializer_builder.rb +32 -0
- data/lib/gir_ffi/builders/initializer_return_value_builder.rb +16 -0
- data/lib/gir_ffi/builders/mapping_method_builder.rb +7 -5
- data/lib/gir_ffi/builders/marshalling_method_builder.rb +5 -3
- data/lib/gir_ffi/builders/method_template.rb +1 -1
- data/lib/gir_ffi/builders/module_builder.rb +8 -7
- data/lib/gir_ffi/builders/null_convertor.rb +1 -1
- data/lib/gir_ffi/builders/null_return_value_builder.rb +21 -0
- data/lib/gir_ffi/builders/object_builder.rb +3 -3
- data/lib/gir_ffi/builders/property_builder.rb +1 -1
- data/lib/gir_ffi/builders/registered_type_builder.rb +31 -15
- data/lib/gir_ffi/builders/return_value_builder.rb +1 -14
- data/lib/gir_ffi/builders/ruby_to_c_convertor.rb +2 -2
- data/lib/gir_ffi/builders/signal_closure_builder.rb +1 -1
- data/lib/gir_ffi/builders/type_builder.rb +2 -2
- data/lib/gir_ffi/builders/unintrospectable_builder.rb +1 -1
- data/lib/gir_ffi/builders/user_defined_builder.rb +11 -11
- data/lib/gir_ffi/builders/vfunc_builder.rb +1 -1
- data/lib/gir_ffi/callback_base.rb +8 -13
- data/lib/gir_ffi/class_base.rb +41 -45
- data/lib/gir_ffi/core.rb +2 -2
- data/lib/gir_ffi/enum_base.rb +9 -14
- data/lib/gir_ffi/field_argument_info.rb +1 -1
- data/lib/gir_ffi/g_type.rb +1 -1
- data/lib/gir_ffi/glib_error.rb +1 -1
- data/lib/gir_ffi/in_out_pointer.rb +4 -4
- data/lib/gir_ffi/in_pointer.rb +12 -12
- data/lib/gir_ffi/info_ext/i_arg_info.rb +0 -10
- data/lib/gir_ffi/info_ext/i_callback_info.rb +0 -5
- data/lib/gir_ffi/info_ext/i_property_info.rb +1 -1
- data/lib/gir_ffi/info_ext/i_registered_type_info.rb +1 -6
- data/lib/gir_ffi/info_ext/i_signal_info.rb +2 -2
- data/lib/gir_ffi/info_ext/i_type_info.rb +2 -17
- data/lib/gir_ffi/info_ext/i_unresolved_info.rb +0 -5
- data/lib/gir_ffi/info_ext/i_vfunc_info.rb +2 -2
- data/lib/gir_ffi/interface_base.rb +2 -7
- data/lib/gir_ffi/method_stubber.rb +1 -1
- data/lib/gir_ffi/module_base.rb +4 -7
- data/lib/gir_ffi/object_base.rb +4 -9
- data/lib/gir_ffi/receiver_argument_info.rb +1 -1
- data/lib/gir_ffi/receiver_type_info.rb +1 -1
- data/lib/gir_ffi/registered_type_base.rb +0 -5
- data/lib/gir_ffi/return_value_info.rb +1 -1
- data/lib/gir_ffi/sized_array.rb +10 -10
- data/lib/gir_ffi/type_map.rb +3 -3
- data/lib/gir_ffi/unintrospectable_type_info.rb +3 -1
- data/lib/gir_ffi/user_data_argument_info.rb +1 -1
- data/lib/gir_ffi/user_defined_property_info.rb +1 -1
- data/lib/gir_ffi/user_defined_type_info.rb +4 -4
- data/lib/gir_ffi/version.rb +1 -1
- data/lib/gir_ffi/vfunc_implementation.rb +1 -1
- data/lib/gir_ffi/zero_terminated.rb +6 -6
- data/test/base_test_helper.rb +13 -13
- data/test/ffi-gobject/object_test.rb +22 -1
- data/test/ffi-gobject/value_test.rb +24 -24
- data/test/ffi-gobject_introspection/i_registered_type_info_test.rb +4 -4
- data/test/ffi-gobject_introspection/i_type_info_test.rb +2 -2
- data/test/ffi-gobject_test.rb +2 -2
- data/test/gir_ffi/builders/argument_builder_test.rb +60 -60
- data/test/gir_ffi/builders/callback_argument_builder_test.rb +8 -8
- data/test/gir_ffi/builders/callback_builder_test.rb +4 -4
- data/test/gir_ffi/builders/callback_return_value_builder_test.rb +8 -8
- data/test/gir_ffi/builders/constructor_builder_test.rb +34 -0
- data/test/gir_ffi/builders/function_builder_test.rb +8 -24
- data/test/gir_ffi/builders/initializer_builder_test.rb +36 -0
- data/test/gir_ffi/builders/interface_builder_test.rb +2 -2
- data/test/gir_ffi/builders/object_builder_test.rb +6 -18
- data/test/gir_ffi/builders/property_builder_test.rb +2 -2
- data/test/gir_ffi/builders/return_value_builder_test.rb +54 -79
- data/test/gir_ffi/builders/signal_closure_builder_test.rb +14 -14
- data/test/gir_ffi/builders/user_defined_builder_test.rb +8 -8
- data/test/gir_ffi/builders/vfunc_builder_test.rb +22 -22
- data/test/gir_ffi/class_base_test.rb +9 -7
- data/test/gir_ffi/in_pointer_test.rb +1 -1
- data/test/gir_ffi/info_ext/i_callable_info_test.rb +2 -2
- data/test/gir_ffi/info_ext/i_callback_info_test.rb +2 -2
- data/test/gir_ffi/info_ext/i_field_info_test.rb +2 -2
- data/test/gir_ffi/info_ext/i_function_info_test.rb +2 -2
- data/test/gir_ffi/info_ext/i_signal_info_test.rb +2 -2
- data/test/gir_ffi/info_ext/i_type_info_test.rb +18 -18
- data/test/gir_ffi/info_ext/i_unresolved_info_test.rb +2 -2
- data/test/gir_ffi/info_ext/safe_constant_name_test.rb +2 -2
- data/test/gir_ffi/info_ext/safe_function_name_test.rb +2 -2
- data/test/gir_ffi/method_stubber_test.rb +6 -6
- data/test/gir_ffi/user_defined_type_info_test.rb +3 -3
- data/test/gir_ffi_test_helper.rb +12 -12
- data/test/integration/derived_classes_test.rb +7 -3
- data/test/integration/generated_gimarshallingtests_test.rb +10 -10
- data/test/integration/generated_regress_test.rb +11 -20
- data/test/introspection_test_helper.rb +1 -1
- data/test/minitest/stats_plugin.rb +3 -3
- metadata +9 -3
- data/lib/gir_ffi/builders/constructor_result_convertor.rb +0 -14
@@ -5,10 +5,10 @@ describe GirFFI::Builders::CallbackReturnValueBuilder do
|
|
5
5
|
let(:return_value_info) { GirFFI::ReturnValueInfo.new(type_info, ownership_transfer, false) }
|
6
6
|
let(:type_info) { callback_info.return_type }
|
7
7
|
let(:ownership_transfer) { callback_info.caller_owns }
|
8
|
-
let(:builder)
|
8
|
+
let(:builder) do
|
9
9
|
GirFFI::Builders::CallbackReturnValueBuilder.new(var_gen,
|
10
10
|
return_value_info)
|
11
|
-
|
11
|
+
end
|
12
12
|
|
13
13
|
before do
|
14
14
|
skip unless callback_info
|
@@ -28,10 +28,10 @@ describe GirFFI::Builders::CallbackReturnValueBuilder do
|
|
28
28
|
end
|
29
29
|
|
30
30
|
describe 'for :void' do
|
31
|
-
let(:callback_info)
|
31
|
+
let(:callback_info) do
|
32
32
|
get_introspection_data('GIMarshallingTests',
|
33
33
|
'CallbackMultipleOutParameters')
|
34
|
-
|
34
|
+
end
|
35
35
|
|
36
36
|
it 'has no statements in #post_conversion' do
|
37
37
|
builder.post_conversion.must_equal []
|
@@ -44,11 +44,11 @@ describe GirFFI::Builders::CallbackReturnValueBuilder do
|
|
44
44
|
end
|
45
45
|
|
46
46
|
describe 'for :enum' do
|
47
|
-
let(:callback_info)
|
47
|
+
let(:callback_info) do
|
48
48
|
get_vfunc_introspection_data('GIMarshallingTests',
|
49
49
|
'Object',
|
50
50
|
'vfunc_return_enum')
|
51
|
-
|
51
|
+
end
|
52
52
|
|
53
53
|
it 'converts the result' do
|
54
54
|
# Ensure variable names are generated in order
|
@@ -63,11 +63,11 @@ describe GirFFI::Builders::CallbackReturnValueBuilder do
|
|
63
63
|
end
|
64
64
|
|
65
65
|
describe 'for :object with full transfer' do
|
66
|
-
let(:callback_info)
|
66
|
+
let(:callback_info) do
|
67
67
|
get_vfunc_introspection_data('GIMarshallingTests',
|
68
68
|
'Object',
|
69
69
|
'vfunc_return_object_transfer_full')
|
70
|
-
|
70
|
+
end
|
71
71
|
|
72
72
|
it 'increases the refcount of the result and converts it to a pointer' do
|
73
73
|
# Ensure variable names are generated in order
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'gir_ffi_test_helper'
|
2
|
+
|
3
|
+
describe GirFFI::Builders::ConstructorBuilder do
|
4
|
+
describe '#method_definition' do
|
5
|
+
let(:builder) { GirFFI::Builders::ConstructorBuilder.new function_info }
|
6
|
+
let(:code) { builder.method_definition }
|
7
|
+
|
8
|
+
describe 'for constructors with the default name' do
|
9
|
+
let(:function_info) { get_method_introspection_data 'Regress', 'TestObj', 'new' }
|
10
|
+
it 'builds a constructor' do
|
11
|
+
code.must_equal <<-CODE.reset_indentation
|
12
|
+
def self.new(*args)
|
13
|
+
obj = allocate
|
14
|
+
obj.__send__ :initialize, *args
|
15
|
+
obj
|
16
|
+
end
|
17
|
+
CODE
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
describe 'for constructors with a custom name' do
|
22
|
+
let(:function_info) { get_method_introspection_data 'Regress', 'TestObj', 'new_from_file' }
|
23
|
+
it 'builds a custom constructor' do
|
24
|
+
code.must_equal <<-CODE.reset_indentation
|
25
|
+
def self.new_from_file(*args)
|
26
|
+
obj = allocate
|
27
|
+
obj.__send__ :initialize_from_file, *args
|
28
|
+
obj
|
29
|
+
end
|
30
|
+
CODE
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -1,9 +1,9 @@
|
|
1
1
|
require 'gir_ffi_test_helper'
|
2
2
|
|
3
3
|
describe GirFFI::Builders::FunctionBuilder do
|
4
|
-
describe '#
|
4
|
+
describe '#method_definition' do
|
5
5
|
let(:builder) { GirFFI::Builders::FunctionBuilder.new function_info }
|
6
|
-
let(:code) { builder.
|
6
|
+
let(:code) { builder.method_definition }
|
7
7
|
|
8
8
|
describe 'for Regress:test_array_fixed_out_objects' do
|
9
9
|
let(:function_info) { get_introspection_data 'Regress', 'test_array_fixed_out_objects' }
|
@@ -50,22 +50,6 @@ describe GirFFI::Builders::FunctionBuilder do
|
|
50
50
|
end
|
51
51
|
end
|
52
52
|
|
53
|
-
describe 'for constructors' do
|
54
|
-
let(:function_info) { get_method_introspection_data 'Regress', 'TestObj', 'new_from_file' }
|
55
|
-
it 'builds correct definition' do
|
56
|
-
code.must_equal <<-CODE.reset_indentation
|
57
|
-
def self.new_from_file(x)
|
58
|
-
_v1 = GirFFI::InPointer.from(:utf8, x)
|
59
|
-
_v2 = FFI::MemoryPointer.new(:pointer).write_pointer nil
|
60
|
-
_v3 = Regress::Lib.regress_test_obj_new_from_file _v1, _v2
|
61
|
-
GirFFI::ArgHelper.check_error(_v2)
|
62
|
-
_v4 = self.constructor_wrap(_v3)
|
63
|
-
return _v4
|
64
|
-
end
|
65
|
-
CODE
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
53
|
describe 'for functions that take a GValue' do
|
70
54
|
let(:function_info) { get_introspection_data 'GIMarshallingTests', 'gvalue_in' }
|
71
55
|
it 'creates a call to GObject::Value#from' do
|
@@ -172,10 +156,10 @@ describe GirFFI::Builders::FunctionBuilder do
|
|
172
156
|
end
|
173
157
|
|
174
158
|
describe 'for GIMarshallingTests::Object#method_int8_arg_and_out_callee' do
|
175
|
-
let(:function_info)
|
159
|
+
let(:function_info) do
|
176
160
|
get_method_introspection_data('GIMarshallingTests', 'Object',
|
177
161
|
'method_int8_arg_and_out_callee')
|
178
|
-
|
162
|
+
end
|
179
163
|
|
180
164
|
it 'builds a correct definition' do
|
181
165
|
skip unless function_info
|
@@ -192,10 +176,10 @@ describe GirFFI::Builders::FunctionBuilder do
|
|
192
176
|
end
|
193
177
|
|
194
178
|
describe 'for GIMarshallingTests::Object.full_inout' do
|
195
|
-
let(:function_info)
|
179
|
+
let(:function_info) do
|
196
180
|
get_method_introspection_data('GIMarshallingTests', 'Object',
|
197
181
|
'full_inout')
|
198
|
-
|
182
|
+
end
|
199
183
|
|
200
184
|
it 'builds a correct definition' do
|
201
185
|
code.must_equal <<-CODE.reset_indentation
|
@@ -211,10 +195,10 @@ describe GirFFI::Builders::FunctionBuilder do
|
|
211
195
|
end
|
212
196
|
|
213
197
|
describe 'for Regress::TestObj#instance_method_full' do
|
214
|
-
let(:function_info)
|
198
|
+
let(:function_info) do
|
215
199
|
get_method_introspection_data('Regress', 'TestObj',
|
216
200
|
'instance_method_full')
|
217
|
-
|
201
|
+
end
|
218
202
|
|
219
203
|
it 'builds a correct definition including self.ref' do
|
220
204
|
skip unless function_info
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'gir_ffi_test_helper'
|
2
|
+
|
3
|
+
describe GirFFI::Builders::InitializerBuilder do
|
4
|
+
describe '#method_definition' do
|
5
|
+
let(:builder) { GirFFI::Builders::InitializerBuilder.new function_info }
|
6
|
+
let(:code) { builder.method_definition }
|
7
|
+
|
8
|
+
describe 'for constructors with the default name' do
|
9
|
+
let(:function_info) { get_method_introspection_data 'Regress', 'TestObj', 'new' }
|
10
|
+
it 'builds an initializer' do
|
11
|
+
code.must_equal <<-CODE.reset_indentation
|
12
|
+
def initialize(obj)
|
13
|
+
_v1 = Regress::TestObj.from(obj)
|
14
|
+
_v2 = Regress::Lib.regress_test_obj_new _v1
|
15
|
+
store_pointer(_v2)
|
16
|
+
end
|
17
|
+
CODE
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
describe 'for constructors with a custom name' do
|
22
|
+
let(:function_info) { get_method_introspection_data 'Regress', 'TestObj', 'new_from_file' }
|
23
|
+
it 'builds a custom initializer' do
|
24
|
+
code.must_equal <<-CODE.reset_indentation
|
25
|
+
def initialize_from_file(x)
|
26
|
+
_v1 = GirFFI::InPointer.from(:utf8, x)
|
27
|
+
_v2 = FFI::MemoryPointer.new(:pointer).write_pointer nil
|
28
|
+
_v3 = Regress::Lib.regress_test_obj_new_from_file _v1, _v2
|
29
|
+
GirFFI::ArgHelper.check_error(_v2)
|
30
|
+
store_pointer(_v3)
|
31
|
+
end
|
32
|
+
CODE
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -1,10 +1,10 @@
|
|
1
1
|
require 'gir_ffi_test_helper'
|
2
2
|
|
3
3
|
describe GirFFI::Builders::InterfaceBuilder do
|
4
|
-
let(:interface_builder)
|
4
|
+
let(:interface_builder) do
|
5
5
|
GirFFI::Builders::InterfaceBuilder.new(
|
6
6
|
get_introspection_data('Regress', 'TestInterface'))
|
7
|
-
|
7
|
+
end
|
8
8
|
|
9
9
|
describe '#build_class' do
|
10
10
|
before do
|
@@ -1,14 +1,14 @@
|
|
1
1
|
require 'gir_ffi_test_helper'
|
2
2
|
|
3
3
|
describe GirFFI::Builders::ObjectBuilder do
|
4
|
-
let(:obj_builder)
|
4
|
+
let(:obj_builder) do
|
5
5
|
GirFFI::Builders::ObjectBuilder.new(
|
6
6
|
get_introspection_data('Regress', 'TestObj'))
|
7
|
-
|
8
|
-
let(:sub_obj_builder)
|
7
|
+
end
|
8
|
+
let(:sub_obj_builder) do
|
9
9
|
GirFFI::Builders::ObjectBuilder.new(
|
10
10
|
get_introspection_data('Regress', 'TestSubObj'))
|
11
|
-
|
11
|
+
end
|
12
12
|
|
13
13
|
describe '#find_signal' do
|
14
14
|
it 'finds the signal "test" for TestObj' do
|
@@ -50,21 +50,9 @@ describe GirFFI::Builders::ObjectBuilder do
|
|
50
50
|
end
|
51
51
|
|
52
52
|
it 'raises an error if the property is not found' do
|
53
|
-
proc
|
53
|
+
proc do
|
54
54
|
sub_obj_builder.find_property('this-property-does-not-exist')
|
55
|
-
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
describe '#function_definition' do
|
60
|
-
let(:method_info) {
|
61
|
-
get_method_introspection_data 'Regress', 'TestObj', 'instance_method'
|
62
|
-
}
|
63
|
-
|
64
|
-
it 'delegates definition to FunctionBuilder' do
|
65
|
-
code = obj_builder.send :function_definition, method_info
|
66
|
-
expected = GirFFI::Builders::FunctionBuilder.new(method_info).generate
|
67
|
-
code.must_equal expected
|
55
|
+
end.must_raise RuntimeError
|
68
56
|
end
|
69
57
|
end
|
70
58
|
|
@@ -56,11 +56,11 @@ describe GirFFI::Builders::PropertyBuilder do
|
|
56
56
|
end
|
57
57
|
|
58
58
|
describe 'for a property of type :strv' do
|
59
|
-
let(:property_info)
|
59
|
+
let(:property_info) do
|
60
60
|
get_property_introspection_data('GIMarshallingTests',
|
61
61
|
'PropertiesObject',
|
62
62
|
'some-strv')
|
63
|
-
|
63
|
+
end
|
64
64
|
before do
|
65
65
|
skip unless property_info
|
66
66
|
end
|
@@ -3,18 +3,15 @@ require 'gir_ffi_test_helper'
|
|
3
3
|
describe GirFFI::Builders::ReturnValueBuilder do
|
4
4
|
let(:var_gen) { GirFFI::VariableNameGenerator.new }
|
5
5
|
let(:return_type_info) { GirFFI::ReturnValueInfo.new(type_info, :nothing, false) }
|
6
|
-
let(:
|
7
|
-
|
8
|
-
|
9
|
-
return_type_info,
|
10
|
-
for_constructor)
|
11
|
-
}
|
6
|
+
let(:builder) do
|
7
|
+
GirFFI::Builders::ReturnValueBuilder.new(var_gen, return_type_info)
|
8
|
+
end
|
12
9
|
|
13
10
|
describe 'for :gint32' do
|
14
|
-
let(:type_info)
|
11
|
+
let(:type_info) do
|
15
12
|
get_introspection_data('GIMarshallingTests',
|
16
13
|
'int_return_min').return_type
|
17
|
-
|
14
|
+
end
|
18
15
|
|
19
16
|
it 'has no statements in #post_conversion' do
|
20
17
|
builder.post_conversion.must_equal []
|
@@ -27,11 +24,11 @@ describe GirFFI::Builders::ReturnValueBuilder do
|
|
27
24
|
end
|
28
25
|
|
29
26
|
describe 'for :struct' do
|
30
|
-
let(:type_info)
|
27
|
+
let(:type_info) do
|
31
28
|
get_method_introspection_data('GIMarshallingTests',
|
32
29
|
'BoxedStruct',
|
33
30
|
'returnv').return_type
|
34
|
-
|
31
|
+
end
|
35
32
|
|
36
33
|
it 'wraps the result in #post_conversion' do
|
37
34
|
builder.capture_variable_name.must_equal '_v1'
|
@@ -45,11 +42,11 @@ describe GirFFI::Builders::ReturnValueBuilder do
|
|
45
42
|
end
|
46
43
|
|
47
44
|
describe 'for :union' do
|
48
|
-
let(:type_info)
|
45
|
+
let(:type_info) do
|
49
46
|
get_method_introspection_data('GIMarshallingTests',
|
50
47
|
'Union',
|
51
48
|
'returnv').return_type
|
52
|
-
|
49
|
+
end
|
53
50
|
|
54
51
|
it 'wraps the result in #post_conversion' do
|
55
52
|
builder.capture_variable_name.must_equal '_v1'
|
@@ -63,11 +60,11 @@ describe GirFFI::Builders::ReturnValueBuilder do
|
|
63
60
|
end
|
64
61
|
|
65
62
|
describe 'for :interface' do
|
66
|
-
let(:type_info)
|
63
|
+
let(:type_info) do
|
67
64
|
get_method_introspection_data('Gio',
|
68
65
|
'File',
|
69
66
|
'new_for_commandline_arg').return_type
|
70
|
-
|
67
|
+
end
|
71
68
|
|
72
69
|
it 'wraps the result in #post_conversion' do
|
73
70
|
builder.capture_variable_name.must_equal '_v1'
|
@@ -81,51 +78,29 @@ describe GirFFI::Builders::ReturnValueBuilder do
|
|
81
78
|
end
|
82
79
|
|
83
80
|
describe 'for :object' do
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
'full_return').return_type
|
89
|
-
}
|
90
|
-
let(:for_constructor) { false }
|
91
|
-
|
92
|
-
it 'wraps the result in #post_conversion' do
|
93
|
-
builder.capture_variable_name.must_equal '_v1'
|
94
|
-
builder.post_conversion.must_equal ['_v2 = GIMarshallingTests::Object.wrap(_v1)']
|
95
|
-
end
|
96
|
-
|
97
|
-
it 'returns the wrapped result' do
|
98
|
-
builder.capture_variable_name.must_equal '_v1'
|
99
|
-
builder.return_value_name.must_equal '_v2'
|
100
|
-
end
|
81
|
+
let(:type_info) do
|
82
|
+
get_method_introspection_data('GIMarshallingTests',
|
83
|
+
'Object',
|
84
|
+
'full_return').return_type
|
101
85
|
end
|
102
86
|
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
'new').return_type
|
108
|
-
}
|
109
|
-
let(:for_constructor) { true }
|
110
|
-
|
111
|
-
it 'wraps the result in #post_conversion' do
|
112
|
-
builder.capture_variable_name.must_equal '_v1'
|
113
|
-
builder.post_conversion.must_equal ['_v2 = self.constructor_wrap(_v1)']
|
114
|
-
end
|
87
|
+
it 'wraps the result in #post_conversion' do
|
88
|
+
builder.capture_variable_name.must_equal '_v1'
|
89
|
+
builder.post_conversion.must_equal ['_v2 = GIMarshallingTests::Object.wrap(_v1)']
|
90
|
+
end
|
115
91
|
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
end
|
92
|
+
it 'returns the wrapped result' do
|
93
|
+
builder.capture_variable_name.must_equal '_v1'
|
94
|
+
builder.return_value_name.must_equal '_v2'
|
120
95
|
end
|
121
96
|
end
|
122
97
|
|
123
98
|
describe 'for :strv' do
|
124
|
-
let(:type_info)
|
99
|
+
let(:type_info) do
|
125
100
|
get_method_introspection_data('GLib',
|
126
101
|
'KeyFile',
|
127
102
|
'get_locale_string_list').return_type
|
128
|
-
|
103
|
+
end
|
129
104
|
|
130
105
|
it 'wraps the result in #post_conversion' do
|
131
106
|
builder.capture_variable_name.must_equal '_v1'
|
@@ -139,11 +114,11 @@ describe GirFFI::Builders::ReturnValueBuilder do
|
|
139
114
|
end
|
140
115
|
|
141
116
|
describe 'for :zero_terminated' do
|
142
|
-
let(:type_info)
|
117
|
+
let(:type_info) do
|
143
118
|
get_method_introspection_data('GLib',
|
144
119
|
'Variant',
|
145
120
|
'dup_bytestring').return_type
|
146
|
-
|
121
|
+
end
|
147
122
|
before do
|
148
123
|
skip unless type_info.zero_terminated?
|
149
124
|
end
|
@@ -160,10 +135,10 @@ describe GirFFI::Builders::ReturnValueBuilder do
|
|
160
135
|
end
|
161
136
|
|
162
137
|
describe 'for :byte_array' do
|
163
|
-
let(:type_info)
|
138
|
+
let(:type_info) do
|
164
139
|
get_introspection_data('GIMarshallingTests',
|
165
140
|
'bytearray_full_return').return_type
|
166
|
-
|
141
|
+
end
|
167
142
|
|
168
143
|
it 'wraps the result in #post_conversion' do
|
169
144
|
builder.capture_variable_name.must_equal '_v1'
|
@@ -177,10 +152,10 @@ describe GirFFI::Builders::ReturnValueBuilder do
|
|
177
152
|
end
|
178
153
|
|
179
154
|
describe 'for :ptr_array' do
|
180
|
-
let(:type_info)
|
155
|
+
let(:type_info) do
|
181
156
|
get_introspection_data('GIMarshallingTests',
|
182
157
|
'gptrarray_utf8_none_return').return_type
|
183
|
-
|
158
|
+
end
|
184
159
|
|
185
160
|
it 'wraps the result in #post_conversion' do
|
186
161
|
builder.capture_variable_name.must_equal '_v1'
|
@@ -194,10 +169,10 @@ describe GirFFI::Builders::ReturnValueBuilder do
|
|
194
169
|
end
|
195
170
|
|
196
171
|
describe 'for :glist' do
|
197
|
-
let(:type_info)
|
172
|
+
let(:type_info) do
|
198
173
|
get_introspection_data('GIMarshallingTests',
|
199
174
|
'glist_int_none_return').return_type
|
200
|
-
|
175
|
+
end
|
201
176
|
|
202
177
|
it 'wraps the result in #post_conversion' do
|
203
178
|
builder.capture_variable_name.must_equal '_v1'
|
@@ -211,10 +186,10 @@ describe GirFFI::Builders::ReturnValueBuilder do
|
|
211
186
|
end
|
212
187
|
|
213
188
|
describe 'for :gslist' do
|
214
|
-
let(:type_info)
|
189
|
+
let(:type_info) do
|
215
190
|
get_introspection_data('GIMarshallingTests',
|
216
191
|
'gslist_int_none_return').return_type
|
217
|
-
|
192
|
+
end
|
218
193
|
|
219
194
|
it 'wraps the result in #post_conversion' do
|
220
195
|
builder.capture_variable_name.must_equal '_v1'
|
@@ -228,10 +203,10 @@ describe GirFFI::Builders::ReturnValueBuilder do
|
|
228
203
|
end
|
229
204
|
|
230
205
|
describe 'for :ghash' do
|
231
|
-
let(:type_info)
|
206
|
+
let(:type_info) do
|
232
207
|
get_introspection_data('GIMarshallingTests',
|
233
208
|
'ghashtable_int_none_return').return_type
|
234
|
-
|
209
|
+
end
|
235
210
|
|
236
211
|
it 'wraps the result in #post_conversion' do
|
237
212
|
builder.capture_variable_name.must_equal '_v1'
|
@@ -245,10 +220,10 @@ describe GirFFI::Builders::ReturnValueBuilder do
|
|
245
220
|
end
|
246
221
|
|
247
222
|
describe 'for :array' do
|
248
|
-
let(:type_info)
|
223
|
+
let(:type_info) do
|
249
224
|
get_introspection_data('GIMarshallingTests',
|
250
225
|
'garray_int_none_return').return_type
|
251
|
-
|
226
|
+
end
|
252
227
|
|
253
228
|
it 'wraps the result in #post_conversion' do
|
254
229
|
builder.capture_variable_name.must_equal '_v1'
|
@@ -262,10 +237,10 @@ describe GirFFI::Builders::ReturnValueBuilder do
|
|
262
237
|
end
|
263
238
|
|
264
239
|
describe 'for :error' do
|
265
|
-
let(:type_info)
|
240
|
+
let(:type_info) do
|
266
241
|
get_introspection_data('GIMarshallingTests',
|
267
242
|
'gerror_return').return_type
|
268
|
-
|
243
|
+
end
|
269
244
|
|
270
245
|
it 'wraps the result in #post_conversion' do
|
271
246
|
builder.capture_variable_name.must_equal '_v1'
|
@@ -280,10 +255,10 @@ describe GirFFI::Builders::ReturnValueBuilder do
|
|
280
255
|
|
281
256
|
describe 'for :c' do
|
282
257
|
describe 'with fixed size' do
|
283
|
-
let(:type_info)
|
258
|
+
let(:type_info) do
|
284
259
|
get_introspection_data('GIMarshallingTests',
|
285
260
|
'array_fixed_int_return').return_type
|
286
|
-
|
261
|
+
end
|
287
262
|
|
288
263
|
it 'converts the result in #post_conversion' do
|
289
264
|
builder.capture_variable_name.must_equal '_v1'
|
@@ -298,11 +273,11 @@ describe GirFFI::Builders::ReturnValueBuilder do
|
|
298
273
|
|
299
274
|
describe 'with separate size parameter' do
|
300
275
|
let(:length_argument) { Object.new }
|
301
|
-
let(:type_info)
|
276
|
+
let(:type_info) do
|
302
277
|
get_method_introspection_data('GIMarshallingTests',
|
303
278
|
'Object',
|
304
279
|
'method_array_return').return_type
|
305
|
-
|
280
|
+
end
|
306
281
|
|
307
282
|
before do
|
308
283
|
allow(length_argument).to receive(:post_converted_name).and_return 'bar'
|
@@ -322,9 +297,9 @@ describe GirFFI::Builders::ReturnValueBuilder do
|
|
322
297
|
end
|
323
298
|
|
324
299
|
describe 'for :utf8' do
|
325
|
-
let(:type_info)
|
300
|
+
let(:type_info) do
|
326
301
|
get_introspection_data('GIMarshallingTests', 'utf8_full_return').return_type
|
327
|
-
|
302
|
+
end
|
328
303
|
|
329
304
|
it 'converts the result in #post_conversion' do
|
330
305
|
builder.capture_variable_name.must_equal '_v1'
|
@@ -338,9 +313,9 @@ describe GirFFI::Builders::ReturnValueBuilder do
|
|
338
313
|
end
|
339
314
|
|
340
315
|
describe 'for :void pointer' do
|
341
|
-
let(:callback_info)
|
316
|
+
let(:callback_info) do
|
342
317
|
get_introspection_data('GIMarshallingTests', 'CallbackIntInt')
|
343
|
-
|
318
|
+
end
|
344
319
|
let(:type_info) { callback_info.args[1].argument_type }
|
345
320
|
|
346
321
|
before do
|
@@ -358,9 +333,9 @@ describe GirFFI::Builders::ReturnValueBuilder do
|
|
358
333
|
end
|
359
334
|
|
360
335
|
describe 'for :void' do
|
361
|
-
let(:type_info)
|
336
|
+
let(:type_info) do
|
362
337
|
get_method_introspection_data('Regress', 'TestObj', 'null_out').return_type
|
363
|
-
|
338
|
+
end
|
364
339
|
|
365
340
|
it 'has no statements in #post_conversion' do
|
366
341
|
builder.post_conversion.must_equal []
|
@@ -376,9 +351,9 @@ describe GirFFI::Builders::ReturnValueBuilder do
|
|
376
351
|
end
|
377
352
|
|
378
353
|
describe 'for a closure argument' do
|
379
|
-
let(:type_info)
|
354
|
+
let(:type_info) do
|
380
355
|
get_introspection_data('Regress', 'TestCallbackUserData').args[0].argument_type
|
381
|
-
|
356
|
+
end
|
382
357
|
|
383
358
|
before do
|
384
359
|
builder.closure = true
|
@@ -396,9 +371,9 @@ describe GirFFI::Builders::ReturnValueBuilder do
|
|
396
371
|
end
|
397
372
|
|
398
373
|
describe 'for a skipped return value' do
|
399
|
-
let(:type_info)
|
374
|
+
let(:type_info) do
|
400
375
|
get_method_introspection_data('Regress', 'TestObj', 'skip_return_val').return_type
|
401
|
-
|
376
|
+
end
|
402
377
|
let(:return_type_info) { GirFFI::ReturnValueInfo.new(type_info, :nothing, true) }
|
403
378
|
|
404
379
|
it 'has no statements in #post_conversion' do
|