gir_ffi 0.0.8 → 0.0.9
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +11 -0
- data/TODO.rdoc +5 -0
- data/examples/01_empty_window.rb +0 -1
- data/examples/02_hello_world.rb +0 -1
- data/examples/03_upgraded_hello_world.rb +0 -1
- data/examples/04_webkit.rb +0 -1
- data/lib/gir_ffi/arg_helper.rb +231 -94
- data/lib/gir_ffi/builder/argument.rb +372 -46
- data/lib/gir_ffi/builder/module.rb +25 -10
- data/lib/gir_ffi/builder/type/constant.rb +39 -0
- data/lib/gir_ffi/builder/type/enum.rb +15 -5
- data/lib/gir_ffi/builder/type/registered_type.rb +25 -6
- data/lib/gir_ffi/builder/type/struct.rb +1 -9
- data/lib/gir_ffi/builder/type/union.rb +5 -0
- data/lib/gir_ffi/builder/type.rb +13 -14
- data/lib/gir_ffi/builder.rb +7 -4
- data/lib/gir_ffi/builder_helper.rb +4 -3
- data/lib/gir_ffi/i_base_info.rb +4 -0
- data/lib/gir_ffi/i_constant_info.rb +9 -0
- data/lib/gir_ffi/i_registered_type_info.rb +0 -1
- data/lib/gir_ffi/i_repository.rb +8 -2
- data/lib/gir_ffi/i_type_info.rb +7 -0
- data/lib/gir_ffi/lib.rb +41 -3
- data/lib/gir_ffi/overrides/glib.rb +188 -4
- data/lib/gir_ffi/overrides/gobject.rb +16 -5
- data/tasks/test.rake +1 -1
- data/test/arg_helper_test.rb +5 -5
- data/test/builder_test.rb +64 -41
- data/test/class_base_test.rb +1 -1
- data/test/function_definition_builder_test.rb +24 -2
- data/test/g_object_overrides_test.rb +1 -3
- data/test/g_object_test.rb +1 -1
- data/test/generated_gimarshallingtests_test.rb +1677 -0
- data/test/generated_gio_test.rb +1 -1
- data/test/generated_gtk_test.rb +31 -2
- data/test/generated_regress_test.rb +278 -54
- data/test/girffi_test.rb +20 -5
- data/test/glib_overrides_test.rb +81 -0
- data/test/gtk_overrides_test.rb +2 -3
- data/test/i_object_info_test.rb +1 -1
- data/test/i_repository_test.rb +3 -4
- data/test/lib/Makefile.am +18 -2
- data/test/module_builder_test.rb +1 -1
- data/test/test_helper.rb +88 -5
- data/test/type_builder_test.rb +7 -10
- metadata +16 -13
data/test/builder_test.rb
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
require File.expand_path('test_helper.rb', File.dirname(__FILE__))
|
2
2
|
|
3
|
-
class BuilderTest <
|
3
|
+
class BuilderTest < MiniTest::Spec
|
4
4
|
context "The GirFFI::Builder module" do
|
5
5
|
setup do
|
6
6
|
@gir = GirFFI::IRepository.default
|
7
7
|
end
|
8
8
|
|
9
9
|
context "building GObject::Object" do
|
10
|
-
|
11
|
-
|
12
|
-
GirFFI::Builder.build_class
|
10
|
+
before do
|
11
|
+
save_module :GObject
|
12
|
+
GirFFI::Builder.build_class get_function_introspection_data('GObject', 'Object')
|
13
13
|
end
|
14
14
|
|
15
15
|
should "create a Lib module in the parent namespace ready to attach functions from gobject-2.0" do
|
@@ -23,16 +23,20 @@ class BuilderTest < Test::Unit::TestCase
|
|
23
23
|
|
24
24
|
should "not replace existing classes" do
|
25
25
|
oldclass = GObject::Object
|
26
|
-
GirFFI::Builder.build_class
|
26
|
+
GirFFI::Builder.build_class get_function_introspection_data('GObject', 'Object')
|
27
27
|
assert_equal oldclass, GObject::Object
|
28
28
|
end
|
29
|
+
|
30
|
+
after do
|
31
|
+
restore_module :GObject
|
32
|
+
end
|
29
33
|
end
|
30
34
|
|
31
35
|
context "building Gtk::Window" do
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
GirFFI::Builder.build_class
|
36
|
+
before do
|
37
|
+
save_module :Gtk
|
38
|
+
save_module :GObject
|
39
|
+
GirFFI::Builder.build_class get_function_introspection_data('Gtk', 'Window')
|
36
40
|
end
|
37
41
|
|
38
42
|
should "build Gtk namespace" do
|
@@ -66,22 +70,16 @@ class BuilderTest < Test::Unit::TestCase
|
|
66
70
|
should "result in Gtk::Window.new to succeed" do
|
67
71
|
assert_nothing_raised {Gtk::Window.new(:toplevel)}
|
68
72
|
end
|
69
|
-
end
|
70
73
|
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
GirFFI::Builder.build_class @gir.find_by_name('Gtk', 'Widget')
|
75
|
-
end
|
76
|
-
|
77
|
-
should "not have regular #new as a constructor" do
|
78
|
-
assert_raises(NoMethodError) { Gtk::Widget.new }
|
74
|
+
after do
|
75
|
+
restore_module :Gtk
|
76
|
+
restore_module :GObject
|
79
77
|
end
|
80
78
|
end
|
81
79
|
|
82
80
|
context "building Gtk" do
|
83
|
-
|
84
|
-
|
81
|
+
before do
|
82
|
+
save_module :Gtk
|
85
83
|
GirFFI::Builder.build_module 'Gtk'
|
86
84
|
end
|
87
85
|
|
@@ -106,6 +104,10 @@ class BuilderTest < Test::Unit::TestCase
|
|
106
104
|
GirFFI::Builder.build_module 'Gtk'
|
107
105
|
assert_equal oldmodule, Gtk::Lib
|
108
106
|
end
|
107
|
+
|
108
|
+
after do
|
109
|
+
restore_module :Gtk
|
110
|
+
end
|
109
111
|
end
|
110
112
|
|
111
113
|
context "looking at Gtk.main" do
|
@@ -159,10 +161,10 @@ class BuilderTest < Test::Unit::TestCase
|
|
159
161
|
end
|
160
162
|
|
161
163
|
context "looking at Regress.test_callback_destroy_notify" do
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
164
|
+
before do
|
165
|
+
save_module :GLib
|
166
|
+
save_module :GObject
|
167
|
+
save_module :Regress
|
166
168
|
GirFFI::Builder.build_module 'GLib'
|
167
169
|
GirFFI::Builder.build_module 'GObject'
|
168
170
|
GirFFI::Builder.build_module 'Regress'
|
@@ -190,16 +192,21 @@ class BuilderTest < Test::Unit::TestCase
|
|
190
192
|
should "define ffi enum type ConnectFlags" do
|
191
193
|
assert_equal({:after => 1, :swapped => 2}, GObject::ConnectFlags.to_h)
|
192
194
|
end
|
195
|
+
|
196
|
+
after do
|
197
|
+
restore_module :Regress
|
198
|
+
restore_module :GObject
|
199
|
+
restore_module :GLib
|
200
|
+
end
|
193
201
|
end
|
194
202
|
|
195
203
|
context "building Regress::TestStructA" do
|
196
204
|
setup do
|
197
|
-
|
198
|
-
GirFFI::Builder.build_class @gir.find_by_name('Regress', 'TestStructA')
|
205
|
+
GirFFI::Builder.build_class get_function_introspection_data('Regress', 'TestStructA')
|
199
206
|
end
|
200
207
|
|
201
208
|
should "set up the correct struct members" do
|
202
|
-
assert_equal
|
209
|
+
assert_equal [:some_int, :some_int8, :some_double, :some_enum],
|
203
210
|
Regress::TestStructA::Struct.members
|
204
211
|
end
|
205
212
|
|
@@ -212,13 +219,13 @@ class BuilderTest < Test::Unit::TestCase
|
|
212
219
|
should "set up struct members with the correct types" do
|
213
220
|
tags = [:int, :int8, :double, Regress::TestEnum]
|
214
221
|
assert_equal tags.map {|t| FFI.find_type t},
|
215
|
-
|
222
|
+
Regress::TestStructA::Struct.layout.fields.map {|f| f.type}
|
216
223
|
end
|
217
224
|
end
|
218
225
|
|
219
226
|
context "building GObject::TypeCValue" do
|
220
227
|
setup do
|
221
|
-
GirFFI::Builder.build_class
|
228
|
+
GirFFI::Builder.build_class get_function_introspection_data('GObject', 'TypeCValue')
|
222
229
|
end
|
223
230
|
|
224
231
|
should "set up the correct union members" do
|
@@ -238,7 +245,7 @@ class BuilderTest < Test::Unit::TestCase
|
|
238
245
|
|
239
246
|
context "building GObject::ValueArray" do
|
240
247
|
should "use provided constructor if present" do
|
241
|
-
GirFFI::Builder.build_class
|
248
|
+
GirFFI::Builder.build_class get_function_introspection_data('GObject', 'ValueArray')
|
242
249
|
assert_nothing_raised {
|
243
250
|
GObject::ValueArray.new 2
|
244
251
|
}
|
@@ -247,7 +254,7 @@ class BuilderTest < Test::Unit::TestCase
|
|
247
254
|
|
248
255
|
context "building Regress::TestBoxed" do
|
249
256
|
setup do
|
250
|
-
GirFFI::Builder.build_class
|
257
|
+
GirFFI::Builder.build_class get_function_introspection_data('Regress', 'TestBoxed')
|
251
258
|
end
|
252
259
|
|
253
260
|
should "set up #wrap" do
|
@@ -260,8 +267,8 @@ class BuilderTest < Test::Unit::TestCase
|
|
260
267
|
end
|
261
268
|
|
262
269
|
context "built Regress module" do
|
263
|
-
|
264
|
-
|
270
|
+
before do
|
271
|
+
save_module :Regress
|
265
272
|
GirFFI::Builder.build_module 'Regress'
|
266
273
|
end
|
267
274
|
|
@@ -279,12 +286,16 @@ class BuilderTest < Test::Unit::TestCase
|
|
279
286
|
should "know its own module builder" do
|
280
287
|
assert GirFFI::Builder::Module === Regress.gir_ffi_builder
|
281
288
|
end
|
289
|
+
|
290
|
+
after do
|
291
|
+
restore_module :Regress
|
292
|
+
end
|
282
293
|
end
|
283
294
|
|
284
295
|
context "built Regress::TestObj" do
|
285
|
-
|
286
|
-
|
287
|
-
GirFFI::Builder.build_class
|
296
|
+
before do
|
297
|
+
save_module :Regress
|
298
|
+
GirFFI::Builder.build_class get_function_introspection_data('Regress', 'TestObj')
|
288
299
|
end
|
289
300
|
|
290
301
|
should "make autocreated instance method available to all instances" do
|
@@ -319,12 +330,16 @@ class BuilderTest < Test::Unit::TestCase
|
|
319
330
|
GirFFI::Builder.send(:ffi_function_argument_types, info)
|
320
331
|
end
|
321
332
|
end
|
333
|
+
|
334
|
+
after do
|
335
|
+
restore_module :Regress
|
336
|
+
end
|
322
337
|
end
|
323
338
|
|
324
339
|
context "built Regress::TestSubObj" do
|
325
|
-
|
326
|
-
|
327
|
-
GirFFI::Builder.build_class
|
340
|
+
before do
|
341
|
+
save_module :Regress
|
342
|
+
GirFFI::Builder.build_class get_function_introspection_data('Regress', 'TestSubObj')
|
328
343
|
end
|
329
344
|
|
330
345
|
should "autocreate parent class' set_bare inside the parent class" do
|
@@ -346,11 +361,15 @@ class BuilderTest < Test::Unit::TestCase
|
|
346
361
|
subobj = Regress::TestSubObj.new
|
347
362
|
assert_equal 0, subobj.instance_method
|
348
363
|
end
|
364
|
+
|
365
|
+
after do
|
366
|
+
restore_module :Regress
|
367
|
+
end
|
349
368
|
end
|
350
369
|
|
351
370
|
context "built Gio::ThreadedSocketService" do
|
352
|
-
|
353
|
-
|
371
|
+
before do
|
372
|
+
save_module :Gio
|
354
373
|
GirFFI::Builder.build_module 'Gio'
|
355
374
|
end
|
356
375
|
|
@@ -363,6 +382,10 @@ class BuilderTest < Test::Unit::TestCase
|
|
363
382
|
assert_nothing_raised { Gio::ThreadedSocketService.new 2 }
|
364
383
|
end
|
365
384
|
end
|
385
|
+
|
386
|
+
after do
|
387
|
+
restore_module :Gio
|
388
|
+
end
|
366
389
|
end
|
367
390
|
end
|
368
391
|
end
|
data/test/class_base_test.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
require File.expand_path('test_helper.rb', File.dirname(__FILE__))
|
2
2
|
|
3
|
-
class ClassBaseTest <
|
3
|
+
class ClassBaseTest < MiniTest::Spec
|
4
4
|
context "A class derived from GirFFI::Base" do
|
5
5
|
# TODO: See if we can test some part of Base again.
|
6
6
|
should "pass" do
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require File.expand_path('test_helper.rb', File.dirname(__FILE__))
|
2
2
|
|
3
|
-
class FunctionDefinitionBuilderTest <
|
3
|
+
class FunctionDefinitionBuilderTest < MiniTest::Spec
|
4
4
|
context "The Builder::Function class" do
|
5
5
|
should "build correct definition of Gtk.init" do
|
6
6
|
go = get_function_introspection_data 'Gtk', 'init'
|
@@ -68,7 +68,7 @@ class FunctionDefinitionBuilderTest < Test::Unit::TestCase
|
|
68
68
|
_v4 = FFI::MemoryPointer.new(:pointer).write_pointer nil
|
69
69
|
_v2 = ::Lib.regress_test_obj_new_from_file _v1, _v4
|
70
70
|
GirFFI::ArgHelper.check_error(_v4)
|
71
|
-
_v3 =
|
71
|
+
_v3 = self.constructor_wrap(_v2)
|
72
72
|
return _v3
|
73
73
|
end"
|
74
74
|
|
@@ -111,5 +111,27 @@ class FunctionDefinitionBuilderTest < Test::Unit::TestCase
|
|
111
111
|
|
112
112
|
assert_equal cws(expected), cws(code)
|
113
113
|
end
|
114
|
+
|
115
|
+
it "builds the correct definition of GIMarshallingTests::Object#method_array_inout" do
|
116
|
+
go = get_method_introspection_data 'GIMarshallingTests', 'Object', 'method_array_inout'
|
117
|
+
fbuilder = GirFFI::Builder::Function.new go, Lib
|
118
|
+
code = fbuilder.generate
|
119
|
+
|
120
|
+
expected =
|
121
|
+
"def method_array_inout ints
|
122
|
+
_v1 = GirFFI::ArgHelper.gint32_array_to_inoutptr ints
|
123
|
+
length = ints.length
|
124
|
+
_v3 = GirFFI::ArgHelper.gint32_to_inoutptr length
|
125
|
+
::Lib.gi_marshalling_tests_object_method_array_inout self, _v1, _v3
|
126
|
+
_v4 = GirFFI::ArgHelper.outptr_to_gint32 _v3
|
127
|
+
GirFFI::ArgHelper.cleanup_ptr _v3
|
128
|
+
_v2 = GirFFI::ArgHelper.outptr_to_gint32_array _v1, _v4
|
129
|
+
GirFFI::ArgHelper.cleanup_ptr _v1
|
130
|
+
return _v2
|
131
|
+
end"
|
132
|
+
|
133
|
+
assert_equal cws(expected), cws(code)
|
134
|
+
end
|
135
|
+
|
114
136
|
end
|
115
137
|
end
|
@@ -1,11 +1,9 @@
|
|
1
1
|
require File.expand_path('test_helper.rb', File.dirname(__FILE__))
|
2
2
|
|
3
|
-
class GObjectOverridesTest <
|
3
|
+
class GObjectOverridesTest < MiniTest::Spec
|
4
4
|
context "In the GObject module with overridden functions" do
|
5
5
|
setup do
|
6
|
-
GirFFI.setup :GObject
|
7
6
|
GirFFI.setup :Regress
|
8
|
-
GirFFI.setup :Gio
|
9
7
|
end
|
10
8
|
|
11
9
|
context "the Value class" do
|
data/test/g_object_test.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
require File.expand_path('test_helper.rb', File.dirname(__FILE__))
|
2
2
|
|
3
|
-
class GObjectTest <
|
3
|
+
class GObjectTest < MiniTest::Spec
|
4
4
|
context "The GirFFI::GObject helper module" do
|
5
5
|
should "have type_init as a public method" do
|
6
6
|
assert GirFFI::GObject.respond_to?('type_init')
|