gir_ffi 0.6.4 → 0.6.5
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.
- data/History.txt +6 -0
- data/lib/ffi-glib/array.rb +12 -3
- data/lib/ffi-glib/list_methods.rb +4 -0
- data/lib/ffi-glib/ptr_array.rb +4 -0
- data/lib/ffi-glib/sized_array.rb +4 -0
- data/lib/ffi-glib/strv.rb +4 -1
- data/lib/gir_ffi/arg_helper.rb +5 -27
- data/lib/gir_ffi/class_base.rb +8 -0
- data/lib/gir_ffi/enum_base.rb +8 -0
- data/lib/gir_ffi/ffi_ext/pointer.rb +12 -0
- data/lib/gir_ffi/in_out_pointer.rb +3 -13
- data/lib/gir_ffi/in_pointer.rb +19 -1
- data/lib/gir_ffi/info_ext/i_enum_info.rb +0 -2
- data/lib/gir_ffi/info_ext/i_object_info.rb +1 -1
- data/lib/gir_ffi/info_ext/i_type_info.rb +3 -14
- data/lib/gir_ffi/module_base.rb +1 -0
- data/lib/gir_ffi/type_map.rb +6 -8
- data/lib/gir_ffi/version.rb +1 -1
- data/lib/gir_ffi/zero_terminated.rb +5 -1
- data/tasks/test.rake +1 -0
- data/test/ffi-glib/array_test.rb +41 -7
- data/test/ffi-glib/hash_table_test.rb +3 -3
- data/test/ffi-glib/list_test.rb +31 -3
- data/test/ffi-glib/ptr_array_test.rb +28 -0
- data/test/ffi-glib/s_list_test.rb +28 -0
- data/test/ffi-glib/sized_array_test.rb +30 -3
- data/test/ffi-glib/strv_test.rb +31 -0
- data/test/ffi-gobject_test.rb +2 -2
- data/test/gir_ffi/arg_helper_test.rb +3 -2
- data/test/gir_ffi/class_base_test.rb +62 -4
- data/test/gir_ffi/function_builder_test.rb +1 -1
- data/test/gir_ffi/in_pointer_test.rb +17 -0
- data/test/gir_ffi/info_ext/i_object_info_test.rb +14 -0
- data/test/gir_ffi/info_ext/i_type_info_test.rb +79 -25
- data/test/gir_ffi/type_map_test.rb +15 -0
- data/test/gir_ffi/zero_terminated_test.rb +28 -0
- data/test/integration/generated_gimarshallingtests_test.rb +90 -75
- data/test/integration/generated_pango_test.rb +1 -1
- data/test/integration/generated_regress_test.rb +64 -39
- metadata +8 -18
@@ -8,6 +8,7 @@ describe GirFFI::InfoExt::ITypeInfo do
|
|
8
8
|
let(:elmtype_info) { klass.new }
|
9
9
|
let(:keytype_info) { klass.new }
|
10
10
|
let(:valtype_info) { klass.new }
|
11
|
+
let(:iface_info) { Object.new }
|
11
12
|
|
12
13
|
describe "#to_ffitype" do
|
13
14
|
it "returns an array with elements subtype and size for type :array" do
|
@@ -21,11 +22,25 @@ describe GirFFI::InfoExt::ITypeInfo do
|
|
21
22
|
result = type_info.to_ffitype
|
22
23
|
assert_equal [:foo, 2], result
|
23
24
|
end
|
25
|
+
|
26
|
+
describe "for an :interface type" do
|
27
|
+
before do
|
28
|
+
stub(type_info).interface { iface_info }
|
29
|
+
stub(type_info).tag { :interface }
|
30
|
+
stub(type_info).pointer? { false }
|
31
|
+
end
|
32
|
+
|
33
|
+
it "maps a the interface's ffitype" do
|
34
|
+
stub(iface_info).to_ffitype { :foo }
|
35
|
+
|
36
|
+
type_info.to_ffitype.must_equal :foo
|
37
|
+
end
|
38
|
+
end
|
24
39
|
end
|
25
40
|
|
26
41
|
describe "#element_type" do
|
27
42
|
it "returns the element type for lists" do
|
28
|
-
|
43
|
+
stub(elmtype_info).tag { :foo }
|
29
44
|
mock(elmtype_info).pointer? { false }
|
30
45
|
|
31
46
|
mock(type_info).tag {:glist}
|
@@ -36,9 +51,9 @@ describe GirFFI::InfoExt::ITypeInfo do
|
|
36
51
|
end
|
37
52
|
|
38
53
|
it "returns the key and value types for ghashes" do
|
39
|
-
|
54
|
+
stub(keytype_info).tag { :foo }
|
40
55
|
mock(keytype_info).pointer? { false }
|
41
|
-
|
56
|
+
stub(valtype_info).tag { :bar }
|
42
57
|
mock(valtype_info).pointer? { false }
|
43
58
|
|
44
59
|
mock(type_info).tag {:ghash}
|
@@ -149,7 +164,7 @@ describe GirFFI::InfoExt::ITypeInfo do
|
|
149
164
|
describe "#tag_or_class_name" do
|
150
165
|
describe "for the simple type :foo" do
|
151
166
|
it "returns the string ':foo'" do
|
152
|
-
|
167
|
+
stub(type_info).tag { :foo }
|
153
168
|
mock(type_info).pointer? { false }
|
154
169
|
|
155
170
|
assert_equal ":foo", type_info.tag_or_class_name
|
@@ -158,20 +173,39 @@ describe GirFFI::InfoExt::ITypeInfo do
|
|
158
173
|
|
159
174
|
describe "for :utf8" do
|
160
175
|
it "returns the string ':utf8'" do
|
161
|
-
|
176
|
+
stub(type_info).tag { :utf8 }
|
162
177
|
mock(type_info).pointer? { true }
|
163
178
|
|
164
179
|
assert_equal ":utf8", type_info.tag_or_class_name
|
165
180
|
end
|
166
181
|
end
|
167
182
|
|
168
|
-
describe "for an interface
|
169
|
-
|
170
|
-
|
171
|
-
|
183
|
+
describe "for an interface named Foo::Bar" do
|
184
|
+
let(:interface) { Object.new }
|
185
|
+
|
186
|
+
before do
|
187
|
+
stub(type_info).tag { :interface }
|
188
|
+
stub(type_info).interface { iface_info }
|
172
189
|
mock(type_info).pointer? { false }
|
190
|
+
stub(interface).inspect { "Foo::Bar" }
|
173
191
|
|
174
|
-
|
192
|
+
mock(GirFFI::Builder).build_class(iface_info) { interface }
|
193
|
+
end
|
194
|
+
|
195
|
+
context "when the interface type is :enum" do
|
196
|
+
it "returns the interface's full class name" do
|
197
|
+
stub(iface_info).info_type { :enum }
|
198
|
+
|
199
|
+
assert_equal "Foo::Bar", type_info.tag_or_class_name
|
200
|
+
end
|
201
|
+
end
|
202
|
+
|
203
|
+
context "when the interface type is :object" do
|
204
|
+
it "returns the string [:pointer, Foo::Bar]" do
|
205
|
+
stub(iface_info).info_type { :object }
|
206
|
+
|
207
|
+
assert_equal "[:pointer, Foo::Bar]", type_info.tag_or_class_name
|
208
|
+
end
|
175
209
|
end
|
176
210
|
end
|
177
211
|
|
@@ -188,7 +222,7 @@ describe GirFFI::InfoExt::ITypeInfo do
|
|
188
222
|
describe "#tag_or_class" do
|
189
223
|
describe "for a simple type" do
|
190
224
|
it "returns the type's tag" do
|
191
|
-
|
225
|
+
stub(type_info).tag { :foo }
|
192
226
|
mock(type_info).pointer? { false }
|
193
227
|
|
194
228
|
type_info.tag_or_class.must_equal :foo
|
@@ -197,7 +231,7 @@ describe GirFFI::InfoExt::ITypeInfo do
|
|
197
231
|
|
198
232
|
describe "for utf8 strings" do
|
199
233
|
it "returns the tag :utf8" do
|
200
|
-
|
234
|
+
stub(type_info).tag { :utf8 }
|
201
235
|
mock(type_info).pointer? { true }
|
202
236
|
|
203
237
|
type_info.tag_or_class.must_equal :utf8
|
@@ -206,7 +240,7 @@ describe GirFFI::InfoExt::ITypeInfo do
|
|
206
240
|
|
207
241
|
describe "for filename strings" do
|
208
242
|
it "returns the tag :filename" do
|
209
|
-
|
243
|
+
stub(type_info).tag { :filename }
|
210
244
|
mock(type_info).pointer? { true }
|
211
245
|
|
212
246
|
type_info.tag_or_class.must_equal :filename
|
@@ -214,23 +248,44 @@ describe GirFFI::InfoExt::ITypeInfo do
|
|
214
248
|
end
|
215
249
|
|
216
250
|
describe "for an interface class" do
|
217
|
-
|
218
|
-
interface_info = Object.new
|
219
|
-
interface = Object.new
|
251
|
+
let(:interface) { Object.new }
|
220
252
|
|
221
|
-
|
222
|
-
|
253
|
+
before do
|
254
|
+
stub(type_info).tag { :interface }
|
255
|
+
stub(type_info).interface { iface_info }
|
223
256
|
mock(type_info).pointer? { false }
|
224
257
|
|
225
|
-
mock(GirFFI::Builder).build_class(
|
258
|
+
mock(GirFFI::Builder).build_class(iface_info) { interface }
|
259
|
+
end
|
260
|
+
|
261
|
+
context "when the interface type is :enum" do
|
262
|
+
it "returns the built interface module" do
|
263
|
+
stub(iface_info).info_type { :enum }
|
264
|
+
|
265
|
+
type_info.tag_or_class.must_equal interface
|
266
|
+
end
|
267
|
+
end
|
268
|
+
|
269
|
+
context "when the interface type is :object" do
|
270
|
+
it "returns an array with elements :pointer and built interface class" do
|
271
|
+
stub(iface_info).info_type { :object }
|
226
272
|
|
227
|
-
|
273
|
+
type_info.tag_or_class.must_equal [:pointer, interface]
|
274
|
+
end
|
275
|
+
end
|
276
|
+
|
277
|
+
context "when the interface type is :struct" do
|
278
|
+
it "returns the built interface class" do
|
279
|
+
stub(iface_info).info_type { :struct }
|
280
|
+
|
281
|
+
type_info.tag_or_class.must_equal interface
|
282
|
+
end
|
228
283
|
end
|
229
284
|
end
|
230
285
|
|
231
286
|
describe "for a pointer to simple type :foo" do
|
232
287
|
it "returns [:pointer, :foo]" do
|
233
|
-
|
288
|
+
stub(type_info).tag { :foo }
|
234
289
|
mock(type_info).pointer? { true }
|
235
290
|
|
236
291
|
type_info.tag_or_class.must_equal [:pointer, :foo]
|
@@ -248,22 +303,21 @@ describe GirFFI::InfoExt::ITypeInfo do
|
|
248
303
|
end
|
249
304
|
|
250
305
|
describe "#to_callback_ffitype" do
|
251
|
-
let(:iface) { Object.new }
|
252
306
|
describe "for an :interface argument" do
|
253
307
|
before do
|
254
|
-
stub(type_info).interface {
|
308
|
+
stub(type_info).interface { iface_info }
|
255
309
|
stub(type_info).tag { :interface }
|
256
310
|
stub(type_info).pointer? { false }
|
257
311
|
end
|
258
312
|
|
259
313
|
it "correctly maps a :union argument to :pointer" do
|
260
|
-
stub(
|
314
|
+
stub(iface_info).info_type { :union }
|
261
315
|
|
262
316
|
type_info.to_callback_ffitype.must_equal :pointer
|
263
317
|
end
|
264
318
|
|
265
319
|
it "correctly maps a :flags argument to :int32" do
|
266
|
-
stub(
|
320
|
+
stub(iface_info).info_type { :flags }
|
267
321
|
|
268
322
|
type_info.to_callback_ffitype.must_equal :int32
|
269
323
|
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'gir_ffi_test_helper'
|
2
|
+
|
3
|
+
describe GirFFI::TypeMap do
|
4
|
+
describe ".type_specification_to_ffitype" do
|
5
|
+
it "returns the nested FFI::Enum for an Enum module" do
|
6
|
+
GirFFI::TypeMap.type_specification_to_ffitype(GLib::DateMonth).
|
7
|
+
must_equal GLib::DateMonth::Enum
|
8
|
+
end
|
9
|
+
|
10
|
+
it "returns the nested FFI::Struct for an Struct module" do
|
11
|
+
GirFFI::TypeMap.type_specification_to_ffitype(GObject::EnumValue).
|
12
|
+
must_equal GObject::EnumValue::Struct
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -51,6 +51,34 @@ describe GirFFI::ZeroTerminated do
|
|
51
51
|
|
52
52
|
end
|
53
53
|
|
54
|
+
describe "#==" do
|
55
|
+
it "returns true when comparing to an array with the same elements" do
|
56
|
+
zero_terminated = GirFFI::ZeroTerminated.from :int32, [1, 2, 3]
|
57
|
+
|
58
|
+
(zero_terminated == [1, 2, 3]).must_equal true
|
59
|
+
end
|
60
|
+
|
61
|
+
it "returns false when comparing to an array with different elements" do
|
62
|
+
zero_terminated = GirFFI::ZeroTerminated.from :int32, [1, 2, 3]
|
63
|
+
|
64
|
+
(zero_terminated == [1, 2]).must_equal false
|
65
|
+
end
|
66
|
+
|
67
|
+
it "returns true when comparing to a zero-terminated array with the same elements" do
|
68
|
+
zero_terminated = GirFFI::ZeroTerminated.from :int32, [1, 2, 3]
|
69
|
+
other = GirFFI::ZeroTerminated.from :int32, [1, 2, 3]
|
70
|
+
|
71
|
+
(zero_terminated == other).must_equal true
|
72
|
+
end
|
73
|
+
|
74
|
+
it "returns false when comparing to a zero-terminated array with different elements" do
|
75
|
+
zero_terminated = GirFFI::ZeroTerminated.from :int32, [1, 2, 3]
|
76
|
+
other = GirFFI::ZeroTerminated.from :int32, [1, 2]
|
77
|
+
|
78
|
+
(zero_terminated == other).must_equal false
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
54
82
|
it "includes Enumerable" do
|
55
83
|
GirFFI::ZeroTerminated.must_include Enumerable
|
56
84
|
end
|
@@ -34,9 +34,9 @@ describe GIMarshallingTests do
|
|
34
34
|
end
|
35
35
|
|
36
36
|
it "has a writable field g_strv" do
|
37
|
-
|
37
|
+
@bx.g_strv.must_be :==, []
|
38
38
|
@bx.g_strv = ["foo", "bar"]
|
39
|
-
|
39
|
+
@bx.g_strv.must_be :==, ["foo", "bar"]
|
40
40
|
end
|
41
41
|
end
|
42
42
|
|
@@ -58,7 +58,7 @@ describe GIMarshallingTests do
|
|
58
58
|
it "has a working function #returnv" do
|
59
59
|
res = GIMarshallingTests::BoxedStruct.returnv
|
60
60
|
assert_equal 42, res.long_
|
61
|
-
|
61
|
+
res.g_strv.must_be :==, ["0", "1", "2"]
|
62
62
|
end
|
63
63
|
end
|
64
64
|
|
@@ -244,7 +244,7 @@ describe GIMarshallingTests do
|
|
244
244
|
ob = GIMarshallingTests::Object.new 42
|
245
245
|
res = GIMarshallingTests::Object.full_inout ob
|
246
246
|
assert_instance_of GIMarshallingTests::Object, res
|
247
|
-
|
247
|
+
ob.wont_equal res
|
248
248
|
end
|
249
249
|
|
250
250
|
it "has a working function #full_out" do
|
@@ -265,7 +265,7 @@ describe GIMarshallingTests do
|
|
265
265
|
ob = GIMarshallingTests::Object.new 42
|
266
266
|
res = GIMarshallingTests::Object.none_inout ob
|
267
267
|
assert_instance_of GIMarshallingTests::Object, res
|
268
|
-
|
268
|
+
ob.wont_equal res
|
269
269
|
end
|
270
270
|
|
271
271
|
it "has a working function #none_out" do
|
@@ -335,17 +335,17 @@ describe GIMarshallingTests do
|
|
335
335
|
|
336
336
|
it "has a working method #method_array_inout" do
|
337
337
|
res = instance.method_array_inout [-1, 0, 1, 2]
|
338
|
-
|
338
|
+
res.must_be :==, [-2, -1, 0, 1, 2]
|
339
339
|
end
|
340
340
|
|
341
341
|
it "has a working method #method_array_out" do
|
342
342
|
res = instance.method_array_out
|
343
|
-
|
343
|
+
res.must_be :==, [-1, 0, 1, 2]
|
344
344
|
end
|
345
345
|
|
346
346
|
it "has a working method #method_array_return" do
|
347
347
|
res = instance.method_array_return
|
348
|
-
|
348
|
+
res.must_be :==, [-1, 0, 1, 2]
|
349
349
|
end
|
350
350
|
|
351
351
|
it "has a working method #method_int8_arg_and_out_callee" do
|
@@ -665,7 +665,7 @@ describe GIMarshallingTests do
|
|
665
665
|
|
666
666
|
it "has a working function #array_fixed_inout" do
|
667
667
|
res = GIMarshallingTests.array_fixed_inout [-1, 0, 1, 2]
|
668
|
-
|
668
|
+
res.must_be :==, [2, 1, 0, -1]
|
669
669
|
end
|
670
670
|
|
671
671
|
it "has a working function #array_fixed_int_in" do
|
@@ -675,12 +675,12 @@ describe GIMarshallingTests do
|
|
675
675
|
|
676
676
|
it "has a working function #array_fixed_int_return" do
|
677
677
|
res = GIMarshallingTests.array_fixed_int_return
|
678
|
-
|
678
|
+
res.must_be :==, [-1, 0, 1, 2]
|
679
679
|
end
|
680
680
|
|
681
681
|
it "has a working function #array_fixed_out" do
|
682
682
|
res = GIMarshallingTests.array_fixed_out
|
683
|
-
|
683
|
+
res.must_be :==, [-1, 0, 1, 2]
|
684
684
|
end
|
685
685
|
|
686
686
|
it "has a working function #array_fixed_out_struct" do
|
@@ -695,7 +695,7 @@ describe GIMarshallingTests do
|
|
695
695
|
|
696
696
|
it "has a working function #array_fixed_short_return" do
|
697
697
|
res = GIMarshallingTests.array_fixed_short_return
|
698
|
-
|
698
|
+
res.must_be :==, [-1, 0, 1, 2]
|
699
699
|
end
|
700
700
|
|
701
701
|
it "has a working function #array_gvariant_container_in" do
|
@@ -761,39 +761,42 @@ describe GIMarshallingTests do
|
|
761
761
|
|
762
762
|
it "has a working function #array_inout" do
|
763
763
|
res = GIMarshallingTests.array_inout [-1, 0, 1, 2]
|
764
|
-
|
764
|
+
res.must_be :==, [-2, -1, 0, 1, 2]
|
765
765
|
end
|
766
766
|
|
767
767
|
it "has a working function #array_inout_etc" do
|
768
768
|
arr, sum = GIMarshallingTests.array_inout_etc 42, [-1, 0, 1, 2], 24
|
769
|
-
arr.
|
769
|
+
arr.must_be :==, [42, -1, 0, 1, 24]
|
770
770
|
sum.must_equal 42 + 24
|
771
771
|
end
|
772
772
|
|
773
773
|
it "has a working function #array_out" do
|
774
774
|
res = GIMarshallingTests.array_out
|
775
|
-
|
775
|
+
res.must_be :==, [-1, 0, 1, 2]
|
776
776
|
end
|
777
777
|
|
778
778
|
it "has a working function #array_out_etc" do
|
779
779
|
arr, sum = GIMarshallingTests.array_out_etc 42, 24
|
780
|
-
arr.
|
780
|
+
arr.must_be :==, [42, 0, 1, 24]
|
781
781
|
sum.must_equal 42 + 24
|
782
782
|
end
|
783
783
|
|
784
784
|
it "has a working function #array_return" do
|
785
785
|
res = GIMarshallingTests.array_return
|
786
|
-
|
786
|
+
res.must_be :==, [-1, 0, 1, 2]
|
787
787
|
end
|
788
788
|
|
789
789
|
it "has a working function #array_return_etc" do
|
790
790
|
arr, sum = GIMarshallingTests.array_return_etc 42, 24
|
791
|
-
arr.
|
791
|
+
arr.must_be :==, [42, 0, 1, 24]
|
792
792
|
sum.must_equal 42 + 24
|
793
793
|
end
|
794
794
|
|
795
795
|
it "has a working function #array_simple_struct_in" do
|
796
|
-
|
796
|
+
arr = [1, 2, 3].map { |val|
|
797
|
+
GIMarshallingTests::SimpleStruct.new.tap { |struct| struct.long_ = val }
|
798
|
+
}
|
799
|
+
GIMarshallingTests.array_simple_struct_in arr
|
797
800
|
end
|
798
801
|
|
799
802
|
it "has a working function #array_string_in" do
|
@@ -817,7 +820,11 @@ describe GIMarshallingTests do
|
|
817
820
|
end
|
818
821
|
|
819
822
|
it "has a working function #array_struct_value_in" do
|
820
|
-
skip
|
823
|
+
skip unless get_introspection_data 'GIMarshallingTests', 'array_struct_value_in'
|
824
|
+
arr = [1, 2, 3].map { |val|
|
825
|
+
GIMarshallingTests::BoxedStruct.new.tap { |struct| struct.long_ = val }
|
826
|
+
}
|
827
|
+
GIMarshallingTests.array_struct_value_in arr
|
821
828
|
end
|
822
829
|
|
823
830
|
it "has a working function #array_uint8_in" do
|
@@ -833,22 +840,22 @@ describe GIMarshallingTests do
|
|
833
840
|
|
834
841
|
it "has a working function #array_zero_terminated_inout" do
|
835
842
|
res = GIMarshallingTests.array_zero_terminated_inout ["0", "1", "2"]
|
836
|
-
res.
|
843
|
+
res.must_be :==, ["-1", "0", "1", "2"]
|
837
844
|
end
|
838
845
|
|
839
846
|
it "has a working function #array_zero_terminated_out" do
|
840
847
|
res = GIMarshallingTests.array_zero_terminated_out
|
841
|
-
|
848
|
+
res.must_be :==, ["0", "1", "2"]
|
842
849
|
end
|
843
850
|
|
844
851
|
it "has a working function #array_zero_terminated_return" do
|
845
852
|
res = GIMarshallingTests.array_zero_terminated_return
|
846
|
-
|
853
|
+
res.must_be :==, ["0", "1", "2"]
|
847
854
|
end
|
848
855
|
|
849
856
|
it "has a working function #array_zero_terminated_return_null" do
|
850
857
|
res = GIMarshallingTests.array_zero_terminated_return_null
|
851
|
-
res.
|
858
|
+
res.must_be :==, []
|
852
859
|
end
|
853
860
|
|
854
861
|
it "has a working function #array_zero_terminated_return_struct" do
|
@@ -911,7 +918,7 @@ describe GIMarshallingTests do
|
|
911
918
|
it "has a working function #boxed_struct_returnv" do
|
912
919
|
res = GIMarshallingTests.boxed_struct_returnv
|
913
920
|
assert_equal 42, res.long_
|
914
|
-
|
921
|
+
res.g_strv.must_be :==, ["0", "1", "2"]
|
915
922
|
end
|
916
923
|
|
917
924
|
it "has a working function #bytearray_full_return" do
|
@@ -1053,7 +1060,7 @@ describe GIMarshallingTests do
|
|
1053
1060
|
|
1054
1061
|
it "has a working function #garray_int_none_return" do
|
1055
1062
|
arr = GIMarshallingTests.garray_int_none_return
|
1056
|
-
|
1063
|
+
arr.must_be :==, [-1, 0, 1, 2]
|
1057
1064
|
end
|
1058
1065
|
|
1059
1066
|
it "has a working function #garray_uint64_none_in" do
|
@@ -1065,45 +1072,45 @@ describe GIMarshallingTests do
|
|
1065
1072
|
it "has a working function #garray_uint64_none_return" do
|
1066
1073
|
skip unless get_introspection_data 'GIMarshallingTests', 'garray_uint64_none_return'
|
1067
1074
|
res = GIMarshallingTests.garray_uint64_none_return
|
1068
|
-
res.
|
1075
|
+
res.must_be :==, [0, 0xffff_ffff_ffff_ffff]
|
1069
1076
|
end
|
1070
1077
|
|
1071
1078
|
it "has a working function #garray_utf8_container_inout" do
|
1072
1079
|
res = GIMarshallingTests.garray_utf8_container_inout ["0", "1", "2"]
|
1073
|
-
res.
|
1080
|
+
res.must_be :==, ["-2", "-1", "0", "1"]
|
1074
1081
|
end
|
1075
1082
|
|
1076
1083
|
it "has a working function #garray_utf8_container_out" do
|
1077
1084
|
res = GIMarshallingTests.garray_utf8_container_out
|
1078
|
-
|
1085
|
+
res.must_be :==, ["0", "1", "2"]
|
1079
1086
|
end
|
1080
1087
|
|
1081
1088
|
it "has a working function #garray_utf8_container_return" do
|
1082
1089
|
res = GIMarshallingTests.garray_utf8_container_return
|
1083
|
-
|
1090
|
+
res.must_be :==, ["0", "1", "2"]
|
1084
1091
|
end
|
1085
1092
|
|
1086
1093
|
it "has a working function #garray_utf8_full_inout" do
|
1087
1094
|
arr = ["0", "1", "2"]
|
1088
1095
|
res = GIMarshallingTests.garray_utf8_full_inout arr
|
1089
|
-
|
1096
|
+
res.must_be :==, ["-2", "-1", "0", "1"]
|
1090
1097
|
end
|
1091
1098
|
|
1092
1099
|
it "has a working function #garray_utf8_full_out" do
|
1093
1100
|
res = GIMarshallingTests.garray_utf8_full_out
|
1094
|
-
|
1101
|
+
res.must_be :==, ["0", "1", "2"]
|
1095
1102
|
end
|
1096
1103
|
|
1097
1104
|
it "has a working function #garray_utf8_full_out_caller_allocated" do
|
1098
1105
|
skip unless get_introspection_data 'GIMarshallingTests',
|
1099
1106
|
'garray_utf8_full_out_caller_allocated'
|
1100
1107
|
res = GIMarshallingTests.garray_utf8_full_out_caller_allocated
|
1101
|
-
|
1108
|
+
res.must_be :==, ["0", "1", "2"]
|
1102
1109
|
end
|
1103
1110
|
|
1104
1111
|
it "has a working function #garray_utf8_full_return" do
|
1105
1112
|
res = GIMarshallingTests.garray_utf8_full_return
|
1106
|
-
|
1113
|
+
res.must_be :==, ["0", "1", "2"]
|
1107
1114
|
end
|
1108
1115
|
|
1109
1116
|
it "has a working function #garray_utf8_none_in" do
|
@@ -1115,17 +1122,17 @@ describe GIMarshallingTests do
|
|
1115
1122
|
it "has a working function #garray_utf8_none_inout" do
|
1116
1123
|
arr = ["0", "1", "2"]
|
1117
1124
|
res = GIMarshallingTests.garray_utf8_none_inout arr
|
1118
|
-
|
1125
|
+
res.must_be :==, ["-2", "-1", "0", "1"]
|
1119
1126
|
end
|
1120
1127
|
|
1121
1128
|
it "has a working function #garray_utf8_none_out" do
|
1122
1129
|
res = GIMarshallingTests.garray_utf8_none_out
|
1123
|
-
|
1130
|
+
res.must_be :==, ["0", "1", "2"]
|
1124
1131
|
end
|
1125
1132
|
|
1126
1133
|
it "has a working function #garray_utf8_none_return" do
|
1127
1134
|
res = GIMarshallingTests.garray_utf8_none_return
|
1128
|
-
|
1135
|
+
res.must_be :==, ["0", "1", "2"]
|
1129
1136
|
end
|
1130
1137
|
|
1131
1138
|
it "has a working function #gbytes_full_return" do
|
@@ -1287,7 +1294,7 @@ describe GIMarshallingTests do
|
|
1287
1294
|
|
1288
1295
|
it "has a working function #glist_int_none_return" do
|
1289
1296
|
res = GIMarshallingTests.glist_int_none_return
|
1290
|
-
|
1297
|
+
res.must_be :==, [-1, 0, 1, 2]
|
1291
1298
|
end
|
1292
1299
|
|
1293
1300
|
it "has a working function #glist_uint32_none_in" do
|
@@ -1299,37 +1306,37 @@ describe GIMarshallingTests do
|
|
1299
1306
|
it "has a working function #glist_uint32_none_return" do
|
1300
1307
|
skip unless get_introspection_data 'GIMarshallingTests', 'glist_uint32_none_return'
|
1301
1308
|
res = GIMarshallingTests.glist_uint32_none_return
|
1302
|
-
res.
|
1309
|
+
res.must_be :==, [0, 0xffff_ffff]
|
1303
1310
|
end
|
1304
1311
|
|
1305
1312
|
it "has a working function #glist_utf8_container_inout" do
|
1306
1313
|
res = GIMarshallingTests.glist_utf8_container_inout ["0", "1", "2"]
|
1307
|
-
|
1314
|
+
res.must_be :==, ["-2", "-1", "0", "1"]
|
1308
1315
|
end
|
1309
1316
|
|
1310
1317
|
it "has a working function #glist_utf8_container_out" do
|
1311
1318
|
res = GIMarshallingTests.glist_utf8_container_out
|
1312
|
-
|
1319
|
+
res.must_be :==, ["0", "1", "2"]
|
1313
1320
|
end
|
1314
1321
|
|
1315
1322
|
it "has a working function #glist_utf8_container_return" do
|
1316
1323
|
res = GIMarshallingTests.glist_utf8_container_return
|
1317
|
-
|
1324
|
+
res.must_be :==, ["0", "1", "2"]
|
1318
1325
|
end
|
1319
1326
|
|
1320
1327
|
it "has a working function #glist_utf8_full_inout" do
|
1321
1328
|
res = GIMarshallingTests.glist_utf8_full_inout ["0", "1", "2"]
|
1322
|
-
|
1329
|
+
res.must_be :==, ["-2", "-1", "0", "1"]
|
1323
1330
|
end
|
1324
1331
|
|
1325
1332
|
it "has a working function #glist_utf8_full_out" do
|
1326
1333
|
res = GIMarshallingTests.glist_utf8_full_out
|
1327
|
-
|
1334
|
+
res.must_be :==, ["0", "1", "2"]
|
1328
1335
|
end
|
1329
1336
|
|
1330
1337
|
it "has a working function #glist_utf8_full_return" do
|
1331
1338
|
res = GIMarshallingTests.glist_utf8_full_return
|
1332
|
-
|
1339
|
+
res.must_be :==, ["0", "1", "2"]
|
1333
1340
|
end
|
1334
1341
|
|
1335
1342
|
it "has a working function #glist_utf8_none_in" do
|
@@ -1338,47 +1345,47 @@ describe GIMarshallingTests do
|
|
1338
1345
|
|
1339
1346
|
it "has a working function #glist_utf8_none_inout" do
|
1340
1347
|
res = GIMarshallingTests.glist_utf8_none_inout ["0", "1", "2"]
|
1341
|
-
|
1348
|
+
res.must_be :==, ["-2", "-1", "0", "1"]
|
1342
1349
|
end
|
1343
1350
|
|
1344
1351
|
it "has a working function #glist_utf8_none_out" do
|
1345
1352
|
res = GIMarshallingTests.glist_utf8_none_out
|
1346
|
-
|
1353
|
+
res.must_be :==, ["0", "1", "2"]
|
1347
1354
|
end
|
1348
1355
|
|
1349
1356
|
it "has a working function #glist_utf8_none_return" do
|
1350
1357
|
res = GIMarshallingTests.glist_utf8_none_return
|
1351
|
-
|
1358
|
+
res.must_be :==, ["0", "1", "2"]
|
1352
1359
|
end
|
1353
1360
|
|
1354
1361
|
it "has a working function #gptrarray_utf8_container_inout" do
|
1355
1362
|
res = GIMarshallingTests.gptrarray_utf8_container_inout ["0", "1", "2"]
|
1356
|
-
res.
|
1363
|
+
res.must_be :==, ["-2", "-1", "0", "1"]
|
1357
1364
|
end
|
1358
1365
|
|
1359
1366
|
it "has a working function #gptrarray_utf8_container_out" do
|
1360
1367
|
res = GIMarshallingTests.gptrarray_utf8_container_out
|
1361
|
-
res.
|
1368
|
+
res.must_be :==, ["0", "1", "2"]
|
1362
1369
|
end
|
1363
1370
|
|
1364
1371
|
it "has a working function #gptrarray_utf8_container_return" do
|
1365
1372
|
res = GIMarshallingTests.gptrarray_utf8_container_return
|
1366
|
-
res.
|
1373
|
+
res.must_be :==, ["0", "1", "2"]
|
1367
1374
|
end
|
1368
1375
|
|
1369
1376
|
it "has a working function #gptrarray_utf8_full_inout" do
|
1370
1377
|
res = GIMarshallingTests.gptrarray_utf8_full_inout ["0", "1", "2"]
|
1371
|
-
res.
|
1378
|
+
res.must_be :==, ["-2", "-1", "0", "1"]
|
1372
1379
|
end
|
1373
1380
|
|
1374
1381
|
it "has a working function #gptrarray_utf8_full_out" do
|
1375
1382
|
res = GIMarshallingTests.gptrarray_utf8_full_out
|
1376
|
-
res.
|
1383
|
+
res.must_be :==, ["0", "1", "2"]
|
1377
1384
|
end
|
1378
1385
|
|
1379
1386
|
it "has a working function #gptrarray_utf8_full_return" do
|
1380
1387
|
res = GIMarshallingTests.gptrarray_utf8_full_return
|
1381
|
-
res.
|
1388
|
+
res.must_be :==, ["0", "1", "2"]
|
1382
1389
|
end
|
1383
1390
|
|
1384
1391
|
it "has a working function #gptrarray_utf8_none_in" do
|
@@ -1387,17 +1394,17 @@ describe GIMarshallingTests do
|
|
1387
1394
|
|
1388
1395
|
it "has a working function #gptrarray_utf8_none_inout" do
|
1389
1396
|
res = GIMarshallingTests.gptrarray_utf8_none_inout ["0", "1", "2"]
|
1390
|
-
res.
|
1397
|
+
res.must_be :==, ["-2", "-1", "0", "1"]
|
1391
1398
|
end
|
1392
1399
|
|
1393
1400
|
it "has a working function #gptrarray_utf8_none_out" do
|
1394
1401
|
res = GIMarshallingTests.gptrarray_utf8_none_out
|
1395
|
-
res.
|
1402
|
+
res.must_be :==, ["0", "1", "2"]
|
1396
1403
|
end
|
1397
1404
|
|
1398
1405
|
it "has a working function #gptrarray_utf8_none_return" do
|
1399
1406
|
res = GIMarshallingTests.gptrarray_utf8_none_return
|
1400
|
-
res.
|
1407
|
+
res.must_be :==, ["0", "1", "2"]
|
1401
1408
|
end
|
1402
1409
|
|
1403
1410
|
it "has a working function #gslist_int_none_in" do
|
@@ -1407,37 +1414,37 @@ describe GIMarshallingTests do
|
|
1407
1414
|
|
1408
1415
|
it "has a working function #gslist_int_none_return" do
|
1409
1416
|
res = GIMarshallingTests.gslist_int_none_return
|
1410
|
-
|
1417
|
+
res.must_be :==, [-1, 0, 1, 2]
|
1411
1418
|
end
|
1412
1419
|
|
1413
1420
|
it "has a working function #gslist_utf8_container_inout" do
|
1414
1421
|
res = GIMarshallingTests.gslist_utf8_container_inout ["0", "1", "2"]
|
1415
|
-
|
1422
|
+
res.must_be :==, ["-2", "-1", "0", "1"]
|
1416
1423
|
end
|
1417
1424
|
|
1418
1425
|
it "has a working function #gslist_utf8_container_out" do
|
1419
1426
|
res = GIMarshallingTests.gslist_utf8_container_out
|
1420
|
-
|
1427
|
+
res.must_be :==, ["0", "1", "2"]
|
1421
1428
|
end
|
1422
1429
|
|
1423
1430
|
it "has a working function #gslist_utf8_container_return" do
|
1424
1431
|
res = GIMarshallingTests.gslist_utf8_container_return
|
1425
|
-
|
1432
|
+
res.must_be :==, ["0", "1", "2"]
|
1426
1433
|
end
|
1427
1434
|
|
1428
1435
|
it "has a working function #gslist_utf8_full_inout" do
|
1429
1436
|
res = GIMarshallingTests.gslist_utf8_full_inout ["0", "1", "2"]
|
1430
|
-
|
1437
|
+
res.must_be :==, ["-2", "-1", "0", "1"]
|
1431
1438
|
end
|
1432
1439
|
|
1433
1440
|
it "has a working function #gslist_utf8_full_out" do
|
1434
1441
|
res = GIMarshallingTests.gslist_utf8_full_out
|
1435
|
-
|
1442
|
+
res.must_be :==, ["0", "1", "2"]
|
1436
1443
|
end
|
1437
1444
|
|
1438
1445
|
it "has a working function #gslist_utf8_full_return" do
|
1439
1446
|
res = GIMarshallingTests.gslist_utf8_full_return
|
1440
|
-
|
1447
|
+
res.must_be :==, ["0", "1", "2"]
|
1441
1448
|
end
|
1442
1449
|
|
1443
1450
|
it "has a working function #gslist_utf8_none_in" do
|
@@ -1447,17 +1454,17 @@ describe GIMarshallingTests do
|
|
1447
1454
|
|
1448
1455
|
it "has a working function #gslist_utf8_none_inout" do
|
1449
1456
|
res = GIMarshallingTests.gslist_utf8_none_inout ["0", "1", "2"]
|
1450
|
-
|
1457
|
+
res.must_be :==, ["-2", "-1", "0", "1"]
|
1451
1458
|
end
|
1452
1459
|
|
1453
1460
|
it "has a working function #gslist_utf8_none_out" do
|
1454
1461
|
res = GIMarshallingTests.gslist_utf8_none_out
|
1455
|
-
|
1462
|
+
res.must_be :==, ["0", "1", "2"]
|
1456
1463
|
end
|
1457
1464
|
|
1458
1465
|
it "has a working function #gslist_utf8_none_return" do
|
1459
1466
|
res = GIMarshallingTests.gslist_utf8_none_return
|
1460
|
-
|
1467
|
+
res.must_be :==, ["0", "1", "2"]
|
1461
1468
|
end
|
1462
1469
|
|
1463
1470
|
it "has a working function #gstrv_in" do
|
@@ -1467,17 +1474,17 @@ describe GIMarshallingTests do
|
|
1467
1474
|
|
1468
1475
|
it "has a working function #gstrv_inout" do
|
1469
1476
|
res = GIMarshallingTests.gstrv_inout ["0", "1", "2"]
|
1470
|
-
|
1477
|
+
res.must_be :==, ["-1", "0", "1", "2"]
|
1471
1478
|
end
|
1472
1479
|
|
1473
1480
|
it "has a working function #gstrv_out" do
|
1474
1481
|
res = GIMarshallingTests.gstrv_out
|
1475
|
-
|
1482
|
+
res.must_be :==, ["0", "1", "2"]
|
1476
1483
|
end
|
1477
1484
|
|
1478
1485
|
it "has a working function #gstrv_return" do
|
1479
1486
|
res = GIMarshallingTests.gstrv_return
|
1480
|
-
|
1487
|
+
res.must_be :==, ["0", "1", "2"]
|
1481
1488
|
end
|
1482
1489
|
|
1483
1490
|
it "has a working function #gtype_in" do
|
@@ -1516,11 +1523,13 @@ describe GIMarshallingTests do
|
|
1516
1523
|
end
|
1517
1524
|
|
1518
1525
|
it "has a working function #gvalue_flat_array" do
|
1519
|
-
|
1526
|
+
# TODO: Convert array of Ruby values to GValues automatically?
|
1527
|
+
arr = [42, "42", true].map { |val| GObject::Value.wrap_ruby_value val }
|
1528
|
+
GIMarshallingTests.gvalue_flat_array arr
|
1520
1529
|
end
|
1521
1530
|
|
1522
1531
|
it "has a working function #gvalue_flat_array_round_trip" do
|
1523
|
-
skip "
|
1532
|
+
skip "Passing structs by-value is not supported yet"
|
1524
1533
|
end
|
1525
1534
|
|
1526
1535
|
it "has a working function #gvalue_in" do
|
@@ -1585,7 +1594,7 @@ describe GIMarshallingTests do
|
|
1585
1594
|
it "has a working function #init_function" do
|
1586
1595
|
res, arr = GIMarshallingTests.init_function ["foo", "bar", "baz"]
|
1587
1596
|
res.must_equal true
|
1588
|
-
arr.
|
1597
|
+
arr.must_be :==, ["foo", "bar"]
|
1589
1598
|
end
|
1590
1599
|
|
1591
1600
|
it "has a working function #int16_in_max" do
|
@@ -1844,7 +1853,9 @@ describe GIMarshallingTests do
|
|
1844
1853
|
end
|
1845
1854
|
|
1846
1855
|
it "has a working function #multi_array_key_value_in" do
|
1847
|
-
|
1856
|
+
keys = ["one", "two", "three"]
|
1857
|
+
values = [1, 2, 3].map { |val| GObject::Value.wrap_ruby_value val }
|
1858
|
+
GIMarshallingTests.multi_array_key_value_in keys, values
|
1848
1859
|
end
|
1849
1860
|
|
1850
1861
|
it "has a working function #no_type_flags_in" do
|
@@ -1916,7 +1927,11 @@ describe GIMarshallingTests do
|
|
1916
1927
|
end
|
1917
1928
|
|
1918
1929
|
it "has a working function #return_gvalue_flat_array" do
|
1919
|
-
|
1930
|
+
result = GIMarshallingTests.return_gvalue_flat_array
|
1931
|
+
arr = result.to_a
|
1932
|
+
arr[0].get_value.must_equal 42
|
1933
|
+
arr[1].get_value.must_equal "42"
|
1934
|
+
arr[2].get_value.must_equal true
|
1920
1935
|
end
|
1921
1936
|
|
1922
1937
|
it "has a working function #short_in_max" do
|