gir_ffi 0.14.1 → 0.15.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.
- checksums.yaml +4 -4
- data/Changelog.md +56 -0
- data/README.md +12 -12
- data/TODO.md +14 -35
- data/docs/Documentation.md +6 -0
- data/docs/Subclassing.md +38 -0
- data/lib/ffi-glib.rb +26 -21
- data/lib/ffi-glib/array.rb +14 -4
- data/lib/ffi-glib/byte_array.rb +9 -3
- data/lib/ffi-glib/container_class_methods.rb +1 -1
- data/lib/ffi-glib/destroy_notify.rb +2 -2
- data/lib/ffi-glib/error.rb +1 -1
- data/lib/ffi-glib/hash_table.rb +4 -5
- data/lib/ffi-glib/list.rb +12 -6
- data/lib/ffi-glib/list_methods.rb +13 -1
- data/lib/ffi-glib/main_loop.rb +3 -3
- data/lib/ffi-glib/ptr_array.rb +30 -8
- data/lib/ffi-glib/s_list.rb +11 -5
- data/lib/ffi-glib/variant.rb +1 -1
- data/lib/ffi-gobject.rb +13 -16
- data/lib/ffi-gobject/object.rb +82 -87
- data/lib/ffi-gobject/object_class.rb +1 -1
- data/lib/ffi-gobject/param_spec.rb +1 -1
- data/lib/ffi-gobject/ruby_closure.rb +2 -2
- data/lib/ffi-gobject/value.rb +136 -126
- data/lib/ffi-gobject_introspection.rb +20 -20
- data/lib/ffi-gobject_introspection/gobject_type_init.rb +2 -2
- data/lib/ffi-gobject_introspection/i_arg_info.rb +2 -2
- data/lib/ffi-gobject_introspection/i_base_info.rb +34 -23
- data/lib/ffi-gobject_introspection/i_callable_info.rb +4 -4
- data/lib/ffi-gobject_introspection/i_constant_info.rb +2 -2
- data/lib/ffi-gobject_introspection/i_enum_info.rb +1 -0
- data/lib/ffi-gobject_introspection/i_field_info.rb +1 -1
- data/lib/ffi-gobject_introspection/i_function_info.rb +1 -1
- data/lib/ffi-gobject_introspection/i_interface_info.rb +1 -1
- data/lib/ffi-gobject_introspection/i_object_info.rb +2 -2
- data/lib/ffi-gobject_introspection/i_property_info.rb +2 -2
- data/lib/ffi-gobject_introspection/i_repository.rb +9 -6
- data/lib/ffi-gobject_introspection/i_struct_info.rb +2 -1
- data/lib/ffi-gobject_introspection/i_type_info.rb +13 -7
- data/lib/ffi-gobject_introspection/i_unresolved_info.rb +1 -1
- data/lib/ffi-gobject_introspection/i_vfunc_info.rb +1 -1
- data/lib/ffi-gobject_introspection/lib.rb +30 -19
- data/lib/ffi-gobject_introspection/strv.rb +1 -1
- data/lib/gir_ffi-base.rb +1 -1
- data/lib/gir_ffi-base/gobject.rb +26 -25
- data/lib/gir_ffi-base/gobject/lib.rb +7 -2
- data/lib/gir_ffi.rb +3 -3
- data/lib/gir_ffi/allocation_helper.rb +1 -1
- data/lib/gir_ffi/arg_helper.rb +4 -4
- data/lib/gir_ffi/{in_out_pointer.rb → array_element_convertor.rb} +16 -24
- data/lib/gir_ffi/boolean.rb +1 -1
- data/lib/gir_ffi/boxed_base.rb +2 -6
- data/lib/gir_ffi/builder.rb +19 -11
- data/lib/gir_ffi/builder_helper.rb +10 -2
- data/lib/gir_ffi/builders/argument_builder.rb +19 -19
- data/lib/gir_ffi/builders/argument_builder_collection.rb +2 -2
- data/lib/gir_ffi/builders/base_argument_builder.rb +2 -1
- data/lib/gir_ffi/builders/base_method_builder.rb +8 -8
- data/lib/gir_ffi/builders/base_return_value_builder.rb +1 -1
- data/lib/gir_ffi/builders/base_type_builder.rb +2 -2
- data/lib/gir_ffi/builders/c_to_ruby_convertor.rb +5 -5
- data/lib/gir_ffi/builders/callback_argument_builder.rb +10 -8
- data/lib/gir_ffi/builders/callback_builder.rb +28 -14
- data/lib/gir_ffi/builders/callback_return_value_builder.rb +6 -8
- data/lib/gir_ffi/builders/class_struct_builder.rb +24 -0
- data/lib/gir_ffi/builders/closure_argument_builder.rb +1 -1
- data/lib/gir_ffi/builders/closure_return_value_builder.rb +1 -1
- data/lib/gir_ffi/builders/constant_builder.rb +1 -1
- data/lib/gir_ffi/builders/constructor_builder.rb +9 -9
- data/lib/gir_ffi/builders/enum_builder.rb +11 -7
- data/lib/gir_ffi/builders/field_builder.rb +20 -18
- data/lib/gir_ffi/builders/flags_builder.rb +2 -2
- data/lib/gir_ffi/builders/full_c_to_ruby_convertor.rb +1 -1
- data/lib/gir_ffi/builders/function_builder.rb +11 -5
- data/lib/gir_ffi/builders/initializer_builder.rb +3 -3
- data/lib/gir_ffi/builders/initializer_return_value_builder.rb +2 -2
- data/lib/gir_ffi/builders/interface_builder.rb +5 -3
- data/lib/gir_ffi/builders/mapping_method_builder.rb +10 -10
- data/lib/gir_ffi/builders/marshalling_method_builder.rb +12 -9
- data/lib/gir_ffi/builders/method_template.rb +5 -5
- data/lib/gir_ffi/builders/module_builder.rb +7 -7
- data/lib/gir_ffi/builders/null_argument_builder.rb +0 -2
- data/lib/gir_ffi/builders/null_return_value_builder.rb +0 -2
- data/lib/gir_ffi/builders/object_builder.rb +22 -12
- data/lib/gir_ffi/builders/property_argument_builder.rb +1 -1
- data/lib/gir_ffi/builders/property_builder.rb +14 -14
- data/lib/gir_ffi/builders/property_return_value_builder.rb +1 -1
- data/lib/gir_ffi/builders/registered_type_builder.rb +14 -5
- data/lib/gir_ffi/builders/return_value_builder.rb +4 -4
- data/lib/gir_ffi/builders/ruby_to_c_convertor.rb +6 -6
- data/lib/gir_ffi/builders/signal_closure_builder.rb +5 -7
- data/lib/gir_ffi/builders/struct_builder.rb +8 -6
- data/lib/gir_ffi/builders/struct_like.rb +1 -1
- data/lib/gir_ffi/builders/type_builder.rb +12 -12
- data/lib/gir_ffi/builders/unintrospectable_boxed_builder.rb +2 -2
- data/lib/gir_ffi/builders/unintrospectable_builder.rb +2 -2
- data/lib/gir_ffi/builders/union_builder.rb +4 -4
- data/lib/gir_ffi/builders/user_defined_builder.rb +10 -3
- data/lib/gir_ffi/builders/vfunc_argument_builder.rb +2 -2
- data/lib/gir_ffi/builders/vfunc_builder.rb +8 -8
- data/lib/gir_ffi/builders/with_layout.rb +2 -2
- data/lib/gir_ffi/callback_base.rb +7 -9
- data/lib/gir_ffi/class_base.rb +6 -5
- data/lib/gir_ffi/core.rb +36 -22
- data/lib/gir_ffi/enum_base.rb +1 -1
- data/lib/gir_ffi/enum_like_base.rb +2 -2
- data/lib/gir_ffi/error_argument_info.rb +2 -2
- data/lib/gir_ffi/error_type_info.rb +1 -1
- data/lib/gir_ffi/ffi_ext.rb +1 -1
- data/lib/gir_ffi/ffi_ext/pointer.rb +1 -1
- data/lib/gir_ffi/flags_base.rb +1 -1
- data/lib/gir_ffi/glib_error.rb +1 -2
- data/lib/gir_ffi/in_pointer.rb +17 -0
- data/lib/gir_ffi/info_ext.rb +15 -15
- data/lib/gir_ffi/info_ext/full_type_name.rb +3 -3
- data/lib/gir_ffi/info_ext/i_arg_info.rb +1 -1
- data/lib/gir_ffi/info_ext/i_callable_info.rb +1 -1
- data/lib/gir_ffi/info_ext/i_callback_info.rb +1 -1
- data/lib/gir_ffi/info_ext/i_field_info.rb +1 -1
- data/lib/gir_ffi/info_ext/i_function_info.rb +1 -1
- data/lib/gir_ffi/info_ext/i_property_info.rb +2 -2
- data/lib/gir_ffi/info_ext/i_registered_type_info.rb +4 -5
- data/lib/gir_ffi/info_ext/i_signal_info.rb +7 -3
- data/lib/gir_ffi/info_ext/i_type_info.rb +48 -26
- data/lib/gir_ffi/info_ext/i_unresolved_info.rb +1 -1
- data/lib/gir_ffi/info_ext/i_value_info.rb +2 -2
- data/lib/gir_ffi/info_ext/i_vfunc_info.rb +2 -2
- data/lib/gir_ffi/info_ext/safe_constant_name.rb +8 -8
- data/lib/gir_ffi/info_ext/safe_function_name.rb +2 -2
- data/lib/gir_ffi/interface_base.rb +3 -3
- data/lib/gir_ffi/lib_c.rb +1 -1
- data/lib/gir_ffi/method_stubber.rb +1 -1
- data/lib/gir_ffi/module_base.rb +1 -1
- data/lib/gir_ffi/object_base.rb +30 -4
- data/lib/gir_ffi/receiver_argument_info.rb +1 -1
- data/lib/gir_ffi/receiver_type_info.rb +2 -2
- data/lib/gir_ffi/registered_type_base.rb +1 -1
- data/lib/gir_ffi/return_value_info.rb +1 -2
- data/lib/gir_ffi/sized_array.rb +4 -2
- data/lib/gir_ffi/struct.rb +1 -1
- data/lib/gir_ffi/struct_base.rb +2 -10
- data/lib/gir_ffi/struct_like_base.rb +9 -5
- data/lib/gir_ffi/type_map.rb +2 -23
- data/lib/gir_ffi/unintrospectable_boxed_info.rb +2 -2
- data/lib/gir_ffi/unintrospectable_type_info.rb +6 -2
- data/lib/gir_ffi/union.rb +1 -1
- data/lib/gir_ffi/union_base.rb +2 -10
- data/lib/gir_ffi/user_defined_object_info.rb +9 -4
- data/lib/gir_ffi/user_defined_property_info.rb +33 -33
- data/lib/gir_ffi/version.rb +1 -1
- data/lib/gir_ffi/vfunc_implementation.rb +1 -0
- metadata +102 -155
- data/Gemfile +0 -12
- data/Rakefile +0 -9
- data/lib/ffi-glib/array_methods.rb +0 -16
- data/tasks/test.rake +0 -203
- data/test/base_test_helper.rb +0 -63
- data/test/ffi-glib/array_test.rb +0 -188
- data/test/ffi-glib/byte_array_test.rb +0 -22
- data/test/ffi-glib/bytes_test.rb +0 -56
- data/test/ffi-glib/closure_test.rb +0 -38
- data/test/ffi-glib/destroy_notify_test.rb +0 -18
- data/test/ffi-glib/hash_table_test.rb +0 -68
- data/test/ffi-glib/list_test.rb +0 -86
- data/test/ffi-glib/main_loop_test.rb +0 -53
- data/test/ffi-glib/ptr_array_test.rb +0 -112
- data/test/ffi-glib/ruby_closure_test.rb +0 -62
- data/test/ffi-glib/s_list_test.rb +0 -76
- data/test/ffi-glib/strv_test.rb +0 -60
- data/test/ffi-glib/variant_test.rb +0 -12
- data/test/ffi-gobject/gobject_test.rb +0 -72
- data/test/ffi-gobject/object_class_test.rb +0 -31
- data/test/ffi-gobject/object_test.rb +0 -140
- data/test/ffi-gobject/param_spec_test.rb +0 -32
- data/test/ffi-gobject/value_test.rb +0 -370
- data/test/ffi-gobject_introspection/gobject_type_init_test.rb +0 -26
- data/test/ffi-gobject_introspection/i_base_info_test.rb +0 -53
- data/test/ffi-gobject_introspection/i_constant_info_test.rb +0 -33
- data/test/ffi-gobject_introspection/i_enum_info_test.rb +0 -18
- data/test/ffi-gobject_introspection/i_function_info_test.rb +0 -6
- data/test/ffi-gobject_introspection/i_interface_info_test.rb +0 -23
- data/test/ffi-gobject_introspection/i_object_info_test.rb +0 -49
- data/test/ffi-gobject_introspection/i_property_info_test.rb +0 -47
- data/test/ffi-gobject_introspection/i_registered_type_info_test.rb +0 -27
- data/test/ffi-gobject_introspection/i_repository_test.rb +0 -81
- data/test/ffi-gobject_introspection/i_struct_info_test.rb +0 -23
- data/test/ffi-gobject_introspection/i_type_info_test.rb +0 -33
- data/test/ffi-gobject_introspection/i_union_info_test.rb +0 -17
- data/test/ffi-gobject_introspection/i_vfunc_info_test.rb +0 -41
- data/test/ffi-gobject_introspection/lib_test.rb +0 -13
- data/test/ffi-gobject_introspection/strv_test.rb +0 -46
- data/test/ffi-gobject_test.rb +0 -151
- data/test/gir_ffi/allocation_helper_test.rb +0 -36
- data/test/gir_ffi/arg_helper_test.rb +0 -140
- data/test/gir_ffi/boolean_test.rb +0 -43
- data/test/gir_ffi/boxed_base_test.rb +0 -65
- data/test/gir_ffi/builder_test.rb +0 -300
- data/test/gir_ffi/builders/argument_builder_test.rb +0 -657
- data/test/gir_ffi/builders/base_argument_builder_test.rb +0 -6
- data/test/gir_ffi/builders/callback_argument_builder_test.rb +0 -129
- data/test/gir_ffi/builders/callback_builder_test.rb +0 -118
- data/test/gir_ffi/builders/callback_return_value_builder_test.rb +0 -85
- data/test/gir_ffi/builders/constant_builder_test.rb +0 -6
- data/test/gir_ffi/builders/constructor_builder_test.rb +0 -37
- data/test/gir_ffi/builders/enum_builder_test.rb +0 -23
- data/test/gir_ffi/builders/field_builder_test.rb +0 -134
- data/test/gir_ffi/builders/function_builder_test.rb +0 -538
- data/test/gir_ffi/builders/initializer_builder_test.rb +0 -54
- data/test/gir_ffi/builders/interface_builder_test.rb +0 -32
- data/test/gir_ffi/builders/module_builder_test.rb +0 -43
- data/test/gir_ffi/builders/object_builder_test.rb +0 -98
- data/test/gir_ffi/builders/property_builder_test.rb +0 -161
- data/test/gir_ffi/builders/registered_type_builder_test.rb +0 -30
- data/test/gir_ffi/builders/return_value_builder_test.rb +0 -440
- data/test/gir_ffi/builders/signal_closure_builder_test.rb +0 -188
- data/test/gir_ffi/builders/struct_builder_test.rb +0 -93
- data/test/gir_ffi/builders/unintrospectable_boxed_builder_test.rb +0 -35
- data/test/gir_ffi/builders/unintrospectable_builder_test.rb +0 -73
- data/test/gir_ffi/builders/union_builder_test.rb +0 -31
- data/test/gir_ffi/builders/user_defined_builder_test.rb +0 -524
- data/test/gir_ffi/builders/vfunc_argument_builder_test.rb +0 -101
- data/test/gir_ffi/builders/vfunc_builder_test.rb +0 -253
- data/test/gir_ffi/callback_base_test.rb +0 -22
- data/test/gir_ffi/class_base_test.rb +0 -168
- data/test/gir_ffi/core_test.rb +0 -98
- data/test/gir_ffi/enum_base_test.rb +0 -43
- data/test/gir_ffi/error_type_info_test.rb +0 -50
- data/test/gir_ffi/ffi_ext/pointer_test.rb +0 -20
- data/test/gir_ffi/g_type_test.rb +0 -31
- data/test/gir_ffi/in_out_pointer_test.rb +0 -56
- data/test/gir_ffi/in_pointer_test.rb +0 -183
- data/test/gir_ffi/info_ext/i_callable_info_test.rb +0 -26
- data/test/gir_ffi/info_ext/i_callback_info_test.rb +0 -21
- data/test/gir_ffi/info_ext/i_field_info_test.rb +0 -37
- data/test/gir_ffi/info_ext/i_function_info_test.rb +0 -74
- data/test/gir_ffi/info_ext/i_signal_info_test.rb +0 -32
- data/test/gir_ffi/info_ext/i_type_info_test.rb +0 -697
- data/test/gir_ffi/info_ext/i_unresolved_info_test.rb +0 -19
- data/test/gir_ffi/info_ext/safe_constant_name_test.rb +0 -26
- data/test/gir_ffi/info_ext/safe_function_name_test.rb +0 -26
- data/test/gir_ffi/interface_base_test.rb +0 -20
- data/test/gir_ffi/method_stubber_test.rb +0 -65
- data/test/gir_ffi/object_base_test.rb +0 -64
- data/test/gir_ffi/object_store_test.rb +0 -41
- data/test/gir_ffi/receiver_argument_info_test.rb +0 -33
- data/test/gir_ffi/sized_array_test.rb +0 -206
- data/test/gir_ffi/struct_base_test.rb +0 -23
- data/test/gir_ffi/struct_like_base_test.rb +0 -167
- data/test/gir_ffi/type_map_test.rb +0 -17
- data/test/gir_ffi/unintrospectable_type_info_test.rb +0 -121
- data/test/gir_ffi/union_base_test.rb +0 -23
- data/test/gir_ffi/user_defined_object_info_test.rb +0 -119
- data/test/gir_ffi/user_defined_property_info_test.rb +0 -39
- data/test/gir_ffi/variable_name_generator_test.rb +0 -18
- data/test/gir_ffi/version_test.rb +0 -9
- data/test/gir_ffi/zero_terminated_test.rb +0 -108
- data/test/gir_ffi_test_helper.rb +0 -84
- data/test/integration/callback_exceptions_test.rb +0 -63
- data/test/integration/derived_classes_test.rb +0 -53
- data/test/integration/generated_everything_test.rb +0 -452
- data/test/integration/generated_gimarshallingtests_test.rb +0 -2995
- data/test/integration/generated_gio_test.rb +0 -116
- data/test/integration/generated_glib_test.rb +0 -12
- data/test/integration/generated_gobject_test.rb +0 -116
- data/test/integration/generated_gst_test.rb +0 -34
- data/test/integration/generated_gtk_source_test.rb +0 -27
- data/test/integration/generated_gtop_test.rb +0 -29
- data/test/integration/generated_pango_ft2_test.rb +0 -17
- data/test/integration/generated_pango_test.rb +0 -24
- data/test/integration/generated_regress_test.rb +0 -3850
- data/test/integration/generated_secret_test.rb +0 -17
- data/test/integration/generated_utility_test.rb +0 -174
- data/test/integration/generated_warnlib_test.rb +0 -49
- data/test/integration/method_lookup_test.rb +0 -34
- data/test/introspection_test_helper.rb +0 -52
- data/test/lib/Makefile.am +0 -110
- data/test/lib/autogen.sh +0 -4
- data/test/lib/configure.ac +0 -34
- data/test/lib/m4/jhflags.m4 +0 -21
- data/test/minitest/stats_plugin.rb +0 -30
data/test/gir_ffi/core_test.rb
DELETED
@@ -1,98 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'gir_ffi_test_helper'
|
4
|
-
|
5
|
-
GirFFI.setup :GIMarshallingTests
|
6
|
-
|
7
|
-
describe GirFFI::Core do
|
8
|
-
it 'sets up cairo as Cairo' do
|
9
|
-
GirFFI.setup :cairo
|
10
|
-
assert Object.const_defined?(:Cairo)
|
11
|
-
end
|
12
|
-
|
13
|
-
it 'sets up xlib, which has no shared library' do
|
14
|
-
gir = GObjectIntrospection::IRepository.default
|
15
|
-
gir.require 'xlib'
|
16
|
-
assert_nil gir.shared_library('xlib'), 'Precondition for test failed'
|
17
|
-
GirFFI.setup :xlib
|
18
|
-
end
|
19
|
-
|
20
|
-
it 'sets up dependencies' do
|
21
|
-
save_module :GObject
|
22
|
-
save_module :Regress
|
23
|
-
GirFFI.setup :Regress
|
24
|
-
assert Object.const_defined?(:GObject)
|
25
|
-
restore_module :Regress
|
26
|
-
restore_module :GObject
|
27
|
-
end
|
28
|
-
|
29
|
-
describe '.setup' do
|
30
|
-
it 'passes the desired version down to the module builder' do
|
31
|
-
expect(GirFFI::Builder).to receive(:build_module).with('Regress', '0.1')
|
32
|
-
GirFFI.setup :Regress, '0.1'
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
describe '::define_type' do
|
37
|
-
describe 'without a block' do
|
38
|
-
before do
|
39
|
-
@klass = Class.new GIMarshallingTests::OverridesObject
|
40
|
-
Object.const_set "DerivedA#{Sequence.next}", @klass
|
41
|
-
@gtype = GirFFI.define_type @klass
|
42
|
-
end
|
43
|
-
|
44
|
-
it 'returns a GType for the derived class' do
|
45
|
-
parent_gtype = GIMarshallingTests::OverridesObject.gtype
|
46
|
-
@gtype.wont_equal parent_gtype
|
47
|
-
GObject.type_name(@gtype).must_equal @klass.name
|
48
|
-
end
|
49
|
-
|
50
|
-
it 'makes #gtype on the registered class return the new GType' do
|
51
|
-
@klass.gtype.must_equal @gtype
|
52
|
-
end
|
53
|
-
|
54
|
-
it 'registers a type with the same size as the parent' do
|
55
|
-
q = GObject.type_query @gtype
|
56
|
-
q.instance_size.must_equal GIMarshallingTests::OverridesObject::Struct.size
|
57
|
-
end
|
58
|
-
|
59
|
-
it 'creates a struct class for the derived class with just one member' do
|
60
|
-
@klass::Struct.members.must_equal [:parent]
|
61
|
-
end
|
62
|
-
|
63
|
-
it 'allows the new class to be instantiated' do
|
64
|
-
obj = @klass.new
|
65
|
-
type = GObject.type_from_instance obj
|
66
|
-
type.must_equal @gtype
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
|
-
describe 'with a block with a call to #install_property' do
|
71
|
-
before do
|
72
|
-
@klass = Class.new GIMarshallingTests::OverridesObject
|
73
|
-
Object.const_set "DerivedB#{Sequence.next}", @klass
|
74
|
-
@gtype = GirFFI.define_type @klass do |info|
|
75
|
-
info.install_property GObject.param_spec_int('foo', 'foo bar',
|
76
|
-
'The Foo Bar Property',
|
77
|
-
10, 20, 15,
|
78
|
-
3)
|
79
|
-
end
|
80
|
-
end
|
81
|
-
|
82
|
-
it 'registers a type that is bigger than the parent' do
|
83
|
-
q = GObject.type_query @gtype
|
84
|
-
q.instance_size.must_be :>, GIMarshallingTests::OverridesObject::Struct.size
|
85
|
-
end
|
86
|
-
|
87
|
-
it 'gives the types Struct the fields :parent and :foo' do
|
88
|
-
@klass::Struct.members.must_equal [:parent, :foo]
|
89
|
-
end
|
90
|
-
|
91
|
-
it 'creates accessor functions for the property' do
|
92
|
-
obj = @klass.new
|
93
|
-
obj.foo = 13
|
94
|
-
obj.foo.must_equal 13
|
95
|
-
end
|
96
|
-
end
|
97
|
-
end
|
98
|
-
end
|
@@ -1,43 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'gir_ffi_test_helper'
|
4
|
-
|
5
|
-
GirFFI.setup :Regress
|
6
|
-
|
7
|
-
describe GirFFI::EnumBase do
|
8
|
-
describe '.wrap' do
|
9
|
-
it 'converts an integer to a symbol if possible' do
|
10
|
-
Regress::TestEnum.wrap(1).must_equal :value2
|
11
|
-
end
|
12
|
-
|
13
|
-
it 'passes an integer if it cannot be converted' do
|
14
|
-
Regress::TestEnum.wrap(32).must_equal 32
|
15
|
-
end
|
16
|
-
|
17
|
-
it 'passes a known symbol untouched' do
|
18
|
-
Regress::TestEnum.wrap(:value1).must_equal :value1
|
19
|
-
end
|
20
|
-
|
21
|
-
it 'passes an unknown symbol untouched' do
|
22
|
-
Regress::TestEnum.wrap(:foo).must_equal :foo
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
describe '.to_int' do
|
27
|
-
it 'passes a known integer untouched' do
|
28
|
-
Regress::TestEnum.to_int(1).must_equal 1
|
29
|
-
end
|
30
|
-
|
31
|
-
it 'passes an unknown integer untouched' do
|
32
|
-
Regress::TestEnum.to_int(32).must_equal 32
|
33
|
-
end
|
34
|
-
|
35
|
-
it 'convertes a known symbol to an integer' do
|
36
|
-
Regress::TestEnum.to_int(:value1).must_equal 0
|
37
|
-
end
|
38
|
-
|
39
|
-
it 'raises an error for an unknown symbol' do
|
40
|
-
-> { Regress::TestEnum.to_int(:foo) }.must_raise ArgumentError
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
@@ -1,50 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'gir_ffi_test_helper'
|
4
|
-
require 'gir_ffi/error_type_info'
|
5
|
-
|
6
|
-
describe GirFFI::ErrorTypeInfo do
|
7
|
-
let(:instance) { GirFFI::ErrorTypeInfo.new }
|
8
|
-
|
9
|
-
describe '#array_length' do
|
10
|
-
it 'returns the correct value' do
|
11
|
-
instance.array_length.must_equal(-1)
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
describe '#tag_or_class' do
|
16
|
-
it 'returns the correct value' do
|
17
|
-
instance.tag_or_class.must_equal [:pointer, :error]
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
describe '#pointer?' do
|
22
|
-
it 'returns the correct value' do
|
23
|
-
instance.pointer?.must_equal true
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
describe '#flattened_tag' do
|
28
|
-
it 'returns the correct value' do
|
29
|
-
instance.flattened_tag.must_equal :error
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
describe '#extra_conversion_arguments' do
|
34
|
-
it 'returns the correct value' do
|
35
|
-
instance.extra_conversion_arguments.must_equal []
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
describe '#argument_class_name' do
|
40
|
-
it 'returns the correct value' do
|
41
|
-
instance.argument_class_name.must_equal 'GLib::Error'
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
describe '#needs_ruby_to_c_conversion_for_callbacks?' do
|
46
|
-
it 'returns the correct value' do
|
47
|
-
instance.needs_ruby_to_c_conversion_for_callbacks?.must_equal true
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
@@ -1,20 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'gir_ffi_test_helper'
|
4
|
-
|
5
|
-
describe GirFFI::FFIExt::Pointer do
|
6
|
-
let(:pointer_class) { Class.new { include GirFFI::FFIExt::Pointer } }
|
7
|
-
describe '#to_object' do
|
8
|
-
it 'finds the wrapping class by gtype and wraps the pointer in it' do
|
9
|
-
ptr = pointer_class.new
|
10
|
-
expect(ptr).to receive(:null?).and_return false
|
11
|
-
object_class = Class.new
|
12
|
-
|
13
|
-
expect(GObject).to receive(:type_from_instance_pointer).with(ptr).and_return 0xdeadbeef
|
14
|
-
expect(GirFFI::Builder).to receive(:build_by_gtype).with(0xdeadbeef).and_return object_class
|
15
|
-
expect(object_class).to receive(:direct_wrap).with(ptr).and_return 'good-result'
|
16
|
-
|
17
|
-
ptr.to_object.must_equal 'good-result'
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
data/test/gir_ffi/g_type_test.rb
DELETED
@@ -1,31 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'gir_ffi_test_helper'
|
4
|
-
|
5
|
-
require 'gir_ffi/g_type'
|
6
|
-
|
7
|
-
describe GirFFI::GType do
|
8
|
-
let(:gobject_gtype) { GObject::Object.gtype }
|
9
|
-
let(:gobject_type_query) { GObject.type_query gobject_gtype }
|
10
|
-
|
11
|
-
describe '#to_i' do
|
12
|
-
it 'returns the integer gtype' do
|
13
|
-
gt = GirFFI::GType.new(gobject_gtype)
|
14
|
-
gt.to_i.must_equal gobject_gtype
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
describe '#class_size' do
|
19
|
-
it 'returns the class size for object types' do
|
20
|
-
gt = GirFFI::GType.new(gobject_gtype)
|
21
|
-
gt.class_size.must_equal gobject_type_query.class_size
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
describe '#instance_size' do
|
26
|
-
it 'returns the instance size for object types' do
|
27
|
-
gt = GirFFI::GType.new(gobject_gtype)
|
28
|
-
gt.instance_size.must_equal gobject_type_query.instance_size
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
@@ -1,56 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'gir_ffi_test_helper'
|
4
|
-
|
5
|
-
describe GirFFI::InOutPointer do
|
6
|
-
describe '.new' do
|
7
|
-
it 'wraps an existing pointer and a type' do
|
8
|
-
ptr = FFI::MemoryPointer.new(:int32)
|
9
|
-
ptr.put_int32 0, 42
|
10
|
-
instance = GirFFI::InOutPointer.new :gint32, ptr
|
11
|
-
instance.to_value.must_equal 42
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
describe '#to_value' do
|
16
|
-
it 'returns the held value' do
|
17
|
-
ptr = GirFFI::InOutPointer.allocate_new :gint32
|
18
|
-
ptr.put_int32 0, 123
|
19
|
-
assert_equal 123, ptr.to_value
|
20
|
-
end
|
21
|
-
|
22
|
-
describe 'for :gboolean values' do
|
23
|
-
it 'works when the value is false' do
|
24
|
-
ptr = GirFFI::InOutPointer.allocate_new :gboolean
|
25
|
-
ptr.put_int 0, 0
|
26
|
-
ptr.to_value.must_equal false
|
27
|
-
end
|
28
|
-
|
29
|
-
it 'works when the value is true' do
|
30
|
-
ptr = GirFFI::InOutPointer.allocate_new :gboolean
|
31
|
-
ptr.put_int 0, 1
|
32
|
-
ptr.to_value.must_equal true
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
describe 'for :utf8 values' do
|
37
|
-
it 'returns a pointer to the held string value' do
|
38
|
-
str_ptr = GirFFI::InPointer.from_utf8 'Some value'
|
39
|
-
ptr = GirFFI::InOutPointer.allocate_new :utf8
|
40
|
-
ptr.put_pointer 0, str_ptr
|
41
|
-
assert_equal 'Some value', ptr.to_value.read_string
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
describe 'for struct values' do
|
46
|
-
it 'returns a pointer to the held value' do
|
47
|
-
val = GObject::EnumValue.new
|
48
|
-
val.value = 3
|
49
|
-
ptr = GirFFI::InOutPointer.allocate_new GObject::EnumValue
|
50
|
-
GObject::EnumValue.copy_value_to_pointer val, ptr
|
51
|
-
result = ptr.to_value
|
52
|
-
GObject::EnumValue.wrap(result).value.must_equal 3
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
@@ -1,183 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'gir_ffi_test_helper'
|
4
|
-
|
5
|
-
require 'gir_ffi/in_pointer'
|
6
|
-
|
7
|
-
describe GirFFI::InPointer do
|
8
|
-
describe '.from_array' do
|
9
|
-
it 'returns nil when passed nil' do
|
10
|
-
result = GirFFI::InPointer.from_array :gint32, nil
|
11
|
-
assert_nil result
|
12
|
-
end
|
13
|
-
|
14
|
-
it 'handles type tag :GType' do
|
15
|
-
GirFFI::InPointer.from_array :GType, [2]
|
16
|
-
end
|
17
|
-
|
18
|
-
it 'handles enum types' do
|
19
|
-
e = Module.new do
|
20
|
-
extend GirFFI::EnumBase
|
21
|
-
self::Enum = FFI::Enum.new [:foo, :bar, :baz], :qux
|
22
|
-
end
|
23
|
-
ptr = GirFFI::InPointer.from_array e, [:bar, :foo, :baz]
|
24
|
-
ptr.read_array_of_int32(3).must_equal [1, 0, 2]
|
25
|
-
end
|
26
|
-
|
27
|
-
it 'handles struct types' do
|
28
|
-
e = Class.new(GirFFI::StructBase) do
|
29
|
-
self::Struct = Class.new(GirFFI::Struct) do
|
30
|
-
layout :foo, :int32, :bar, :int32
|
31
|
-
end
|
32
|
-
end
|
33
|
-
struct = e::Struct.allocate
|
34
|
-
struct[:foo] = 42
|
35
|
-
struct[:bar] = 24
|
36
|
-
ptr = GirFFI::InPointer.from_array e, [struct]
|
37
|
-
ptr.wont_be :==, struct.to_ptr
|
38
|
-
new_struct = e::Struct.new ptr
|
39
|
-
new_struct[:foo].must_equal 42
|
40
|
-
new_struct[:bar].must_equal 24
|
41
|
-
end
|
42
|
-
|
43
|
-
it 'handles typed pointers' do
|
44
|
-
p1 = GirFFI::InPointer.from :gint32, 42
|
45
|
-
p2 = GirFFI::InPointer.from :gint32, 24
|
46
|
-
|
47
|
-
ptr = GirFFI::InPointer.from_array [:pointer, :gint32], [p1, p2]
|
48
|
-
|
49
|
-
ptr.read_array_of_pointer(2).must_equal [p1, p2]
|
50
|
-
end
|
51
|
-
|
52
|
-
it 'handles pointer casting' do
|
53
|
-
ptr = GirFFI::InPointer.from_array [:pointer, :gint32], [42, 24]
|
54
|
-
|
55
|
-
ptr.read_array_of_pointer(2).map(&:address).must_equal [42, 24]
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
describe 'an instance created with .from_array :gint32' do
|
60
|
-
before do
|
61
|
-
@result = GirFFI::InPointer.from_array :gint32, [24, 13]
|
62
|
-
end
|
63
|
-
|
64
|
-
it 'holds a pointer to the correct input values' do
|
65
|
-
assert_equal 24, @result.get_int(0)
|
66
|
-
assert_equal 13, @result.get_int(4)
|
67
|
-
end
|
68
|
-
|
69
|
-
it 'is an instance of FFI::MemoryPointer' do
|
70
|
-
@result.must_be_instance_of FFI::MemoryPointer
|
71
|
-
end
|
72
|
-
|
73
|
-
it 'is zero-terminated' do
|
74
|
-
assert_equal 0, @result.get_int(8)
|
75
|
-
end
|
76
|
-
end
|
77
|
-
|
78
|
-
describe 'an instance created with .from_array :utf8' do
|
79
|
-
before do
|
80
|
-
@result = GirFFI::InPointer.from_array :utf8, %w(foo bar baz)
|
81
|
-
end
|
82
|
-
|
83
|
-
it 'returns an array of pointers to strings' do
|
84
|
-
ary = @result.read_array_of_pointer(3)
|
85
|
-
assert_equal %w(foo bar baz), ary.map(&:read_string)
|
86
|
-
end
|
87
|
-
end
|
88
|
-
|
89
|
-
describe 'an instance created with .from_array :filename' do
|
90
|
-
before do
|
91
|
-
@result = GirFFI::InPointer.from_array :filename, %w(foo bar baz)
|
92
|
-
end
|
93
|
-
|
94
|
-
it 'returns an array of pointers to strings' do
|
95
|
-
ary = @result.read_array_of_pointer(3)
|
96
|
-
assert_equal %w(foo bar baz), ary.map(&:read_string)
|
97
|
-
end
|
98
|
-
end
|
99
|
-
|
100
|
-
describe 'an instance created with .from :utf8' do
|
101
|
-
before do
|
102
|
-
@result = GirFFI::InPointer.from :utf8, 'foo'
|
103
|
-
end
|
104
|
-
|
105
|
-
it 'returns a pointer to the given string' do
|
106
|
-
assert_equal 'foo', @result.read_string
|
107
|
-
end
|
108
|
-
|
109
|
-
it 'is an instance of FFI::MemoryPointer' do
|
110
|
-
@result.must_be_instance_of FFI::MemoryPointer
|
111
|
-
end
|
112
|
-
end
|
113
|
-
|
114
|
-
describe 'an instance created with .from :guint32' do
|
115
|
-
before do
|
116
|
-
@result = GirFFI::InPointer.from :guint32, 12_345
|
117
|
-
end
|
118
|
-
|
119
|
-
it 'returns a pointer with an address equal to the given value' do
|
120
|
-
assert_equal 12_345, @result.address
|
121
|
-
end
|
122
|
-
|
123
|
-
it 'is an instance of FFI::Pointer' do
|
124
|
-
@result.must_be_instance_of FFI::Pointer
|
125
|
-
end
|
126
|
-
end
|
127
|
-
|
128
|
-
describe 'an instance created with .from :filename' do
|
129
|
-
before do
|
130
|
-
@result = GirFFI::InPointer.from :filename, 'foo'
|
131
|
-
end
|
132
|
-
|
133
|
-
it 'returns a pointer to the given string' do
|
134
|
-
assert_equal 'foo', @result.read_string
|
135
|
-
end
|
136
|
-
end
|
137
|
-
|
138
|
-
describe '.from' do
|
139
|
-
it 'returns nil when passed nil' do
|
140
|
-
result = GirFFI::InPointer.from :foo, nil
|
141
|
-
assert_nil result
|
142
|
-
end
|
143
|
-
|
144
|
-
it "sets the pointer's address to the passed value for type :gint8" do
|
145
|
-
result = GirFFI::InPointer.from :gint8, 23
|
146
|
-
assert_equal 23, result.address
|
147
|
-
end
|
148
|
-
|
149
|
-
it 'handles enum types' do
|
150
|
-
e = Module.new do
|
151
|
-
extend GirFFI::EnumBase
|
152
|
-
self::Enum = FFI::Enum.new [:foo, :bar, :baz], :qux
|
153
|
-
end
|
154
|
-
ptr = GirFFI::InPointer.from e, :bar
|
155
|
-
ptr.address.must_equal 1
|
156
|
-
end
|
157
|
-
|
158
|
-
describe 'for type :void' do
|
159
|
-
it 'returns the result of to_ptr' do
|
160
|
-
obj = Object.new
|
161
|
-
def obj.to_ptr
|
162
|
-
:test_value
|
163
|
-
end
|
164
|
-
GirFFI::InPointer.from(:void, obj).must_equal :test_value
|
165
|
-
end
|
166
|
-
|
167
|
-
it 'returns nil when passed nil' do
|
168
|
-
GirFFI::InPointer.from(:void, nil).must_be_nil
|
169
|
-
end
|
170
|
-
end
|
171
|
-
|
172
|
-
describe 'for types that are classes' do
|
173
|
-
it 'returns the result of to_ptr' do
|
174
|
-
klass = Class.new
|
175
|
-
obj = klass.new
|
176
|
-
def obj.to_ptr
|
177
|
-
:test_value
|
178
|
-
end
|
179
|
-
GirFFI::InPointer.from(klass, obj).must_equal :test_value
|
180
|
-
end
|
181
|
-
end
|
182
|
-
end
|
183
|
-
end
|