gir_ffi 0.7.10 → 0.8.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|