gir_ffi 0.7.7 → 0.7.8
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 +9 -0
- data/lib/ffi-glib/array.rb +1 -1
- data/lib/ffi-glib/error.rb +1 -2
- data/lib/ffi-glib/hash_table.rb +2 -2
- data/lib/ffi-glib/variant.rb +1 -1
- data/lib/ffi-gobject/base.rb +23 -23
- data/lib/ffi-gobject/object.rb +7 -3
- data/lib/ffi-gobject/value.rb +6 -1
- data/lib/ffi-gobject.rb +9 -6
- data/lib/ffi-gobject_introspection/i_base_info.rb +3 -3
- data/lib/ffi-gobject_introspection/i_constant_info.rb +1 -1
- data/lib/ffi-gobject_introspection/i_repository.rb +4 -1
- data/lib/ffi-gobject_introspection/i_type_info.rb +1 -1
- data/lib/ffi-gobject_introspection/i_unresolved_info.rb +7 -0
- data/lib/ffi-gobject_introspection/lib.rb +1 -1
- data/lib/gir_ffi/builders/argument_builder.rb +1 -1
- data/lib/gir_ffi/builders/c_to_ruby_convertor.rb +37 -29
- data/lib/gir_ffi/builders/callback_argument_builder.rb +57 -27
- data/lib/gir_ffi/builders/closure_convertor.rb +12 -8
- data/lib/gir_ffi/builders/closure_to_pointer_convertor.rb +12 -8
- data/lib/gir_ffi/builders/constructor_result_convertor.rb +11 -7
- data/lib/gir_ffi/builders/field_builder.rb +1 -1
- data/lib/gir_ffi/builders/function_builder.rb +1 -1
- data/lib/gir_ffi/builders/mapping_method_builder.rb +1 -1
- data/lib/gir_ffi/builders/marshalling_method_builder.rb +2 -2
- data/lib/gir_ffi/builders/method_template.rb +1 -1
- data/lib/gir_ffi/builders/null_convertor.rb +11 -7
- data/lib/gir_ffi/builders/property_builder.rb +1 -1
- data/lib/gir_ffi/builders/ruby_to_c_convertor.rb +17 -13
- data/lib/gir_ffi/error_argument_info.rb +1 -1
- data/lib/gir_ffi/ffi_ext/pointer.rb +1 -1
- data/lib/gir_ffi/info_ext/i_unresolved_info.rb +12 -0
- data/lib/gir_ffi/info_ext/safe_constant_name.rb +2 -2
- data/lib/gir_ffi/info_ext/safe_function_name.rb +1 -1
- data/lib/gir_ffi/info_ext.rb +1 -0
- data/lib/gir_ffi/module_base.rb +1 -1
- data/lib/gir_ffi/receiver_argument_info.rb +15 -12
- data/lib/gir_ffi/user_data_argument_info.rb +17 -15
- data/lib/gir_ffi/user_data_type_info.rb +14 -12
- data/lib/gir_ffi/version.rb +1 -1
- data/lib/gir_ffi-base/gobject/lib.rb +1 -1
- data/test/base_test_helper.rb +15 -15
- data/test/ffi-glib/array_test.rb +38 -38
- data/test/ffi-glib/byte_array_test.rb +6 -7
- data/test/ffi-glib/bytes_test.rb +9 -9
- data/test/ffi-glib/hash_table_test.rb +26 -23
- data/test/ffi-glib/iconv_test.rb +5 -5
- data/test/ffi-glib/list_test.rb +16 -16
- data/test/ffi-glib/main_loop_test.rb +6 -6
- data/test/ffi-glib/ptr_array_test.rb +45 -45
- data/test/ffi-glib/ruby_closure_test.rb +6 -6
- data/test/ffi-glib/s_list_test.rb +15 -15
- data/test/ffi-glib/strv_test.rb +21 -21
- data/test/ffi-glib/variant_test.rb +4 -4
- data/test/ffi-gobject/gobject_test.rb +35 -35
- data/test/ffi-gobject/object_class_test.rb +1 -1
- data/test/ffi-gobject/object_test.rb +29 -6
- data/test/ffi-gobject/value_test.rb +66 -52
- data/test/ffi-gobject_introspection/i_base_info_test.rb +10 -11
- data/test/ffi-gobject_introspection/i_constant_info_test.rb +6 -6
- data/test/ffi-gobject_introspection/i_enum_info_test.rb +4 -5
- data/test/ffi-gobject_introspection/i_function_info_test.rb +0 -2
- data/test/ffi-gobject_introspection/i_object_info_test.rb +5 -5
- data/test/ffi-gobject_introspection/i_registered_type_info_test.rb +9 -8
- data/test/ffi-gobject_introspection/i_repository_test.rb +16 -16
- data/test/ffi-gobject_introspection/i_type_info_test.rb +16 -2
- data/test/ffi-gobject_introspection/lib_test.rb +2 -2
- data/test/ffi-gobject_test.rb +50 -40
- data/test/gir_ffi/arg_helper_test.rb +5 -5
- data/test/gir_ffi/builder_test.rb +41 -41
- data/test/gir_ffi/builders/argument_builder_test.rb +240 -207
- data/test/gir_ffi/builders/base_argument_builder_test.rb +0 -1
- data/test/gir_ffi/builders/callback_argument_builder_test.rb +81 -15
- data/test/gir_ffi/builders/callback_builder_test.rb +39 -14
- data/test/gir_ffi/builders/callback_return_value_builder_test.rb +41 -33
- data/test/gir_ffi/builders/enum_builder_test.rb +3 -3
- data/test/gir_ffi/builders/field_builder_test.rb +17 -17
- data/test/gir_ffi/builders/function_builder_test.rb +16 -16
- data/test/gir_ffi/builders/interface_builder_test.rb +9 -7
- data/test/gir_ffi/builders/module_builder_test.rb +5 -6
- data/test/gir_ffi/builders/object_builder_test.rb +24 -19
- data/test/gir_ffi/builders/property_builder_test.rb +25 -23
- data/test/gir_ffi/builders/registered_type_builder_test.rb +11 -11
- data/test/gir_ffi/builders/return_value_builder_test.rb +237 -197
- data/test/gir_ffi/builders/signal_closure_builder_test.rb +29 -22
- data/test/gir_ffi/builders/struct_builder_test.rb +10 -10
- data/test/gir_ffi/builders/unintrospectable_builder_test.rb +8 -8
- data/test/gir_ffi/builders/union_builder_test.rb +5 -6
- data/test/gir_ffi/builders/user_defined_builder_test.rb +42 -33
- data/test/gir_ffi/builders/vfunc_builder_test.rb +37 -30
- data/test/gir_ffi/callback_base_test.rb +4 -5
- data/test/gir_ffi/class_base_test.rb +35 -28
- data/test/gir_ffi/error_type_info_test.rb +14 -14
- data/test/gir_ffi/ffi_ext/pointer_test.rb +4 -4
- data/test/gir_ffi/g_type_test.rb +6 -6
- data/test/gir_ffi/in_out_pointer_test.rb +27 -27
- data/test/gir_ffi/in_pointer_test.rb +54 -50
- data/test/gir_ffi/info_ext/i_callable_info_test.rb +8 -7
- data/test/gir_ffi/info_ext/i_callback_info_test.rb +7 -7
- data/test/gir_ffi/info_ext/i_field_info_test.rb +10 -8
- data/test/gir_ffi/info_ext/i_function_info_test.rb +17 -15
- data/test/gir_ffi/info_ext/i_signal_info_test.rb +10 -8
- data/test/gir_ffi/info_ext/i_type_info_test.rb +158 -155
- data/test/gir_ffi/info_ext/i_unresolved_info_test.rb +17 -0
- data/test/gir_ffi/info_ext/safe_constant_name_test.rb +12 -10
- data/test/gir_ffi/info_ext/safe_function_name_test.rb +12 -10
- data/test/gir_ffi/interface_base_test.rb +6 -6
- data/test/gir_ffi/method_stubber_test.rb +16 -13
- data/test/gir_ffi/object_base_test.rb +6 -6
- data/test/gir_ffi/sized_array_test.rb +23 -23
- data/test/gir_ffi/type_map_test.rb +3 -3
- data/test/gir_ffi/unintrospectable_type_info_test.rb +18 -18
- data/test/gir_ffi/user_defined_property_info_test.rb +4 -4
- data/test/gir_ffi/user_defined_type_info_test.rb +16 -16
- data/test/gir_ffi/variable_name_generator_test.rb +6 -6
- data/test/gir_ffi/version_test.rb +1 -1
- data/test/gir_ffi/zero_terminated_test.rb +16 -17
- data/test/gir_ffi-base/glib/boolean_test.rb +13 -13
- data/test/gir_ffi-base/glib/strv_test.rb +11 -11
- data/test/gir_ffi_test.rb +18 -18
- data/test/gir_ffi_test_helper.rb +13 -18
- data/test/integration/derived_classes_test.rb +8 -8
- data/test/integration/generated_gimarshallingtests_test.rb +794 -792
- data/test/integration/generated_gio_test.rb +25 -26
- data/test/integration/generated_glib_test.rb +8 -2
- data/test/integration/generated_gobject_test.rb +16 -9
- data/test/integration/generated_pango_ft2_test.rb +1 -2
- data/test/integration/generated_pango_test.rb +2 -2
- data/test/integration/generated_regress_test.rb +785 -705
- data/test/integration/generated_secret_test.rb +5 -5
- data/test/integration/method_lookup_test.rb +5 -5
- data/test/introspection_test_helper.rb +3 -1
- data/test/minitest/stats_plugin.rb +3 -3
- metadata +6 -3
@@ -1,21 +1,21 @@
|
|
1
1
|
require 'gir_ffi_test_helper'
|
2
2
|
|
3
3
|
describe GirFFI::ZeroTerminated do
|
4
|
-
describe
|
4
|
+
describe '.from' do
|
5
5
|
let(:result) { GirFFI::ZeroTerminated.from :int32, [1, 2, 3] }
|
6
6
|
|
7
|
-
it
|
7
|
+
it 'converts the passed array into a zero-terminated c array' do
|
8
8
|
ptr = result.to_ptr
|
9
9
|
ptr.read_array_of_int32(4).must_equal [1, 2, 3, 0]
|
10
10
|
end
|
11
11
|
|
12
|
-
it
|
12
|
+
it 'returns a GirFFI::ZeroTerminated object' do
|
13
13
|
result.must_be_instance_of GirFFI::ZeroTerminated
|
14
14
|
end
|
15
15
|
end
|
16
16
|
|
17
|
-
describe
|
18
|
-
it
|
17
|
+
describe '.wrap' do
|
18
|
+
it 'wraps the given type and pointer' do
|
19
19
|
ptr = GirFFI::InPointer.from_array :int32, [1, 2, 3, 0]
|
20
20
|
zt = GirFFI::ZeroTerminated.wrap :foo, ptr
|
21
21
|
zt.element_type.must_equal :foo
|
@@ -23,8 +23,8 @@ describe GirFFI::ZeroTerminated do
|
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
26
|
-
describe
|
27
|
-
it
|
26
|
+
describe '#each' do
|
27
|
+
it 'yields each element' do
|
28
28
|
zt = GirFFI::ZeroTerminated.from :int32, [1, 2, 3]
|
29
29
|
arr = []
|
30
30
|
zt.each do |int|
|
@@ -33,14 +33,14 @@ describe GirFFI::ZeroTerminated do
|
|
33
33
|
arr.must_equal [1, 2, 3]
|
34
34
|
end
|
35
35
|
|
36
|
-
it
|
36
|
+
it 'yields zero times for a ZeroTerminated wrapping a null pointer' do
|
37
37
|
zt = GirFFI::ZeroTerminated.wrap :int32, FFI::Pointer.new(0)
|
38
|
-
zt.each do |
|
38
|
+
zt.each do |_str|
|
39
39
|
flunk
|
40
40
|
end
|
41
41
|
end
|
42
42
|
|
43
|
-
it
|
43
|
+
it 'works for :int8' do
|
44
44
|
zt = GirFFI::ZeroTerminated.from :int8, [1, 2, 3]
|
45
45
|
arr = []
|
46
46
|
zt.each do |int|
|
@@ -51,27 +51,27 @@ describe GirFFI::ZeroTerminated do
|
|
51
51
|
|
52
52
|
end
|
53
53
|
|
54
|
-
describe
|
55
|
-
it
|
54
|
+
describe '#==' do
|
55
|
+
it 'returns true when comparing to an array with the same elements' do
|
56
56
|
zero_terminated = GirFFI::ZeroTerminated.from :int32, [1, 2, 3]
|
57
57
|
|
58
58
|
(zero_terminated == [1, 2, 3]).must_equal true
|
59
59
|
end
|
60
60
|
|
61
|
-
it
|
61
|
+
it 'returns false when comparing to an array with different elements' do
|
62
62
|
zero_terminated = GirFFI::ZeroTerminated.from :int32, [1, 2, 3]
|
63
63
|
|
64
64
|
(zero_terminated == [1, 2]).must_equal false
|
65
65
|
end
|
66
66
|
|
67
|
-
it
|
67
|
+
it 'returns true when comparing to a zero-terminated array with the same elements' do
|
68
68
|
zero_terminated = GirFFI::ZeroTerminated.from :int32, [1, 2, 3]
|
69
69
|
other = GirFFI::ZeroTerminated.from :int32, [1, 2, 3]
|
70
70
|
|
71
71
|
(zero_terminated == other).must_equal true
|
72
72
|
end
|
73
73
|
|
74
|
-
it
|
74
|
+
it 'returns false when comparing to a zero-terminated array with different elements' do
|
75
75
|
zero_terminated = GirFFI::ZeroTerminated.from :int32, [1, 2, 3]
|
76
76
|
other = GirFFI::ZeroTerminated.from :int32, [1, 2]
|
77
77
|
|
@@ -79,8 +79,7 @@ describe GirFFI::ZeroTerminated do
|
|
79
79
|
end
|
80
80
|
end
|
81
81
|
|
82
|
-
it
|
82
|
+
it 'includes Enumerable' do
|
83
83
|
GirFFI::ZeroTerminated.must_include Enumerable
|
84
84
|
end
|
85
85
|
end
|
86
|
-
|
@@ -1,32 +1,32 @@
|
|
1
1
|
require 'gir_ffi_test_helper'
|
2
2
|
|
3
3
|
describe GLib::Boolean do
|
4
|
-
it
|
4
|
+
it 'has the same native size as an int' do
|
5
5
|
FFI.type_size(GLib::Boolean).must_equal FFI.type_size :int
|
6
6
|
end
|
7
7
|
|
8
|
-
describe
|
9
|
-
it
|
10
|
-
GLib::Boolean.from_native(0,
|
8
|
+
describe '.from_native' do
|
9
|
+
it 'converts 0 to false' do
|
10
|
+
GLib::Boolean.from_native(0, 'whatever').must_equal false
|
11
11
|
end
|
12
12
|
|
13
|
-
it
|
14
|
-
GLib::Boolean.from_native(1,
|
13
|
+
it 'converts 1 to true' do
|
14
|
+
GLib::Boolean.from_native(1, 'whatever').must_equal true
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
18
|
-
describe
|
19
|
-
it
|
20
|
-
GLib::Boolean.to_native(false,
|
18
|
+
describe '.to_native' do
|
19
|
+
it 'converts false to 0' do
|
20
|
+
GLib::Boolean.to_native(false, 'whatever').must_equal 0
|
21
21
|
end
|
22
22
|
|
23
|
-
it
|
24
|
-
GLib::Boolean.to_native(true,
|
23
|
+
it 'converts true to 1' do
|
24
|
+
GLib::Boolean.to_native(true, 'whatever').must_equal 1
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
28
|
-
describe
|
29
|
-
it
|
28
|
+
describe '.size' do
|
29
|
+
it 'returns the correct type size' do
|
30
30
|
GLib::Boolean.size.must_equal FFI.type_size :int
|
31
31
|
end
|
32
32
|
end
|
@@ -1,23 +1,23 @@
|
|
1
1
|
require 'base_test_helper'
|
2
2
|
|
3
3
|
describe GLib::Strv do
|
4
|
-
it
|
4
|
+
it 'wraps a pointer' do
|
5
5
|
strv = GLib::Strv.new :some_pointer
|
6
6
|
assert_equal :some_pointer, strv.to_ptr
|
7
7
|
end
|
8
8
|
|
9
|
-
describe
|
10
|
-
it
|
9
|
+
describe '::wrap' do
|
10
|
+
it 'takes a pointer and returns a GLib::Strv wrapping it' do
|
11
11
|
strv = GLib::Strv.wrap :some_pointer
|
12
12
|
assert_instance_of GLib::Strv, strv
|
13
13
|
assert_equal :some_pointer, strv.to_ptr
|
14
14
|
end
|
15
15
|
end
|
16
16
|
|
17
|
-
describe
|
18
|
-
it
|
19
|
-
ary =
|
20
|
-
ptrs = ary.map {|a| FFI::MemoryPointer.from_string(a)}
|
17
|
+
describe '#each' do
|
18
|
+
it 'yields each string element' do
|
19
|
+
ary = %w(one two three)
|
20
|
+
ptrs = ary.map { |a| FFI::MemoryPointer.from_string(a) }
|
21
21
|
ptrs << nil
|
22
22
|
block = FFI::MemoryPointer.new(:pointer, ptrs.length)
|
23
23
|
block.write_array_of_pointer ptrs
|
@@ -27,18 +27,18 @@ describe GLib::Strv do
|
|
27
27
|
strv.each do |str|
|
28
28
|
arr << str
|
29
29
|
end
|
30
|
-
assert_equal
|
30
|
+
assert_equal %w(one two three), arr
|
31
31
|
end
|
32
32
|
|
33
|
-
it
|
33
|
+
it 'yields zero times for a Strv wrapping a null pointer' do
|
34
34
|
strv = GLib::Strv.new FFI::Pointer.new(0)
|
35
|
-
strv.each do |
|
35
|
+
strv.each do |_str|
|
36
36
|
flunk
|
37
37
|
end
|
38
38
|
end
|
39
39
|
end
|
40
40
|
|
41
|
-
it
|
41
|
+
it 'includes Enumerable' do
|
42
42
|
GLib::Strv.must_include Enumerable
|
43
43
|
end
|
44
44
|
end
|
data/test/gir_ffi_test.rb
CHANGED
@@ -3,19 +3,19 @@ require 'gir_ffi_test_helper'
|
|
3
3
|
GirFFI.setup :GIMarshallingTests
|
4
4
|
|
5
5
|
describe GirFFI do
|
6
|
-
it
|
6
|
+
it 'sets up cairo as Cairo' do
|
7
7
|
GirFFI.setup :cairo
|
8
8
|
assert Object.const_defined?(:Cairo)
|
9
9
|
end
|
10
10
|
|
11
|
-
it
|
11
|
+
it 'sets up xlib, which has no shared library' do
|
12
12
|
gir = GObjectIntrospection::IRepository.default
|
13
13
|
gir.require 'xlib'
|
14
|
-
assert_nil gir.shared_library('xlib'),
|
14
|
+
assert_nil gir.shared_library('xlib'), 'Precondition for test failed'
|
15
15
|
GirFFI.setup :xlib
|
16
16
|
end
|
17
17
|
|
18
|
-
it
|
18
|
+
it 'sets up dependencies' do
|
19
19
|
save_module :GObject
|
20
20
|
save_module :Regress
|
21
21
|
GirFFI.setup :Regress
|
@@ -24,67 +24,67 @@ describe GirFFI do
|
|
24
24
|
restore_module :GObject
|
25
25
|
end
|
26
26
|
|
27
|
-
describe
|
28
|
-
describe
|
27
|
+
describe '::define_type' do
|
28
|
+
describe 'without a block' do
|
29
29
|
before do
|
30
30
|
@klass = Class.new GIMarshallingTests::OverridesObject
|
31
31
|
Object.const_set "DerivedA#{Sequence.next}", @klass
|
32
32
|
@gtype = GirFFI.define_type @klass
|
33
33
|
end
|
34
34
|
|
35
|
-
it
|
35
|
+
it 'returns a GType for the derived class' do
|
36
36
|
parent_gtype = GIMarshallingTests::OverridesObject.get_gtype
|
37
37
|
@gtype.wont_equal parent_gtype
|
38
38
|
GObject.type_name(@gtype).must_equal @klass.name
|
39
39
|
end
|
40
40
|
|
41
|
-
it
|
41
|
+
it 'makes #get_gtype on the registered class return the new GType' do
|
42
42
|
@klass.get_gtype.must_equal @gtype
|
43
43
|
end
|
44
44
|
|
45
|
-
it
|
45
|
+
it 'registers a type with the same size as the parent' do
|
46
46
|
q = GObject.type_query @gtype
|
47
47
|
q.instance_size.must_equal GIMarshallingTests::OverridesObject::Struct.size
|
48
48
|
end
|
49
49
|
|
50
|
-
it
|
50
|
+
it 'creates a struct class for the derived class with just one member' do
|
51
51
|
@klass::Struct.members.must_equal [:parent]
|
52
52
|
end
|
53
53
|
|
54
|
-
it
|
54
|
+
it 'allows the new class to be instantiated' do
|
55
55
|
obj = @klass.new
|
56
56
|
type = GObject.type_from_instance obj
|
57
57
|
type.must_equal @gtype
|
58
58
|
end
|
59
59
|
|
60
|
-
it
|
60
|
+
it 'makes GirFFI find the new class by GType' do
|
61
61
|
klass = GirFFI::Builder.build_by_gtype @gtype
|
62
62
|
klass.must_equal @klass
|
63
63
|
end
|
64
64
|
end
|
65
65
|
|
66
|
-
describe
|
66
|
+
describe 'with a block with a call to #install_property' do
|
67
67
|
before do
|
68
68
|
@klass = Class.new GIMarshallingTests::OverridesObject
|
69
69
|
Object.const_set "DerivedB#{Sequence.next}", @klass
|
70
70
|
@gtype = GirFFI.define_type @klass do |info|
|
71
|
-
info.install_property GObject.param_spec_int(
|
72
|
-
|
71
|
+
info.install_property GObject.param_spec_int('foo', 'foo bar',
|
72
|
+
'The Foo Bar Property',
|
73
73
|
10, 20, 15,
|
74
74
|
3)
|
75
75
|
end
|
76
76
|
end
|
77
77
|
|
78
|
-
it
|
78
|
+
it 'registers a type that is bigger than the parent' do
|
79
79
|
q = GObject.type_query @gtype
|
80
80
|
q.instance_size.must_be :>, GIMarshallingTests::OverridesObject::Struct.size
|
81
81
|
end
|
82
82
|
|
83
|
-
it
|
83
|
+
it 'gives the types Struct the fields :parent and :foo' do
|
84
84
|
@klass::Struct.members.must_equal [:parent, :foo]
|
85
85
|
end
|
86
86
|
|
87
|
-
it
|
87
|
+
it 'creates accessor functions for the property' do
|
88
88
|
obj = @klass.new
|
89
89
|
obj.foo = 13
|
90
90
|
obj.foo.must_equal 13
|
data/test/gir_ffi_test_helper.rb
CHANGED
@@ -4,17 +4,13 @@ require 'gir_ffi'
|
|
4
4
|
|
5
5
|
# Global sequence provider. Needed to make unique class names.
|
6
6
|
class Sequence
|
7
|
-
@@seq = 0
|
8
7
|
def self.next
|
9
|
-
|
8
|
+
@seq ||= 0
|
9
|
+
@seq += + 1
|
10
10
|
end
|
11
11
|
end
|
12
12
|
|
13
|
-
|
14
|
-
def cws code
|
15
|
-
code.gsub(/(^\s*|\s*$)/, "")
|
16
|
-
end
|
17
|
-
|
13
|
+
module GirFFITestExtensions
|
18
14
|
def get_field_introspection_data namespace, klass, name
|
19
15
|
get_introspection_data(namespace, klass).find_field name
|
20
16
|
end
|
@@ -38,21 +34,19 @@ class Minitest::Test
|
|
38
34
|
SAVED_MODULES = {}
|
39
35
|
|
40
36
|
def save_module name
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
end
|
37
|
+
return unless Object.const_defined? name
|
38
|
+
puts "Saving #{name} over existing" if SAVED_MODULES.key? name
|
39
|
+
SAVED_MODULES[name] = Object.const_get name
|
40
|
+
Object.send(:remove_const, name)
|
46
41
|
end
|
47
42
|
|
48
43
|
def restore_module name
|
49
44
|
if Object.const_defined? name
|
50
45
|
Object.send(:remove_const, name)
|
51
46
|
end
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
end
|
47
|
+
return unless SAVED_MODULES.key? name
|
48
|
+
Object.const_set name, SAVED_MODULES[name]
|
49
|
+
SAVED_MODULES.delete name
|
56
50
|
end
|
57
51
|
|
58
52
|
def ref_count object
|
@@ -60,11 +54,11 @@ class Minitest::Test
|
|
60
54
|
end
|
61
55
|
|
62
56
|
def max_for_unsigned_type type
|
63
|
-
(
|
57
|
+
(1 << (FFI.type_size(type) * 8)) - 1
|
64
58
|
end
|
65
59
|
|
66
60
|
def max_for_type type
|
67
|
-
(
|
61
|
+
(1 << (FFI.type_size(type) * 8 - 1)) - 1
|
68
62
|
end
|
69
63
|
|
70
64
|
def min_for_type type
|
@@ -105,3 +99,4 @@ class Minitest::Test
|
|
105
99
|
end
|
106
100
|
end
|
107
101
|
|
102
|
+
Minitest::Test.send :include, GirFFITestExtensions
|
@@ -3,24 +3,24 @@ require 'gir_ffi_test_helper'
|
|
3
3
|
GirFFI.setup :Regress
|
4
4
|
|
5
5
|
# Tests deriving Ruby classes from GObject classes.
|
6
|
-
describe
|
7
|
-
describe
|
6
|
+
describe 'For derived classes' do
|
7
|
+
describe 'setting up methods when first called' do
|
8
8
|
before do
|
9
9
|
save_module :GIMarshallingTests
|
10
10
|
GirFFI.setup :GIMarshallingTests
|
11
11
|
end
|
12
12
|
|
13
|
-
describe
|
13
|
+
describe 'when an interface is mixed in' do
|
14
14
|
before do
|
15
15
|
@klass = Class.new GIMarshallingTests::OverridesObject
|
16
16
|
@klass.send :include, GIMarshallingTests::Interface
|
17
17
|
end
|
18
18
|
|
19
|
-
it
|
19
|
+
it 'finds class methods in the superclass' do
|
20
20
|
@klass.returnv
|
21
21
|
end
|
22
22
|
|
23
|
-
it
|
23
|
+
it 'finds instance methods in the superclass' do
|
24
24
|
obj = @klass.new
|
25
25
|
result = obj.method
|
26
26
|
result.must_equal 42
|
@@ -32,10 +32,10 @@ describe "For derived classes" do
|
|
32
32
|
end
|
33
33
|
end
|
34
34
|
|
35
|
-
describe
|
36
|
-
it
|
35
|
+
describe 'the initializer' do
|
36
|
+
it 'does not have to call super' do
|
37
37
|
klass = Class.new Regress::TestSubObj do
|
38
|
-
def initialize *
|
38
|
+
def initialize *_args
|
39
39
|
end
|
40
40
|
end
|
41
41
|
|