gir_ffi 0.6.3 → 0.6.4
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 +11 -0
- data/README.md +24 -6
- data/lib/ffi-glib/ptr_array.rb +17 -1
- data/lib/ffi-glib/variant.rb +15 -0
- data/lib/ffi-glib.rb +1 -0
- data/lib/ffi-gobject/object.rb +1 -1
- data/lib/ffi-gobject/ruby_closure.rb +1 -1
- data/lib/ffi-gobject/value.rb +13 -3
- data/lib/ffi-gobject.rb +1 -2
- data/lib/ffi-gobject_introspection/i_enum_info.rb +14 -0
- data/lib/ffi-gobject_introspection/lib.rb +2 -0
- data/lib/gir_ffi/arg_helper.rb +2 -0
- data/lib/gir_ffi/argument_builder.rb +22 -21
- data/lib/gir_ffi/base_argument_builder.rb +2 -1
- data/lib/gir_ffi/builder/module.rb +2 -3
- data/lib/gir_ffi/builder/type/enum.rb +18 -1
- data/lib/gir_ffi/builder/type/object.rb +20 -18
- data/lib/gir_ffi/class_base.rb +0 -1
- data/lib/gir_ffi/enum_base.rb +25 -0
- data/lib/gir_ffi/ffi_ext.rb +1 -0
- data/lib/gir_ffi/function_builder.rb +50 -33
- data/lib/gir_ffi/in_out_pointer.rb +0 -5
- data/lib/gir_ffi/in_pointer.rb +7 -5
- data/lib/gir_ffi/info_ext/i_callable_info.rb +4 -0
- data/lib/gir_ffi/info_ext/i_enum_info.rb +13 -0
- data/lib/gir_ffi/info_ext/i_field_info.rb +1 -1
- data/lib/gir_ffi/info_ext/i_object_info.rb +11 -0
- data/lib/gir_ffi/info_ext/i_registered_type_info.rb +11 -0
- data/lib/gir_ffi/info_ext/i_struct_info.rb +11 -0
- data/lib/gir_ffi/info_ext/i_type_info.rb +10 -19
- data/lib/gir_ffi/info_ext/i_union_info.rb +12 -0
- data/lib/gir_ffi/info_ext/safe_constant_name.rb +0 -2
- data/lib/gir_ffi/info_ext.rb +4 -0
- data/lib/gir_ffi/interface_base.rb +0 -1
- data/lib/gir_ffi/return_value_builder.rb +3 -2
- data/lib/gir_ffi/type_map.rb +3 -0
- data/lib/gir_ffi/version.rb +1 -1
- data/lib/gir_ffi/zero_terminated.rb +36 -3
- data/lib/gir_ffi-base/gir_ffi/library.rb +17 -0
- data/lib/gir_ffi-base/gobject/lib.rb +2 -2
- data/lib/gir_ffi.rb +1 -0
- data/tasks/test.rake +1 -0
- data/test/base_test_helper.rb +22 -2
- data/test/ffi-glib/ruby_closure_test.rb +1 -1
- data/test/ffi-glib/variant_test.rb +10 -0
- data/test/ffi-gobject/value_test.rb +24 -8
- data/test/ffi-gobject_introspection/i_enum_info_test.rb +17 -0
- data/test/gir_ffi/argument_builder_test.rb +66 -24
- data/test/gir_ffi/builder_test.rb +1 -1
- data/test/gir_ffi/function_builder_test.rb +1 -3
- data/test/gir_ffi/in_out_pointer_test.rb +5 -3
- data/test/gir_ffi/in_pointer_test.rb +32 -2
- data/test/gir_ffi/info_ext/i_arg_info_test.rb +2 -2
- data/test/gir_ffi/info_ext/i_callable_info_test.rb +2 -2
- data/test/gir_ffi/info_ext/i_field_info_test.rb +14 -20
- 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 +8 -8
- 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/return_value_builder_test.rb +18 -1
- data/test/gir_ffi/zero_terminated_test.rb +10 -0
- data/test/gir_ffi_test_helper.rb +0 -19
- data/test/integration/generated_gimarshallingtests_test.rb +291 -99
- data/test/integration/generated_regress_test.rb +138 -14
- data/test/lib/autogen.sh +6 -2
- metadata +14 -2
@@ -10,6 +10,13 @@ end
|
|
10
10
|
|
11
11
|
# Tests generated methods and functions in the Regress namespace.
|
12
12
|
describe Regress do
|
13
|
+
describe Regress::Lib do
|
14
|
+
it "extends GirFFI::Library" do
|
15
|
+
class << Regress::Lib
|
16
|
+
self.must_be :include?, GirFFI::Library
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
13
20
|
describe "Regress::ATestError" do
|
14
21
|
before do
|
15
22
|
skip unless get_introspection_data 'Regress', 'ATestError'
|
@@ -94,10 +101,25 @@ describe Regress do
|
|
94
101
|
end
|
95
102
|
end
|
96
103
|
|
104
|
+
it "has the constant MAXUINT64" do
|
105
|
+
skip unless get_introspection_data 'Regress', 'MAXUINT64'
|
106
|
+
Regress::MAXUINT64.must_equal 0xffff_ffff_ffff_ffff
|
107
|
+
end
|
108
|
+
|
109
|
+
it "has the constant MININT64" do
|
110
|
+
skip unless get_introspection_data 'Regress', 'MININT64'
|
111
|
+
Regress::MININT64.must_equal(-0x8000_0000_0000_0000)
|
112
|
+
end
|
113
|
+
|
97
114
|
it "has the constant Mixed_Case_Constant" do
|
98
115
|
assert_equal 4423, Regress::Mixed_Case_Constant
|
99
116
|
end
|
100
117
|
|
118
|
+
it "has the constant NEGATIVE_INT_CONSTANT" do
|
119
|
+
skip unless get_introspection_data 'Regress', 'NEGATIVE_INT_CONSTANT'
|
120
|
+
Regress::NEGATIVE_INT_CONSTANT.must_equal(-42)
|
121
|
+
end
|
122
|
+
|
101
123
|
it "has the constant STRING_CONSTANT" do
|
102
124
|
assert_equal "Some String", Regress::STRING_CONSTANT
|
103
125
|
end
|
@@ -120,7 +142,8 @@ describe Regress do
|
|
120
142
|
end
|
121
143
|
|
122
144
|
it "has a working function #quark" do
|
123
|
-
|
145
|
+
quark = Regress::TestABCError.quark
|
146
|
+
GLib.quark_to_string(quark).must_equal "regress-test-abc-error"
|
124
147
|
end
|
125
148
|
end
|
126
149
|
|
@@ -196,6 +219,24 @@ describe Regress do
|
|
196
219
|
end
|
197
220
|
end
|
198
221
|
|
222
|
+
describe "Regress::TestBoxedD" do
|
223
|
+
before do
|
224
|
+
skip unless get_introspection_data 'Regress', 'TestBoxedD'
|
225
|
+
end
|
226
|
+
it "creates an instance using #new" do
|
227
|
+
skip
|
228
|
+
end
|
229
|
+
it "has a working method #copy" do
|
230
|
+
skip
|
231
|
+
end
|
232
|
+
it "has a working method #free" do
|
233
|
+
skip
|
234
|
+
end
|
235
|
+
it "has a working method #get_magic" do
|
236
|
+
skip
|
237
|
+
end
|
238
|
+
end
|
239
|
+
|
199
240
|
describe "Regress::TestDEFError" do
|
200
241
|
before do
|
201
242
|
skip unless get_introspection_data 'Regress', 'TestDEFError'
|
@@ -231,7 +272,14 @@ describe Regress do
|
|
231
272
|
end
|
232
273
|
|
233
274
|
it "has a working function #param" do
|
234
|
-
|
275
|
+
Regress::TestEnum.param(:value1).must_equal("value1")
|
276
|
+
Regress::TestEnum.param(:value2).must_equal("value2")
|
277
|
+
Regress::TestEnum.param(:value3).must_equal("value3")
|
278
|
+
Regress::TestEnum.param(:value4).must_equal("value4")
|
279
|
+
Regress::TestEnum.param(0).must_equal("value1")
|
280
|
+
Regress::TestEnum.param(1).must_equal("value2")
|
281
|
+
Regress::TestEnum.param(-1).must_equal("value3")
|
282
|
+
Regress::TestEnum.param(48).must_equal("value4")
|
235
283
|
end
|
236
284
|
end
|
237
285
|
|
@@ -278,7 +326,8 @@ describe Regress do
|
|
278
326
|
end
|
279
327
|
|
280
328
|
it "has a working function #quark" do
|
281
|
-
|
329
|
+
quark = Regress::TestError.quark
|
330
|
+
GLib.quark_to_string(quark).must_equal "regress-test-error"
|
282
331
|
end
|
283
332
|
end
|
284
333
|
|
@@ -321,13 +370,16 @@ describe Regress do
|
|
321
370
|
GObject::Object
|
322
371
|
end
|
323
372
|
|
324
|
-
|
373
|
+
it "cannot be instanciated" do
|
374
|
+
proc { Regress::TestFundamentalObject.new }.must_raise NoMethodError
|
375
|
+
end
|
325
376
|
|
326
377
|
it "has a working method #ref" do
|
327
|
-
skip
|
378
|
+
skip "Can only be tested in the descendent class"
|
328
379
|
end
|
380
|
+
|
329
381
|
it "has a working method #unref" do
|
330
|
-
skip
|
382
|
+
skip "Can only be tested in the descendent class"
|
331
383
|
end
|
332
384
|
end
|
333
385
|
|
@@ -358,9 +410,21 @@ describe Regress do
|
|
358
410
|
end
|
359
411
|
end
|
360
412
|
|
413
|
+
# NOTE: The following tests test fields and methods on the abstract parent
|
414
|
+
# class.
|
361
415
|
it "has a refcount of 1" do
|
362
416
|
assert_equal 1, instance.refcount
|
363
417
|
end
|
418
|
+
|
419
|
+
it "has a working method #ref" do
|
420
|
+
instance.ref
|
421
|
+
instance.refcount.must_equal 2
|
422
|
+
end
|
423
|
+
|
424
|
+
it "has a working method #unref" do
|
425
|
+
instance.unref
|
426
|
+
instance.refcount.must_equal 0
|
427
|
+
end
|
364
428
|
end
|
365
429
|
|
366
430
|
describe "Regress::TestInterface" do
|
@@ -668,29 +732,89 @@ describe Regress do
|
|
668
732
|
end
|
669
733
|
|
670
734
|
describe "Regress::TestOtherError" do
|
735
|
+
before do
|
736
|
+
skip unless get_introspection_data 'Regress', 'TestOtherError'
|
737
|
+
end
|
738
|
+
|
671
739
|
it "has the member :code1" do
|
672
|
-
|
740
|
+
Regress::TestOtherError[:code1].must_equal 1
|
673
741
|
end
|
742
|
+
|
674
743
|
it "has the member :code2" do
|
675
|
-
|
744
|
+
Regress::TestOtherError[:code2].must_equal 2
|
676
745
|
end
|
746
|
+
|
677
747
|
it "has the member :code3" do
|
678
|
-
|
748
|
+
Regress::TestOtherError[:code3].must_equal 3
|
679
749
|
end
|
750
|
+
|
680
751
|
it "has a working function #quark" do
|
681
|
-
|
752
|
+
quark = Regress::TestOtherError.quark
|
753
|
+
GLib.quark_to_string(quark).must_equal "regress-test-other-error"
|
682
754
|
end
|
683
755
|
end
|
756
|
+
|
684
757
|
describe "Regress::TestPrivateEnum" do
|
685
758
|
it "has the member :public_enum_before" do
|
686
|
-
|
759
|
+
Regress::TestPrivateEnum[:public_enum_before].must_equal 1
|
760
|
+
end
|
761
|
+
it "does not have the member :private" do
|
762
|
+
Regress::TestPrivateEnum[:private].must_equal nil
|
687
763
|
end
|
688
764
|
it "has the member :public_enum_after" do
|
689
|
-
|
765
|
+
Regress::TestPrivateEnum[:public_enum_after].must_equal 4
|
690
766
|
end
|
691
767
|
end
|
768
|
+
|
692
769
|
describe "Regress::TestPrivateStruct" do
|
770
|
+
let(:instance) { Regress::TestPrivateStruct.new }
|
771
|
+
|
772
|
+
it "has a writable field this_is_public_before" do
|
773
|
+
instance.this_is_public_before.must_equal 0
|
774
|
+
instance.this_is_public_before = 42
|
775
|
+
instance.this_is_public_before.must_equal 42
|
776
|
+
end
|
777
|
+
|
778
|
+
it "cannot read from field this_is_private" do
|
779
|
+
skip "GIR identifies this field as readable"
|
780
|
+
proc { instance.this_is_private }.must_raise NoMethodError
|
781
|
+
end
|
782
|
+
|
783
|
+
it "cannot write to field this_is_private" do
|
784
|
+
proc { instance.this_is_private = 42 }.must_raise NoMethodError
|
785
|
+
end
|
786
|
+
|
787
|
+
it "has a writable field this_is_public_after" do
|
788
|
+
instance.this_is_public_after.must_equal 0
|
789
|
+
instance.this_is_public_after = 42
|
790
|
+
instance.this_is_public_after.must_equal 42
|
791
|
+
end
|
693
792
|
end
|
793
|
+
|
794
|
+
describe "Regress::TestReferenceEnum" do
|
795
|
+
before do
|
796
|
+
skip unless get_introspection_data 'Regress', 'TestReferenceEnum'
|
797
|
+
end
|
798
|
+
it "has the member :0" do
|
799
|
+
Regress::TestReferenceEnum[:"0"].must_equal 4
|
800
|
+
end
|
801
|
+
it "has the member :1" do
|
802
|
+
Regress::TestReferenceEnum[:"1"].must_equal 2
|
803
|
+
end
|
804
|
+
it "has the member :2" do
|
805
|
+
Regress::TestReferenceEnum[:"2"].must_equal 54
|
806
|
+
end
|
807
|
+
it "has the member :3" do
|
808
|
+
Regress::TestReferenceEnum[:"3"].must_equal 4
|
809
|
+
end
|
810
|
+
it "has the member :4" do
|
811
|
+
Regress::TestReferenceEnum[:"4"].must_equal 216
|
812
|
+
end
|
813
|
+
it "has the member :5" do
|
814
|
+
Regress::TestReferenceEnum[:"5"].must_equal(-217)
|
815
|
+
end
|
816
|
+
end
|
817
|
+
|
694
818
|
describe "Regress::TestSimpleBoxedA" do
|
695
819
|
it "creates an instance using #new" do
|
696
820
|
obj = Regress::TestSimpleBoxedA.new
|
@@ -1172,7 +1296,7 @@ describe Regress do
|
|
1172
1296
|
|
1173
1297
|
it "has a working function #test_date_in_gvalue" do
|
1174
1298
|
r = Regress.test_date_in_gvalue
|
1175
|
-
date = r.
|
1299
|
+
date = r.get_value
|
1176
1300
|
skip unless date.respond_to? :get_year
|
1177
1301
|
assert_equal [1984, :december, 5],
|
1178
1302
|
[date.get_year, date.get_month, date.get_day]
|
@@ -1506,7 +1630,7 @@ describe Regress do
|
|
1506
1630
|
|
1507
1631
|
it "has a working function #test_strv_in_gvalue" do
|
1508
1632
|
gv = Regress.test_strv_in_gvalue
|
1509
|
-
assert_equal ['one', 'two', 'three'], gv.
|
1633
|
+
assert_equal ['one', 'two', 'three'], gv.get_value.to_a
|
1510
1634
|
end
|
1511
1635
|
|
1512
1636
|
it "has a working function #test_strv_out" do
|
data/test/lib/autogen.sh
CHANGED
@@ -41,7 +41,10 @@ if autoconf --version < /dev/null > /dev/null 2>&1 ; then : ; else
|
|
41
41
|
DIE=1
|
42
42
|
fi
|
43
43
|
|
44
|
-
if automake-1.
|
44
|
+
if automake-1.13 --version < /dev/null > /dev/null 2>&1 ; then
|
45
|
+
AUTOMAKE=automake-1.13
|
46
|
+
ACLOCAL=aclocal-1.13
|
47
|
+
else if automake-1.11 --version < /dev/null > /dev/null 2>&1 ; then
|
45
48
|
AUTOMAKE=automake-1.11
|
46
49
|
ACLOCAL=aclocal-1.11
|
47
50
|
else if automake-1.10 --version < /dev/null > /dev/null 2>&1 ; then
|
@@ -49,12 +52,13 @@ else if automake-1.10 --version < /dev/null > /dev/null 2>&1 ; then
|
|
49
52
|
ACLOCAL=aclocal-1.10
|
50
53
|
else
|
51
54
|
echo
|
52
|
-
echo "You must have automake 1.
|
55
|
+
echo "You must have automake 1.13.x, 1.11.x or 1.10.x installed to compile $PROJECT."
|
53
56
|
echo "Install the appropriate package for your distribution,"
|
54
57
|
echo "or get the source tarball at http://ftp.gnu.org/gnu/automake/"
|
55
58
|
DIE=1
|
56
59
|
fi
|
57
60
|
fi
|
61
|
+
fi
|
58
62
|
|
59
63
|
if test "$DIE" -eq 1; then
|
60
64
|
exit 1
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gir_ffi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-06-
|
12
|
+
date: 2013-06-30 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: ffi
|
@@ -143,6 +143,7 @@ files:
|
|
143
143
|
- lib/gir_ffi/arg_helper.rb
|
144
144
|
- lib/gir_ffi/info_ext.rb
|
145
145
|
- lib/gir_ffi/allocation_helper.rb
|
146
|
+
- lib/gir_ffi/ffi_ext.rb
|
146
147
|
- lib/gir_ffi/type_map.rb
|
147
148
|
- lib/gir_ffi/zero_terminated.rb
|
148
149
|
- lib/gir_ffi/unintrospectable_type_info.rb
|
@@ -155,6 +156,7 @@ files:
|
|
155
156
|
- lib/gir_ffi/builder_helper.rb
|
156
157
|
- lib/gir_ffi/variable_name_generator.rb
|
157
158
|
- lib/gir_ffi/in_pointer.rb
|
159
|
+
- lib/gir_ffi/enum_base.rb
|
158
160
|
- lib/gir_ffi/return_value_builder.rb
|
159
161
|
- lib/gir_ffi/in_out_pointer.rb
|
160
162
|
- lib/gir_ffi/version.rb
|
@@ -162,6 +164,7 @@ files:
|
|
162
164
|
- lib/gir_ffi/callback_helper.rb
|
163
165
|
- lib/gir_ffi/builder.rb
|
164
166
|
- lib/gir_ffi/interface_base.rb
|
167
|
+
- lib/gir_ffi/info_ext/i_struct_info.rb
|
165
168
|
- lib/gir_ffi/info_ext/i_arg_info.rb
|
166
169
|
- lib/gir_ffi/info_ext/i_type_info.rb
|
167
170
|
- lib/gir_ffi/info_ext/i_function_info.rb
|
@@ -169,8 +172,11 @@ files:
|
|
169
172
|
- lib/gir_ffi/info_ext/i_field_info.rb
|
170
173
|
- lib/gir_ffi/info_ext/safe_constant_name.rb
|
171
174
|
- lib/gir_ffi/info_ext/i_property_info.rb
|
175
|
+
- lib/gir_ffi/info_ext/i_enum_info.rb
|
172
176
|
- lib/gir_ffi/info_ext/i_signal_info.rb
|
173
177
|
- lib/gir_ffi/info_ext/safe_function_name.rb
|
178
|
+
- lib/gir_ffi/info_ext/i_union_info.rb
|
179
|
+
- lib/gir_ffi/info_ext/i_object_info.rb
|
174
180
|
- lib/gir_ffi/info_ext/i_registered_type_info.rb
|
175
181
|
- lib/gir_ffi/module_base.rb
|
176
182
|
- lib/gir_ffi/base_argument_builder.rb
|
@@ -178,6 +184,7 @@ files:
|
|
178
184
|
- lib/gir_ffi/class_base.rb
|
179
185
|
- lib/gir_ffi/object_base.rb
|
180
186
|
- lib/gir_ffi/function_builder.rb
|
187
|
+
- lib/gir_ffi-base/gir_ffi/library.rb
|
181
188
|
- lib/gir_ffi-base/gobject/lib.rb
|
182
189
|
- lib/gir_ffi-base/glib/strv.rb
|
183
190
|
- lib/ffi-gobject/ruby_style.rb
|
@@ -196,6 +203,7 @@ files:
|
|
196
203
|
- lib/ffi-glib/strv.rb
|
197
204
|
- lib/ffi-glib/byte_array.rb
|
198
205
|
- lib/ffi-glib/ptr_array.rb
|
206
|
+
- lib/ffi-glib/variant.rb
|
199
207
|
- lib/ffi-glib/sized_array.rb
|
200
208
|
- lib/ffi-glib/s_list.rb
|
201
209
|
- lib/ffi-gobject_introspection/i_struct_info.rb
|
@@ -286,6 +294,7 @@ files:
|
|
286
294
|
- test/ffi-glib/ptr_array_test.rb
|
287
295
|
- test/ffi-glib/byte_array_test.rb
|
288
296
|
- test/ffi-glib/ruby_closure_test.rb
|
297
|
+
- test/ffi-glib/variant_test.rb
|
289
298
|
- test/ffi-glib/sized_array_test.rb
|
290
299
|
- test/ffi-gobject_introspection/i_repository_test.rb
|
291
300
|
- test/ffi-gobject_introspection/i_constant_info_test.rb
|
@@ -293,6 +302,7 @@ files:
|
|
293
302
|
- test/ffi-gobject_introspection/i_object_info_test.rb
|
294
303
|
- test/ffi-gobject_introspection/lib_test.rb
|
295
304
|
- test/ffi-gobject_introspection/i_function_info_test.rb
|
305
|
+
- test/ffi-gobject_introspection/i_enum_info_test.rb
|
296
306
|
- test/gir_ffi_test.rb
|
297
307
|
- test/introspection_test_helper.rb
|
298
308
|
- tasks/setup.rb
|
@@ -346,6 +356,7 @@ test_files:
|
|
346
356
|
- test/ffi-glib/ruby_closure_test.rb
|
347
357
|
- test/ffi-glib/s_list_test.rb
|
348
358
|
- test/ffi-glib/sized_array_test.rb
|
359
|
+
- test/ffi-glib/variant_test.rb
|
349
360
|
- test/ffi-gobject/gobject_test.rb
|
350
361
|
- test/ffi-gobject/object_class_test.rb
|
351
362
|
- test/ffi-gobject/object_test.rb
|
@@ -353,6 +364,7 @@ test_files:
|
|
353
364
|
- test/ffi-gobject/value_test.rb
|
354
365
|
- test/ffi-gobject_introspection/i_base_info_test.rb
|
355
366
|
- test/ffi-gobject_introspection/i_constant_info_test.rb
|
367
|
+
- test/ffi-gobject_introspection/i_enum_info_test.rb
|
356
368
|
- test/ffi-gobject_introspection/i_function_info_test.rb
|
357
369
|
- test/ffi-gobject_introspection/i_object_info_test.rb
|
358
370
|
- test/ffi-gobject_introspection/i_repository_test.rb
|