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
@@ -4,9 +4,9 @@ describe GirFFI::Builders::SignalClosureBuilder do
|
|
4
4
|
let(:builder) { GirFFI::Builders::SignalClosureBuilder.new signal_info }
|
5
5
|
|
6
6
|
describe '#build_class' do
|
7
|
-
let(:signal_info)
|
7
|
+
let(:signal_info) do
|
8
8
|
get_signal_introspection_data 'Regress', 'TestObj', 'test'
|
9
|
-
|
9
|
+
end
|
10
10
|
|
11
11
|
it 'builds a descendant of RubyClosure' do
|
12
12
|
klass = builder.build_class
|
@@ -16,9 +16,9 @@ describe GirFFI::Builders::SignalClosureBuilder do
|
|
16
16
|
|
17
17
|
describe '#marshaller_definition' do
|
18
18
|
describe 'for a signal with no arguments or return value' do
|
19
|
-
let(:signal_info)
|
19
|
+
let(:signal_info) do
|
20
20
|
get_signal_introspection_data 'Regress', 'TestObj', 'test'
|
21
|
-
|
21
|
+
end
|
22
22
|
|
23
23
|
it 'returns a valid marshaller converting only the receiver' do
|
24
24
|
expected = <<-CODE.reset_indentation
|
@@ -34,9 +34,9 @@ describe GirFFI::Builders::SignalClosureBuilder do
|
|
34
34
|
end
|
35
35
|
|
36
36
|
describe 'for a signal with an argument and a return value' do
|
37
|
-
let(:signal_info)
|
37
|
+
let(:signal_info) do
|
38
38
|
get_signal_introspection_data 'Regress', 'TestObj', 'sig-with-int64-prop'
|
39
|
-
|
39
|
+
end
|
40
40
|
|
41
41
|
it 'returns a valid mapping method' do
|
42
42
|
skip unless signal_info
|
@@ -56,9 +56,9 @@ describe GirFFI::Builders::SignalClosureBuilder do
|
|
56
56
|
end
|
57
57
|
|
58
58
|
describe 'for a signal with an enum argument' do
|
59
|
-
let(:signal_info)
|
59
|
+
let(:signal_info) do
|
60
60
|
get_signal_introspection_data 'Gio', 'MountOperation', 'reply'
|
61
|
-
|
61
|
+
end
|
62
62
|
|
63
63
|
it 'returns a valid mapping method' do
|
64
64
|
expected = <<-CODE.reset_indentation
|
@@ -75,9 +75,9 @@ describe GirFFI::Builders::SignalClosureBuilder do
|
|
75
75
|
end
|
76
76
|
|
77
77
|
describe 'for a signal with a array plus length arguments' do
|
78
|
-
let(:signal_info)
|
78
|
+
let(:signal_info) do
|
79
79
|
get_signal_introspection_data 'Regress', 'TestObj', 'sig-with-array-len-prop'
|
80
|
-
|
80
|
+
end
|
81
81
|
|
82
82
|
it 'returns a valid mapping method' do
|
83
83
|
skip unless signal_info
|
@@ -97,9 +97,9 @@ describe GirFFI::Builders::SignalClosureBuilder do
|
|
97
97
|
end
|
98
98
|
|
99
99
|
describe 'for a signal with a struct argument' do
|
100
|
-
let(:signal_info)
|
100
|
+
let(:signal_info) do
|
101
101
|
get_signal_introspection_data 'Regress', 'TestObj', 'test-with-static-scope-arg'
|
102
|
-
|
102
|
+
end
|
103
103
|
|
104
104
|
it 'returns a valid mapping method' do
|
105
105
|
skip unless signal_info
|
@@ -118,9 +118,9 @@ describe GirFFI::Builders::SignalClosureBuilder do
|
|
118
118
|
end
|
119
119
|
|
120
120
|
describe 'for a signal returning an array of integers' do
|
121
|
-
let(:signal_info)
|
121
|
+
let(:signal_info) do
|
122
122
|
get_signal_introspection_data 'Regress', 'TestObj', 'sig-with-intarray-ret'
|
123
|
-
|
123
|
+
end
|
124
124
|
|
125
125
|
it 'returns a valid mapping method' do
|
126
126
|
skip unless signal_info
|
@@ -3,10 +3,10 @@ require 'gir_ffi_test_helper'
|
|
3
3
|
GirFFI.setup :GIMarshallingTests
|
4
4
|
|
5
5
|
describe GirFFI::Builders::UserDefinedBuilder do
|
6
|
-
let(:klass)
|
6
|
+
let(:klass) do
|
7
7
|
Object.const_set("DerivedClass#{Sequence.next}",
|
8
8
|
Class.new(GIMarshallingTests::Object))
|
9
|
-
|
9
|
+
end
|
10
10
|
let(:builder) { GirFFI::Builders::UserDefinedBuilder.new info }
|
11
11
|
let(:info) { GirFFI::UserDefinedTypeInfo.new klass }
|
12
12
|
|
@@ -16,14 +16,14 @@ describe GirFFI::Builders::UserDefinedBuilder do
|
|
16
16
|
end
|
17
17
|
|
18
18
|
describe 'with type info containing one property' do
|
19
|
-
let(:info)
|
19
|
+
let(:info) do
|
20
20
|
GirFFI::UserDefinedTypeInfo.new klass do |it|
|
21
21
|
it.install_property GObject.param_spec_int('foo', 'foo bar',
|
22
22
|
'The Foo Bar Property',
|
23
23
|
10, 20, 15,
|
24
24
|
3)
|
25
25
|
end
|
26
|
-
|
26
|
+
end
|
27
27
|
|
28
28
|
it 'registers a type that is bigger than the parent' do
|
29
29
|
gtype = klass.gtype
|
@@ -55,11 +55,11 @@ describe GirFFI::Builders::UserDefinedBuilder do
|
|
55
55
|
end
|
56
56
|
|
57
57
|
describe 'with type info containing an overridden g_name' do
|
58
|
-
let(:info)
|
58
|
+
let(:info) do
|
59
59
|
GirFFI::UserDefinedTypeInfo.new klass do |it|
|
60
60
|
it.g_name = "OtherName#{Sequence.next}"
|
61
61
|
end
|
62
|
-
|
62
|
+
end
|
63
63
|
|
64
64
|
it 'registers a type under the overridden name' do
|
65
65
|
registered_name = GObject.type_name(klass.gtype)
|
@@ -69,13 +69,13 @@ describe GirFFI::Builders::UserDefinedBuilder do
|
|
69
69
|
end
|
70
70
|
|
71
71
|
describe 'with type info containing a vfunc' do
|
72
|
-
let(:info)
|
72
|
+
let(:info) do
|
73
73
|
GirFFI::UserDefinedTypeInfo.new klass do |it|
|
74
74
|
it.install_vfunc_implementation :method_int8_in, proc {|instance, in_|
|
75
75
|
instance.int = in_
|
76
76
|
}
|
77
77
|
end
|
78
|
-
|
78
|
+
end
|
79
79
|
|
80
80
|
it 'allows the vfunc to be called through its invoker' do
|
81
81
|
obj = klass.new
|
@@ -11,9 +11,9 @@ describe GirFFI::Builders::VFuncBuilder do
|
|
11
11
|
end
|
12
12
|
|
13
13
|
describe 'for a vfunc with only one argument' do
|
14
|
-
let(:vfunc_info)
|
14
|
+
let(:vfunc_info) do
|
15
15
|
get_vfunc_introspection_data 'GIMarshallingTests', 'Object', 'method_int8_in'
|
16
|
-
|
16
|
+
end
|
17
17
|
|
18
18
|
it 'returns a valid mapping method including receiver' do
|
19
19
|
expected = <<-CODE.reset_indentation
|
@@ -29,9 +29,9 @@ describe GirFFI::Builders::VFuncBuilder do
|
|
29
29
|
end
|
30
30
|
|
31
31
|
describe 'for a vfunc returning an enum' do
|
32
|
-
let(:vfunc_info)
|
32
|
+
let(:vfunc_info) do
|
33
33
|
get_vfunc_introspection_data 'GIMarshallingTests', 'Object', 'vfunc_return_enum'
|
34
|
-
|
34
|
+
end
|
35
35
|
|
36
36
|
it 'returns a valid mapping method including receiver' do
|
37
37
|
expected = <<-CODE.reset_indentation
|
@@ -48,9 +48,9 @@ describe GirFFI::Builders::VFuncBuilder do
|
|
48
48
|
end
|
49
49
|
|
50
50
|
describe 'for a vfunc with a callback argument' do
|
51
|
-
let(:vfunc_info)
|
51
|
+
let(:vfunc_info) do
|
52
52
|
get_vfunc_introspection_data 'GIMarshallingTests', 'Object', 'vfunc_with_callback'
|
53
|
-
|
53
|
+
end
|
54
54
|
|
55
55
|
it 'returns a valid mapping method including receiver' do
|
56
56
|
expected = <<-CODE.reset_indentation
|
@@ -67,10 +67,10 @@ describe GirFFI::Builders::VFuncBuilder do
|
|
67
67
|
end
|
68
68
|
|
69
69
|
describe 'for a vfunc with an out argument allocated by them, the caller' do
|
70
|
-
let(:vfunc_info)
|
70
|
+
let(:vfunc_info) do
|
71
71
|
get_vfunc_introspection_data('GIMarshallingTests', 'Object',
|
72
72
|
'method_int8_arg_and_out_caller')
|
73
|
-
|
73
|
+
end
|
74
74
|
|
75
75
|
it 'returns a valid mapping method including receiver' do
|
76
76
|
expected = <<-CODE.reset_indentation
|
@@ -88,10 +88,10 @@ describe GirFFI::Builders::VFuncBuilder do
|
|
88
88
|
end
|
89
89
|
|
90
90
|
describe 'for a vfunc with an out argument allocated by us, the callee' do
|
91
|
-
let(:vfunc_info)
|
91
|
+
let(:vfunc_info) do
|
92
92
|
get_vfunc_introspection_data('GIMarshallingTests', 'Object',
|
93
93
|
'method_int8_arg_and_out_callee')
|
94
|
-
|
94
|
+
end
|
95
95
|
|
96
96
|
it 'returns a valid mapping method including receiver' do
|
97
97
|
expected = <<-CODE.reset_indentation
|
@@ -109,10 +109,10 @@ describe GirFFI::Builders::VFuncBuilder do
|
|
109
109
|
end
|
110
110
|
|
111
111
|
describe 'for a vfunc with an error argument' do
|
112
|
-
let(:vfunc_info)
|
112
|
+
let(:vfunc_info) do
|
113
113
|
get_vfunc_introspection_data('GIMarshallingTests', 'Object',
|
114
114
|
'vfunc_meth_with_err')
|
115
|
-
|
115
|
+
end
|
116
116
|
|
117
117
|
it 'returns a valid mapping method including receiver' do
|
118
118
|
expected = <<-CODE.reset_indentation
|
@@ -134,9 +134,9 @@ describe GirFFI::Builders::VFuncBuilder do
|
|
134
134
|
end
|
135
135
|
|
136
136
|
describe 'for a vfunc with a full-transfer return value' do
|
137
|
-
let(:vfunc_info)
|
137
|
+
let(:vfunc_info) do
|
138
138
|
get_vfunc_introspection_data 'GIMarshallingTests', 'Object', 'vfunc_return_object_transfer_full'
|
139
|
-
|
139
|
+
end
|
140
140
|
|
141
141
|
it 'returns a valid mapping method' do
|
142
142
|
expected = <<-CODE.reset_indentation
|
@@ -153,9 +153,9 @@ describe GirFFI::Builders::VFuncBuilder do
|
|
153
153
|
end
|
154
154
|
|
155
155
|
describe 'for a vfunc with a transfer-none in argument' do
|
156
|
-
let(:vfunc_info)
|
156
|
+
let(:vfunc_info) do
|
157
157
|
get_vfunc_introspection_data 'GIMarshallingTests', 'Object', 'vfunc_in_object_transfer_none'
|
158
|
-
|
158
|
+
end
|
159
159
|
|
160
160
|
it 'returns a valid mapping method' do
|
161
161
|
expected = <<-CODE.reset_indentation
|
@@ -172,9 +172,9 @@ describe GirFFI::Builders::VFuncBuilder do
|
|
172
172
|
end
|
173
173
|
|
174
174
|
describe 'for a vfunc with a full-transfer outgoing argument' do
|
175
|
-
let(:vfunc_info)
|
175
|
+
let(:vfunc_info) do
|
176
176
|
get_vfunc_introspection_data 'GIMarshallingTests', 'Object', 'vfunc_out_object_transfer_full'
|
177
|
-
|
177
|
+
end
|
178
178
|
|
179
179
|
it 'returns a valid mapping method' do
|
180
180
|
expected = <<-CODE.reset_indentation
|
@@ -199,9 +199,9 @@ describe GirFFI::Builders::VFuncBuilder do
|
|
199
199
|
end
|
200
200
|
|
201
201
|
describe 'for a vfunc with only one argument' do
|
202
|
-
let(:vfunc_info)
|
202
|
+
let(:vfunc_info) do
|
203
203
|
get_vfunc_introspection_data 'GIMarshallingTests', 'Object', 'method_int8_in'
|
204
|
-
|
204
|
+
end
|
205
205
|
|
206
206
|
it 'returns the correct FFI types including :pointer for the receiver' do
|
207
207
|
result.must_equal [:pointer, :int8]
|
@@ -217,9 +217,9 @@ describe GirFFI::Builders::VFuncBuilder do
|
|
217
217
|
end
|
218
218
|
|
219
219
|
describe 'for a vfunc returning an object' do
|
220
|
-
let(:vfunc_info)
|
220
|
+
let(:vfunc_info) do
|
221
221
|
get_vfunc_introspection_data 'GIMarshallingTests', 'Object', 'vfunc_return_object_transfer_full'
|
222
|
-
|
222
|
+
end
|
223
223
|
|
224
224
|
it 'returns :pointer' do
|
225
225
|
result.must_equal :pointer
|
@@ -2,13 +2,13 @@ require 'gir_ffi_test_helper'
|
|
2
2
|
|
3
3
|
describe GirFFI::ClassBase do
|
4
4
|
describe 'a simple descendant' do
|
5
|
-
let(:klass)
|
5
|
+
let(:klass) do
|
6
6
|
Class.new(GirFFI::ClassBase) do
|
7
7
|
self::Struct = Class.new(FFI::Struct) do
|
8
8
|
layout :foo, :int32
|
9
9
|
end
|
10
10
|
end
|
11
|
-
|
11
|
+
end
|
12
12
|
let(:object) { klass.wrap FFI::MemoryPointer.new(:int32) }
|
13
13
|
|
14
14
|
it 'has #from as a pass-through method' do
|
@@ -91,8 +91,9 @@ describe GirFFI::ClassBase do
|
|
91
91
|
def self.bar
|
92
92
|
'correct-result'
|
93
93
|
end
|
94
|
+
|
94
95
|
def self.new
|
95
|
-
|
96
|
+
allocate
|
96
97
|
end
|
97
98
|
end
|
98
99
|
klass.const_set :GIR_FFI_BUILDER, builder
|
@@ -110,11 +111,11 @@ describe GirFFI::ClassBase do
|
|
110
111
|
|
111
112
|
expect(sub_builder = Object.new).to receive(:setup_instance_method).with('foo').and_return nil
|
112
113
|
sub_klass = Class.new klass do
|
113
|
-
def foo
|
114
|
+
def foo
|
115
|
+
end
|
114
116
|
|
115
|
-
def initialize; end
|
116
117
|
def self.new
|
117
|
-
|
118
|
+
allocate
|
118
119
|
end
|
119
120
|
end
|
120
121
|
sub_klass.const_set :GIR_FFI_BUILDER, sub_builder
|
@@ -130,8 +131,9 @@ describe GirFFI::ClassBase do
|
|
130
131
|
def bar
|
131
132
|
'correct-result'
|
132
133
|
end
|
134
|
+
|
133
135
|
def self.new
|
134
|
-
|
136
|
+
allocate
|
135
137
|
end
|
136
138
|
end
|
137
139
|
klass.const_set :GIR_FFI_BUILDER, builder
|
@@ -1,11 +1,11 @@
|
|
1
1
|
require 'gir_ffi_test_helper'
|
2
2
|
|
3
3
|
describe GirFFI::InfoExt::ICallableInfo do
|
4
|
-
let(:klass)
|
4
|
+
let(:klass) do
|
5
5
|
Class.new do
|
6
6
|
include GirFFI::InfoExt::ICallableInfo
|
7
7
|
end
|
8
|
-
|
8
|
+
end
|
9
9
|
let(:callable_info) { klass.new }
|
10
10
|
|
11
11
|
describe '#argument_ffi_types' do
|
@@ -1,11 +1,11 @@
|
|
1
1
|
require 'gir_ffi_test_helper'
|
2
2
|
|
3
3
|
describe GirFFI::InfoExt::ICallbackInfo do
|
4
|
-
let(:klass)
|
4
|
+
let(:klass) do
|
5
5
|
Class.new do
|
6
6
|
include GirFFI::InfoExt::ICallbackInfo
|
7
7
|
end
|
8
|
-
|
8
|
+
end
|
9
9
|
let(:callback_info) { klass.new }
|
10
10
|
|
11
11
|
describe '#return_ffi_type' do
|
@@ -1,11 +1,11 @@
|
|
1
1
|
require 'gir_ffi_test_helper'
|
2
2
|
|
3
3
|
describe GirFFI::InfoExt::IFieldInfo do
|
4
|
-
let(:klass)
|
4
|
+
let(:klass) do
|
5
5
|
Class.new do
|
6
6
|
include GirFFI::InfoExt::IFieldInfo
|
7
7
|
end
|
8
|
-
|
8
|
+
end
|
9
9
|
let(:field_info) { klass.new }
|
10
10
|
describe '#layout_specification' do
|
11
11
|
it 'returns an array of name, typespec and offset' do
|
@@ -1,12 +1,12 @@
|
|
1
1
|
require 'gir_ffi_test_helper'
|
2
2
|
|
3
3
|
describe GirFFI::InfoExt::IFunctionInfo do
|
4
|
-
let(:klass)
|
4
|
+
let(:klass) do
|
5
5
|
Class.new do
|
6
6
|
include GirFFI::InfoExt::ICallableInfo
|
7
7
|
include GirFFI::InfoExt::IFunctionInfo
|
8
8
|
end
|
9
|
-
|
9
|
+
end
|
10
10
|
let(:function_info) { klass.new }
|
11
11
|
|
12
12
|
describe '#argument_ffi_types' do
|
@@ -3,12 +3,12 @@ require 'gir_ffi_test_helper'
|
|
3
3
|
GirFFI.setup :Regress
|
4
4
|
|
5
5
|
describe GirFFI::InfoExt::ISignalInfo do
|
6
|
-
let(:klass)
|
6
|
+
let(:klass) do
|
7
7
|
Class.new do
|
8
8
|
include GirFFI::InfoExt::ICallableInfo
|
9
9
|
include GirFFI::InfoExt::ISignalInfo
|
10
10
|
end
|
11
|
-
|
11
|
+
end
|
12
12
|
let(:signal_info) { klass.new }
|
13
13
|
|
14
14
|
describe '#arguments_to_gvalues' do
|
@@ -1,11 +1,11 @@
|
|
1
1
|
require 'gir_ffi_test_helper'
|
2
2
|
|
3
3
|
describe GirFFI::InfoExt::ITypeInfo do
|
4
|
-
let(:klass)
|
4
|
+
let(:klass) do
|
5
5
|
Class.new do
|
6
6
|
include GirFFI::InfoExt::ITypeInfo
|
7
7
|
end
|
8
|
-
|
8
|
+
end
|
9
9
|
|
10
10
|
let(:type_info) { klass.new }
|
11
11
|
let(:elmtype_info) { klass.new }
|
@@ -13,13 +13,13 @@ describe GirFFI::InfoExt::ITypeInfo do
|
|
13
13
|
let(:valtype_info) { klass.new }
|
14
14
|
let(:iface_info) { Object.new }
|
15
15
|
|
16
|
-
let(:callback_type_info)
|
16
|
+
let(:callback_type_info) do
|
17
17
|
get_introspection_data('Regress', 'test_callback').args[0].argument_type
|
18
|
-
|
19
|
-
let(:ghash_type_info)
|
18
|
+
end
|
19
|
+
let(:ghash_type_info) do
|
20
20
|
get_introspection_data('Regress',
|
21
21
|
'test_ghash_nested_everything_return').return_type
|
22
|
-
|
22
|
+
end
|
23
23
|
|
24
24
|
describe '#to_ffi_type' do
|
25
25
|
it 'returns an array with elements subtype and size for type :array' do
|
@@ -569,7 +569,7 @@ describe GirFFI::InfoExt::ITypeInfo do
|
|
569
569
|
end
|
570
570
|
end
|
571
571
|
|
572
|
-
describe '#
|
572
|
+
describe '#gtype' do
|
573
573
|
before do
|
574
574
|
allow(type_info).to receive(:tag).and_return tag
|
575
575
|
allow(type_info).to receive(:pointer?).and_return pointer?
|
@@ -580,7 +580,7 @@ describe GirFFI::InfoExt::ITypeInfo do
|
|
580
580
|
let(:pointer?) { false }
|
581
581
|
|
582
582
|
it 'equals the none type' do
|
583
|
-
GObject.type_name(type_info.
|
583
|
+
GObject.type_name(type_info.gtype).must_equal 'void'
|
584
584
|
end
|
585
585
|
end
|
586
586
|
|
@@ -589,7 +589,7 @@ describe GirFFI::InfoExt::ITypeInfo do
|
|
589
589
|
let(:pointer?) { false }
|
590
590
|
|
591
591
|
it 'equals the gboolean type' do
|
592
|
-
GObject.type_name(type_info.
|
592
|
+
GObject.type_name(type_info.gtype).must_equal 'gboolean'
|
593
593
|
end
|
594
594
|
end
|
595
595
|
|
@@ -598,7 +598,7 @@ describe GirFFI::InfoExt::ITypeInfo do
|
|
598
598
|
let(:pointer?) { false }
|
599
599
|
|
600
600
|
it 'equals the gint type' do
|
601
|
-
GObject.type_name(type_info.
|
601
|
+
GObject.type_name(type_info.gtype).must_equal 'gint'
|
602
602
|
end
|
603
603
|
end
|
604
604
|
|
@@ -607,7 +607,7 @@ describe GirFFI::InfoExt::ITypeInfo do
|
|
607
607
|
let(:pointer?) { false }
|
608
608
|
|
609
609
|
it 'equals the gint64 type' do
|
610
|
-
GObject.type_name(type_info.
|
610
|
+
GObject.type_name(type_info.gtype).must_equal 'gint64'
|
611
611
|
end
|
612
612
|
end
|
613
613
|
|
@@ -616,7 +616,7 @@ describe GirFFI::InfoExt::ITypeInfo do
|
|
616
616
|
let(:pointer?) { false }
|
617
617
|
|
618
618
|
it 'equals the guint64 type' do
|
619
|
-
GObject.type_name(type_info.
|
619
|
+
GObject.type_name(type_info.gtype).must_equal 'guint64'
|
620
620
|
end
|
621
621
|
end
|
622
622
|
|
@@ -625,7 +625,7 @@ describe GirFFI::InfoExt::ITypeInfo do
|
|
625
625
|
let(:pointer?) { true }
|
626
626
|
|
627
627
|
it 'equals the gchararray type' do
|
628
|
-
GObject.type_name(type_info.
|
628
|
+
GObject.type_name(type_info.gtype).must_equal 'gchararray'
|
629
629
|
end
|
630
630
|
end
|
631
631
|
|
@@ -634,7 +634,7 @@ describe GirFFI::InfoExt::ITypeInfo do
|
|
634
634
|
let(:pointer?) { true }
|
635
635
|
|
636
636
|
it 'equals the GHashTable type' do
|
637
|
-
GObject.type_name(type_info.
|
637
|
+
GObject.type_name(type_info.gtype).must_equal 'GHashTable'
|
638
638
|
end
|
639
639
|
end
|
640
640
|
|
@@ -649,7 +649,7 @@ describe GirFFI::InfoExt::ITypeInfo do
|
|
649
649
|
end
|
650
650
|
|
651
651
|
it 'equals the GArray type' do
|
652
|
-
GObject.type_name(type_info.
|
652
|
+
GObject.type_name(type_info.gtype).must_equal 'GArray'
|
653
653
|
end
|
654
654
|
end
|
655
655
|
|
@@ -660,7 +660,7 @@ describe GirFFI::InfoExt::ITypeInfo do
|
|
660
660
|
end
|
661
661
|
|
662
662
|
it 'equals the gpointer type' do
|
663
|
-
GObject.type_name(type_info.
|
663
|
+
GObject.type_name(type_info.gtype).must_equal 'gpointer'
|
664
664
|
end
|
665
665
|
end
|
666
666
|
|
@@ -675,7 +675,7 @@ describe GirFFI::InfoExt::ITypeInfo do
|
|
675
675
|
allow(elmtype_info).to receive(:tag).and_return :utf8
|
676
676
|
allow(elmtype_info).to receive(:pointer?).and_return true
|
677
677
|
|
678
|
-
GObject.type_name(type_info.
|
678
|
+
GObject.type_name(type_info.gtype).must_equal 'GStrv'
|
679
679
|
end
|
680
680
|
end
|
681
681
|
|
@@ -684,7 +684,7 @@ describe GirFFI::InfoExt::ITypeInfo do
|
|
684
684
|
allow(elmtype_info).to receive(:tag).and_return :filename
|
685
685
|
allow(elmtype_info).to receive(:pointer?).and_return true
|
686
686
|
|
687
|
-
GObject.type_name(type_info.
|
687
|
+
GObject.type_name(type_info.gtype).must_equal 'GStrv'
|
688
688
|
end
|
689
689
|
end
|
690
690
|
end
|