gir_ffi 0.14.0 → 0.15.3
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 +45 -0
- data/Gemfile +6 -4
- data/README.md +11 -10
- data/Rakefile +5 -5
- data/lib/ffi-glib.rb +16 -16
- data/lib/ffi-glib/array.rb +14 -4
- data/lib/ffi-glib/byte_array.rb +7 -2
- data/lib/ffi-glib/container_class_methods.rb +1 -1
- data/lib/ffi-glib/error.rb +1 -1
- data/lib/ffi-glib/hash_table.rb +3 -3
- data/lib/ffi-glib/list.rb +1 -1
- data/lib/ffi-glib/list_methods.rb +1 -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 +1 -1
- data/lib/ffi-glib/variant.rb +1 -1
- data/lib/ffi-gobject.rb +13 -13
- data/lib/ffi-gobject/object.rb +23 -32
- data/lib/ffi-gobject/param_spec.rb +1 -1
- data/lib/ffi-gobject/ruby_closure.rb +2 -2
- data/lib/ffi-gobject/value.rb +40 -29
- 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 +27 -17
- 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 +3 -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 -23
- data/lib/gir_ffi/boolean.rb +1 -1
- data/lib/gir_ffi/boxed_base.rb +1 -1
- data/lib/gir_ffi/builder.rb +18 -10
- data/lib/gir_ffi/builder_helper.rb +6 -1
- 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 +1 -0
- data/lib/gir_ffi/builders/base_method_builder.rb +7 -7
- data/lib/gir_ffi/builders/base_return_value_builder.rb +1 -1
- data/lib/gir_ffi/builders/base_type_builder.rb +1 -1
- data/lib/gir_ffi/builders/c_to_ruby_convertor.rb +5 -5
- data/lib/gir_ffi/builders/callback_argument_builder.rb +8 -8
- data/lib/gir_ffi/builders/callback_builder.rb +16 -4
- data/lib/gir_ffi/builders/callback_return_value_builder.rb +2 -2
- 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 +16 -3
- 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 +2 -2
- data/lib/gir_ffi/builders/mapping_method_builder.rb +9 -9
- data/lib/gir_ffi/builders/marshalling_method_builder.rb +7 -7
- data/lib/gir_ffi/builders/method_template.rb +1 -1
- data/lib/gir_ffi/builders/module_builder.rb +7 -7
- data/lib/gir_ffi/builders/object_builder.rb +6 -6
- data/lib/gir_ffi/builders/property_argument_builder.rb +1 -1
- data/lib/gir_ffi/builders/property_builder.rb +13 -12
- 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 +2 -2
- data/lib/gir_ffi/builders/struct_builder.rb +6 -4
- 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 +2 -2
- data/lib/gir_ffi/builders/vfunc_argument_builder.rb +1 -1
- 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 +4 -6
- data/lib/gir_ffi/class_base.rb +6 -5
- data/lib/gir_ffi/core.rb +19 -20
- 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/in_pointer.rb +10 -0
- data/lib/gir_ffi/info_ext.rb +15 -14
- 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 +25 -0
- 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 +3 -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/sized_array.rb +4 -2
- data/lib/gir_ffi/struct.rb +1 -1
- data/lib/gir_ffi/struct_base.rb +1 -1
- 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 +5 -1
- data/lib/gir_ffi/union.rb +1 -1
- data/lib/gir_ffi/union_base.rb +1 -1
- data/lib/gir_ffi/user_defined_object_info.rb +6 -2
- data/lib/gir_ffi/user_defined_property_info.rb +33 -33
- data/lib/gir_ffi/version.rb +1 -1
- data/tasks/test.rake +3 -2
- data/test/base_test_helper.rb +16 -9
- data/test/ffi-glib/array_test.rb +71 -56
- data/test/ffi-glib/byte_array_test.rb +13 -7
- data/test/ffi-glib/bytes_test.rb +24 -19
- data/test/ffi-glib/closure_test.rb +11 -11
- data/test/ffi-glib/destroy_notify_test.rb +6 -6
- data/test/ffi-glib/hash_table_test.rb +27 -27
- data/test/ffi-glib/list_test.rb +22 -22
- data/test/ffi-glib/main_loop_test.rb +12 -12
- data/test/ffi-glib/ptr_array_test.rb +39 -39
- data/test/ffi-glib/ruby_closure_test.rb +10 -10
- data/test/ffi-glib/s_list_test.rb +20 -20
- data/test/ffi-glib/strv_test.rb +19 -19
- data/test/ffi-glib/variant_test.rb +5 -5
- data/test/ffi-gobject/gobject_test.rb +48 -44
- data/test/ffi-gobject/object_class_test.rb +8 -8
- data/test/ffi-gobject/object_test.rb +51 -68
- data/test/ffi-gobject/param_spec_test.rb +12 -12
- data/test/ffi-gobject/value_test.rb +145 -125
- data/test/ffi-gobject_introspection/gobject_type_init_test.rb +9 -9
- data/test/ffi-gobject_introspection/i_base_info_test.rb +15 -16
- data/test/ffi-gobject_introspection/i_constant_info_test.rb +9 -13
- data/test/ffi-gobject_introspection/i_enum_info_test.rb +7 -7
- data/test/ffi-gobject_introspection/i_function_info_test.rb +1 -1
- data/test/ffi-gobject_introspection/i_interface_info_test.rb +10 -10
- data/test/ffi-gobject_introspection/i_object_info_test.rb +23 -23
- data/test/ffi-gobject_introspection/i_property_info_test.rb +19 -19
- data/test/ffi-gobject_introspection/i_registered_type_info_test.rb +10 -10
- data/test/ffi-gobject_introspection/i_repository_test.rb +34 -34
- data/test/ffi-gobject_introspection/i_struct_info_test.rb +10 -10
- data/test/ffi-gobject_introspection/i_type_info_test.rb +12 -15
- data/test/ffi-gobject_introspection/i_union_info_test.rb +7 -7
- data/test/ffi-gobject_introspection/i_vfunc_info_test.rb +16 -16
- data/test/ffi-gobject_introspection/lib_test.rb +3 -3
- data/test/ffi-gobject_introspection/strv_test.rb +9 -9
- data/test/ffi-gobject_test.rb +47 -45
- data/test/gir_ffi/allocation_helper_test.rb +13 -13
- data/test/gir_ffi/arg_helper_test.rb +71 -65
- data/test/gir_ffi/boolean_test.rb +20 -20
- data/test/gir_ffi/boxed_base_test.rb +18 -18
- data/test/gir_ffi/builder_test.rb +81 -213
- data/test/gir_ffi/builders/argument_builder_test.rb +321 -287
- data/test/gir_ffi/builders/base_argument_builder_test.rb +1 -1
- data/test/gir_ffi/builders/callback_argument_builder_test.rb +57 -56
- data/test/gir_ffi/builders/callback_builder_test.rb +71 -72
- data/test/gir_ffi/builders/callback_return_value_builder_test.rb +40 -41
- data/test/gir_ffi/builders/constant_builder_test.rb +1 -1
- data/test/gir_ffi/builders/constructor_builder_test.rb +12 -10
- data/test/gir_ffi/builders/enum_builder_test.rb +12 -11
- data/test/gir_ffi/builders/field_builder_test.rb +48 -42
- data/test/gir_ffi/builders/function_builder_test.rb +256 -224
- data/test/gir_ffi/builders/initializer_builder_test.rb +16 -14
- data/test/gir_ffi/builders/interface_builder_test.rb +9 -9
- data/test/gir_ffi/builders/module_builder_test.rb +18 -18
- data/test/gir_ffi/builders/object_builder_test.rb +41 -41
- data/test/gir_ffi/builders/property_builder_test.rb +94 -94
- data/test/gir_ffi/builders/registered_type_builder_test.rb +35 -11
- data/test/gir_ffi/builders/return_value_builder_test.rb +227 -223
- data/test/gir_ffi/builders/signal_closure_builder_test.rb +124 -113
- data/test/gir_ffi/builders/struct_builder_test.rb +38 -35
- data/test/gir_ffi/builders/unintrospectable_boxed_builder_test.rb +8 -14
- data/test/gir_ffi/builders/unintrospectable_builder_test.rb +34 -23
- data/test/gir_ffi/builders/union_builder_test.rb +12 -15
- data/test/gir_ffi/builders/user_defined_builder_test.rb +152 -148
- data/test/gir_ffi/builders/vfunc_argument_builder_test.rb +46 -40
- data/test/gir_ffi/builders/vfunc_builder_test.rb +149 -157
- data/test/gir_ffi/callback_base_test.rb +9 -9
- data/test/gir_ffi/class_base_test.rb +56 -53
- data/test/gir_ffi/core_test.rb +36 -35
- data/test/gir_ffi/enum_base_test.rb +19 -19
- data/test/gir_ffi/error_type_info_test.rb +23 -23
- data/test/gir_ffi/ffi_ext/pointer_test.rb +9 -7
- data/test/gir_ffi/g_type_test.rb +11 -11
- data/test/gir_ffi/in_pointer_test.rb +70 -50
- data/test/gir_ffi/info_ext/i_callable_info_test.rb +5 -5
- data/test/gir_ffi/info_ext/i_callback_info_test.rb +6 -5
- data/test/gir_ffi/info_ext/i_field_info_test.rb +6 -6
- data/test/gir_ffi/info_ext/i_function_info_test.rb +17 -17
- data/test/gir_ffi/info_ext/i_signal_info_test.rb +8 -8
- data/test/gir_ffi/info_ext/i_type_info_test.rb +231 -216
- data/test/gir_ffi/info_ext/i_unresolved_info_test.rb +4 -4
- data/test/gir_ffi/info_ext/safe_constant_name_test.rb +8 -8
- data/test/gir_ffi/info_ext/safe_function_name_test.rb +8 -8
- data/test/gir_ffi/interface_base_test.rb +8 -8
- data/test/gir_ffi/method_stubber_test.rb +21 -19
- data/test/gir_ffi/object_base_test.rb +23 -23
- data/test/gir_ffi/object_store_test.rb +13 -13
- data/test/gir_ffi/receiver_argument_info_test.rb +15 -15
- data/test/gir_ffi/sized_array_test.rb +68 -68
- data/test/gir_ffi/struct_base_test.rb +8 -8
- data/test/gir_ffi/struct_like_base_test.rb +64 -64
- data/test/gir_ffi/type_map_test.rb +8 -8
- data/test/gir_ffi/unintrospectable_type_info_test.rb +33 -33
- data/test/gir_ffi/union_base_test.rb +8 -8
- data/test/gir_ffi/user_defined_object_info_test.rb +34 -34
- data/test/gir_ffi/user_defined_property_info_test.rb +16 -16
- data/test/gir_ffi/variable_name_generator_test.rb +8 -8
- data/test/gir_ffi/version_test.rb +4 -4
- data/test/gir_ffi/zero_terminated_test.rb +34 -34
- data/test/gir_ffi_test_helper.rb +3 -3
- data/test/integration/callback_exceptions_test.rb +17 -21
- data/test/integration/derived_classes_test.rb +14 -13
- data/test/integration/generated_everything_test.rb +225 -224
- data/test/integration/generated_gimarshallingtests_test.rb +1174 -1060
- data/test/integration/generated_gio_test.rb +36 -36
- data/test/integration/generated_glib_test.rb +4 -6
- data/test/integration/generated_gobject_test.rb +43 -35
- data/test/integration/generated_gst_test.rb +20 -16
- data/test/integration/generated_gtk_source_test.rb +9 -15
- data/test/integration/generated_gtop_test.rb +8 -15
- data/test/integration/generated_pango_ft2_test.rb +2 -2
- data/test/integration/generated_pango_test.rb +4 -4
- data/test/integration/generated_regress_test.rb +1858 -1632
- data/test/integration/generated_secret_test.rb +8 -11
- data/test/integration/generated_utility_test.rb +81 -81
- data/test/integration/generated_warnlib_test.rb +17 -21
- data/test/integration/method_lookup_test.rb +6 -6
- data/test/introspection_test_helper.rb +49 -7
- data/test/minitest/stats_plugin.rb +1 -1
- metadata +21 -23
- data/lib/ffi-glib/array_methods.rb +0 -16
- data/test/gir_ffi/in_out_pointer_test.rb +0 -56
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
3
|
+
require "gir_ffi_test_helper"
|
4
4
|
|
5
5
|
GirFFI.setup :Regress
|
6
6
|
|
@@ -13,20 +13,20 @@ describe GirFFI::InfoExt::ISignalInfo do
|
|
13
13
|
end
|
14
14
|
let(:signal_info) { signal_class.new }
|
15
15
|
|
16
|
-
describe
|
16
|
+
describe "#arguments_to_gvalues" do
|
17
17
|
let(:object) { Regress::TestSubObj.new }
|
18
18
|
let(:boxed) { Regress::TestSimpleBoxedA.const_return }
|
19
|
-
let(:signal_info) { Regress::TestSubObj.find_signal
|
19
|
+
let(:signal_info) { Regress::TestSubObj.find_signal "test-with-static-scope-arg" }
|
20
20
|
let(:result) { signal_info.arguments_to_gvalues(object, [boxed]) }
|
21
21
|
|
22
|
-
it
|
23
|
-
result[0].get_value.must_equal object
|
22
|
+
it "correctly wraps :object" do
|
23
|
+
_(result[0].get_value).must_equal object
|
24
24
|
end
|
25
25
|
|
26
|
-
it
|
26
|
+
it "correctly wraps :struct" do
|
27
27
|
result_boxed = result[1].get_value
|
28
|
-
result_boxed.some_int8.must_equal boxed.some_int8
|
29
|
-
result_boxed.some_int.must_equal boxed.some_int
|
28
|
+
_(result_boxed.some_int8).must_equal boxed.some_int8
|
29
|
+
_(result_boxed.some_int).must_equal boxed.some_int
|
30
30
|
end
|
31
31
|
end
|
32
32
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
3
|
+
require "gir_ffi_test_helper"
|
4
4
|
|
5
5
|
describe GirFFI::InfoExt::ITypeInfo do
|
6
6
|
let(:info_class) do
|
@@ -16,15 +16,15 @@ describe GirFFI::InfoExt::ITypeInfo do
|
|
16
16
|
let(:iface_info) { Object.new }
|
17
17
|
|
18
18
|
let(:callback_type_info) do
|
19
|
-
get_introspection_data(
|
19
|
+
get_introspection_data("Regress", "test_callback").args[0].argument_type
|
20
20
|
end
|
21
21
|
let(:ghash_type_info) do
|
22
|
-
get_introspection_data(
|
23
|
-
|
22
|
+
get_introspection_data("Regress",
|
23
|
+
"test_ghash_nested_everything_return").return_type
|
24
24
|
end
|
25
25
|
|
26
|
-
describe
|
27
|
-
it
|
26
|
+
describe "#to_ffi_type" do
|
27
|
+
it "returns an array with elements subtype and size for type :array" do
|
28
28
|
expect(type_info).to receive(:pointer?).and_return false
|
29
29
|
allow(type_info).to receive(:tag).and_return :array
|
30
30
|
expect(type_info).to receive(:array_fixed_size).and_return 2
|
@@ -36,7 +36,7 @@ describe GirFFI::InfoExt::ITypeInfo do
|
|
36
36
|
assert_equal [:foo, 2], result
|
37
37
|
end
|
38
38
|
|
39
|
-
describe
|
39
|
+
describe "for an :interface type" do
|
40
40
|
before do
|
41
41
|
allow(type_info).to receive(:interface).and_return iface_info
|
42
42
|
allow(type_info).to receive(:tag).and_return :interface
|
@@ -46,13 +46,13 @@ describe GirFFI::InfoExt::ITypeInfo do
|
|
46
46
|
it "maps a the interface's ffi_type" do
|
47
47
|
allow(iface_info).to receive(:to_ffi_type).and_return :foo
|
48
48
|
|
49
|
-
type_info.to_ffi_type.must_equal :foo
|
49
|
+
_(type_info.to_ffi_type).must_equal :foo
|
50
50
|
end
|
51
51
|
end
|
52
52
|
end
|
53
53
|
|
54
|
-
describe
|
55
|
-
it
|
54
|
+
describe "#element_type" do
|
55
|
+
it "returns the element type for lists" do
|
56
56
|
allow(elmtype_info).to receive(:tag).and_return :foo
|
57
57
|
expect(elmtype_info).to receive(:pointer?).and_return false
|
58
58
|
|
@@ -60,10 +60,10 @@ describe GirFFI::InfoExt::ITypeInfo do
|
|
60
60
|
expect(type_info).to receive(:param_type).with(0).and_return elmtype_info
|
61
61
|
|
62
62
|
result = type_info.element_type
|
63
|
-
result.must_equal :foo
|
63
|
+
_(result).must_equal :foo
|
64
64
|
end
|
65
65
|
|
66
|
-
it
|
66
|
+
it "returns the key and value types for ghashes" do
|
67
67
|
allow(keytype_info).to receive(:tag).and_return :foo
|
68
68
|
expect(keytype_info).to receive(:pointer?).and_return false
|
69
69
|
allow(valtype_info).to receive(:tag).and_return :bar
|
@@ -74,17 +74,17 @@ describe GirFFI::InfoExt::ITypeInfo do
|
|
74
74
|
expect(type_info).to receive(:param_type).with(1).and_return valtype_info
|
75
75
|
|
76
76
|
result = type_info.element_type
|
77
|
-
result.must_equal [:foo, :bar]
|
77
|
+
_(result).must_equal [:foo, :bar]
|
78
78
|
end
|
79
79
|
|
80
|
-
it
|
80
|
+
it "returns nil for other types" do
|
81
81
|
expect(type_info).to receive(:tag).and_return :foo
|
82
82
|
|
83
83
|
result = type_info.element_type
|
84
|
-
result.must_be_nil
|
84
|
+
_(result).must_be_nil
|
85
85
|
end
|
86
86
|
|
87
|
-
it
|
87
|
+
it "returns [:pointer, :void] if the element type is a pointer with tag :void" do
|
88
88
|
allow(elmtype_info).to receive(:tag_or_class).and_return [:pointer, :void]
|
89
89
|
|
90
90
|
expect(type_info).to receive(:tag).and_return :glist
|
@@ -94,100 +94,100 @@ describe GirFFI::InfoExt::ITypeInfo do
|
|
94
94
|
end
|
95
95
|
end
|
96
96
|
|
97
|
-
describe
|
98
|
-
describe
|
99
|
-
it
|
97
|
+
describe "#flattened_tag" do
|
98
|
+
describe "for a simple type" do
|
99
|
+
it "returns the type tag" do
|
100
100
|
allow(type_info).to receive(:tag).and_return :uint32
|
101
101
|
|
102
|
-
type_info.flattened_tag.must_equal :uint32
|
102
|
+
_(type_info.flattened_tag).must_equal :uint32
|
103
103
|
end
|
104
104
|
end
|
105
105
|
|
106
|
-
describe
|
106
|
+
describe "for a zero-terminated array" do
|
107
107
|
before do
|
108
108
|
allow(type_info).to receive(:tag).and_return :array
|
109
109
|
allow(type_info).to receive(:param_type).with(0).and_return elmtype_info
|
110
110
|
allow(type_info).to receive(:zero_terminated?).and_return true
|
111
111
|
end
|
112
112
|
|
113
|
-
describe
|
114
|
-
it
|
113
|
+
describe "of utf8" do
|
114
|
+
it "returns :strv" do
|
115
115
|
allow(elmtype_info).to receive(:tag).and_return :utf8
|
116
116
|
allow(elmtype_info).to receive(:pointer?).and_return true
|
117
117
|
|
118
|
-
type_info.flattened_tag.must_equal :strv
|
118
|
+
_(type_info.flattened_tag).must_equal :strv
|
119
119
|
end
|
120
120
|
end
|
121
121
|
|
122
|
-
describe
|
123
|
-
it
|
122
|
+
describe "of filename" do
|
123
|
+
it "returns :strv" do
|
124
124
|
allow(elmtype_info).to receive(:tag).and_return :filename
|
125
125
|
allow(elmtype_info).to receive(:pointer?).and_return true
|
126
126
|
|
127
|
-
type_info.flattened_tag.must_equal :strv
|
127
|
+
_(type_info.flattened_tag).must_equal :strv
|
128
128
|
end
|
129
129
|
end
|
130
130
|
|
131
|
-
describe
|
132
|
-
it
|
131
|
+
describe "of another type" do
|
132
|
+
it "returns :zero_terminated" do
|
133
133
|
allow(elmtype_info).to receive(:tag).and_return :foo
|
134
134
|
allow(elmtype_info).to receive(:pointer?).and_return false
|
135
135
|
|
136
|
-
type_info.flattened_tag.must_equal :zero_terminated
|
136
|
+
_(type_info.flattened_tag).must_equal :zero_terminated
|
137
137
|
end
|
138
138
|
end
|
139
139
|
end
|
140
140
|
|
141
|
-
describe
|
142
|
-
it
|
141
|
+
describe "for a fixed length c-like array" do
|
142
|
+
it "returns :c" do
|
143
143
|
expect(type_info).to receive(:tag).and_return :array
|
144
144
|
expect(type_info).to receive(:zero_terminated?).and_return false
|
145
145
|
expect(type_info).to receive(:array_type).and_return :c
|
146
146
|
|
147
|
-
type_info.flattened_tag.must_equal :c
|
147
|
+
_(type_info.flattened_tag).must_equal :c
|
148
148
|
end
|
149
149
|
end
|
150
150
|
|
151
|
-
describe
|
152
|
-
it
|
151
|
+
describe "for a GLib array" do
|
152
|
+
it "returns :c" do
|
153
153
|
expect(type_info).to receive(:tag).and_return :array
|
154
154
|
expect(type_info).to receive(:zero_terminated?).and_return false
|
155
155
|
expect(type_info).to receive(:array_type).and_return :array
|
156
156
|
|
157
|
-
type_info.flattened_tag.must_equal :array
|
157
|
+
_(type_info.flattened_tag).must_equal :array
|
158
158
|
end
|
159
159
|
end
|
160
160
|
end
|
161
161
|
|
162
|
-
describe
|
163
|
-
describe
|
162
|
+
describe "#tag_or_class" do
|
163
|
+
describe "for a simple type" do
|
164
164
|
it "returns the type's tag" do
|
165
165
|
allow(type_info).to receive(:tag).and_return :foo
|
166
166
|
expect(type_info).to receive(:pointer?).and_return false
|
167
167
|
|
168
|
-
type_info.tag_or_class.must_equal :foo
|
168
|
+
_(type_info.tag_or_class).must_equal :foo
|
169
169
|
end
|
170
170
|
end
|
171
171
|
|
172
|
-
describe
|
173
|
-
it
|
172
|
+
describe "for utf8 strings" do
|
173
|
+
it "returns the tag :utf8" do
|
174
174
|
allow(type_info).to receive(:tag).and_return :utf8
|
175
175
|
expect(type_info).to receive(:pointer?).and_return true
|
176
176
|
|
177
|
-
type_info.tag_or_class.must_equal :utf8
|
177
|
+
_(type_info.tag_or_class).must_equal :utf8
|
178
178
|
end
|
179
179
|
end
|
180
180
|
|
181
|
-
describe
|
182
|
-
it
|
181
|
+
describe "for filename strings" do
|
182
|
+
it "returns the tag :filename" do
|
183
183
|
allow(type_info).to receive(:tag).and_return :filename
|
184
184
|
expect(type_info).to receive(:pointer?).and_return true
|
185
185
|
|
186
|
-
type_info.tag_or_class.must_equal :filename
|
186
|
+
_(type_info.tag_or_class).must_equal :filename
|
187
187
|
end
|
188
188
|
end
|
189
189
|
|
190
|
-
describe
|
190
|
+
describe "for an interface class" do
|
191
191
|
let(:interface) { Object.new }
|
192
192
|
|
193
193
|
before do
|
@@ -195,61 +195,62 @@ describe GirFFI::InfoExt::ITypeInfo do
|
|
195
195
|
allow(type_info).to receive(:interface).and_return iface_info
|
196
196
|
expect(type_info).to receive(:pointer?).and_return false
|
197
197
|
|
198
|
-
expect(GirFFI::Builder)
|
198
|
+
expect(GirFFI::Builder)
|
199
|
+
.to receive(:build_class).with(iface_info).and_return interface
|
199
200
|
end
|
200
201
|
|
201
|
-
describe
|
202
|
-
it
|
202
|
+
describe "when the interface type is :enum" do
|
203
|
+
it "returns the built interface module" do
|
203
204
|
allow(iface_info).to receive(:info_type).and_return :enum
|
204
205
|
|
205
|
-
type_info.tag_or_class.must_equal interface
|
206
|
+
_(type_info.tag_or_class).must_equal interface
|
206
207
|
end
|
207
208
|
end
|
208
209
|
|
209
|
-
describe
|
210
|
-
it
|
210
|
+
describe "when the interface type is :object" do
|
211
|
+
it "returns the built interface class" do
|
211
212
|
allow(iface_info).to receive(:info_type).and_return :object
|
212
213
|
|
213
|
-
type_info.tag_or_class.must_equal interface
|
214
|
+
_(type_info.tag_or_class).must_equal interface
|
214
215
|
end
|
215
216
|
end
|
216
217
|
|
217
|
-
describe
|
218
|
-
it
|
218
|
+
describe "when the interface type is :struct" do
|
219
|
+
it "returns the built interface class" do
|
219
220
|
allow(iface_info).to receive(:info_type).and_return :struct
|
220
221
|
|
221
|
-
type_info.tag_or_class.must_equal interface
|
222
|
+
_(type_info.tag_or_class).must_equal interface
|
222
223
|
end
|
223
224
|
end
|
224
225
|
end
|
225
226
|
|
226
|
-
describe
|
227
|
+
describe "for a callback" do
|
227
228
|
it "returns the callback's wrapper class" do
|
228
|
-
callback_type_info.tag_or_class.must_equal Regress::TestCallback
|
229
|
+
_(callback_type_info.tag_or_class).must_equal Regress::TestCallback
|
229
230
|
end
|
230
231
|
end
|
231
232
|
|
232
|
-
describe
|
233
|
-
it
|
233
|
+
describe "for a pointer to simple type :foo" do
|
234
|
+
it "returns [:pointer, :foo]" do
|
234
235
|
allow(type_info).to receive(:tag).and_return :foo
|
235
236
|
expect(type_info).to receive(:pointer?).and_return true
|
236
237
|
|
237
|
-
type_info.tag_or_class.must_equal [:pointer, :foo]
|
238
|
+
_(type_info.tag_or_class).must_equal [:pointer, :foo]
|
238
239
|
end
|
239
240
|
end
|
240
241
|
|
241
|
-
describe
|
242
|
-
it
|
242
|
+
describe "for a pointer to :void" do
|
243
|
+
it "returns [:pointer, :void]" do
|
243
244
|
allow(type_info).to receive(:tag).and_return :void
|
244
245
|
allow(type_info).to receive(:pointer?).and_return true
|
245
246
|
|
246
|
-
type_info.tag_or_class.must_equal [:pointer, :void]
|
247
|
+
_(type_info.tag_or_class).must_equal [:pointer, :void]
|
247
248
|
end
|
248
249
|
end
|
249
250
|
|
250
|
-
describe
|
251
|
-
it
|
252
|
-
ghash_type_info.tag_or_class.must_equal(
|
251
|
+
describe "for a complex nested hash type" do
|
252
|
+
it "returns a representeation of the nested structure" do
|
253
|
+
_(ghash_type_info.tag_or_class).must_equal(
|
253
254
|
[:pointer,
|
254
255
|
[:ghash,
|
255
256
|
:utf8,
|
@@ -259,34 +260,34 @@ describe GirFFI::InfoExt::ITypeInfo do
|
|
259
260
|
end
|
260
261
|
end
|
261
262
|
|
262
|
-
describe
|
263
|
-
describe
|
263
|
+
describe "#to_callback_ffi_type" do
|
264
|
+
describe "for an :interface argument" do
|
264
265
|
before do
|
265
266
|
allow(type_info).to receive(:interface).and_return iface_info
|
266
267
|
allow(type_info).to receive(:tag).and_return :interface
|
267
268
|
allow(type_info).to receive(:pointer?).and_return false
|
268
269
|
end
|
269
270
|
|
270
|
-
it
|
271
|
+
it "delegates to interface info" do
|
271
272
|
allow(iface_info).to receive(:to_callback_ffi_type).and_return :some_ffi_type
|
272
273
|
|
273
|
-
type_info.to_callback_ffi_type.must_equal :some_ffi_type
|
274
|
+
_(type_info.to_callback_ffi_type).must_equal :some_ffi_type
|
274
275
|
end
|
275
276
|
end
|
276
277
|
end
|
277
278
|
|
278
|
-
describe
|
279
|
-
describe
|
279
|
+
describe "#extra_conversion_arguments" do
|
280
|
+
describe "for normal types" do
|
280
281
|
before do
|
281
282
|
allow(type_info).to receive(:tag).and_return :foo
|
282
283
|
end
|
283
284
|
|
284
|
-
it
|
285
|
-
type_info.extra_conversion_arguments.must_equal []
|
285
|
+
it "returns an empty array" do
|
286
|
+
_(type_info.extra_conversion_arguments).must_equal []
|
286
287
|
end
|
287
288
|
end
|
288
289
|
|
289
|
-
describe
|
290
|
+
describe "for a fixed-size array" do
|
290
291
|
before do
|
291
292
|
allow(type_info).to receive(:tag).and_return :array
|
292
293
|
allow(type_info).to receive(:zero_terminated?).and_return false
|
@@ -297,12 +298,12 @@ describe GirFFI::InfoExt::ITypeInfo do
|
|
297
298
|
allow(elmtype_info).to receive(:tag_or_class).and_return :foo
|
298
299
|
end
|
299
300
|
|
300
|
-
it
|
301
|
-
type_info.extra_conversion_arguments.must_equal [:foo, 3]
|
301
|
+
it "returns an array containing the element type" do
|
302
|
+
_(type_info.extra_conversion_arguments).must_equal [:foo, 3]
|
302
303
|
end
|
303
304
|
end
|
304
305
|
|
305
|
-
describe
|
306
|
+
describe "for a zero-terminated array" do
|
306
307
|
before do
|
307
308
|
allow(type_info).to receive(:tag).and_return :array
|
308
309
|
allow(type_info).to receive(:zero_terminated?).and_return true
|
@@ -311,12 +312,12 @@ describe GirFFI::InfoExt::ITypeInfo do
|
|
311
312
|
allow(elmtype_info).to receive(:tag_or_class).and_return :foo
|
312
313
|
end
|
313
314
|
|
314
|
-
it
|
315
|
-
type_info.extra_conversion_arguments.must_equal [:foo]
|
315
|
+
it "returns an array containing the element type" do
|
316
|
+
_(type_info.extra_conversion_arguments).must_equal [:foo]
|
316
317
|
end
|
317
318
|
end
|
318
319
|
|
319
|
-
describe
|
320
|
+
describe "for a GArray" do
|
320
321
|
before do
|
321
322
|
allow(type_info).to receive(:tag).and_return :array
|
322
323
|
allow(type_info).to receive(:zero_terminated?).and_return false
|
@@ -326,12 +327,12 @@ describe GirFFI::InfoExt::ITypeInfo do
|
|
326
327
|
allow(elmtype_info).to receive(:tag_or_class).and_return :foo
|
327
328
|
end
|
328
329
|
|
329
|
-
it
|
330
|
-
type_info.extra_conversion_arguments.must_equal [:foo]
|
330
|
+
it "returns an array containing the element type" do
|
331
|
+
_(type_info.extra_conversion_arguments).must_equal [:foo]
|
331
332
|
end
|
332
333
|
end
|
333
334
|
|
334
|
-
describe
|
335
|
+
describe "for a GHashTable" do
|
335
336
|
before do
|
336
337
|
allow(type_info).to receive(:tag).and_return :ghash
|
337
338
|
allow(type_info).to receive(:param_type).with(0).and_return keytype_info
|
@@ -341,12 +342,12 @@ describe GirFFI::InfoExt::ITypeInfo do
|
|
341
342
|
allow(valtype_info).to receive(:tag_or_class).and_return :bar
|
342
343
|
end
|
343
344
|
|
344
|
-
it
|
345
|
-
type_info.extra_conversion_arguments.must_equal [[:foo, :bar]]
|
345
|
+
it "returns an array containing the element type pair" do
|
346
|
+
_(type_info.extra_conversion_arguments).must_equal [[:foo, :bar]]
|
346
347
|
end
|
347
348
|
end
|
348
349
|
|
349
|
-
describe
|
350
|
+
describe "for a GList" do
|
350
351
|
before do
|
351
352
|
allow(type_info).to receive(:tag).and_return :glist
|
352
353
|
|
@@ -354,12 +355,12 @@ describe GirFFI::InfoExt::ITypeInfo do
|
|
354
355
|
allow(elmtype_info).to receive(:tag_or_class).and_return :foo
|
355
356
|
end
|
356
357
|
|
357
|
-
it
|
358
|
-
type_info.extra_conversion_arguments.must_equal [:foo]
|
358
|
+
it "returns an array containing the element type" do
|
359
|
+
_(type_info.extra_conversion_arguments).must_equal [:foo]
|
359
360
|
end
|
360
361
|
end
|
361
362
|
|
362
|
-
describe
|
363
|
+
describe "for a GSList" do
|
363
364
|
before do
|
364
365
|
allow(type_info).to receive(:tag).and_return :gslist
|
365
366
|
|
@@ -367,12 +368,12 @@ describe GirFFI::InfoExt::ITypeInfo do
|
|
367
368
|
allow(elmtype_info).to receive(:tag_or_class).and_return :foo
|
368
369
|
end
|
369
370
|
|
370
|
-
it
|
371
|
-
type_info.extra_conversion_arguments.must_equal [:foo]
|
371
|
+
it "returns an array containing the element type" do
|
372
|
+
_(type_info.extra_conversion_arguments).must_equal [:foo]
|
372
373
|
end
|
373
374
|
end
|
374
375
|
|
375
|
-
describe
|
376
|
+
describe "for a GPtrArray" do
|
376
377
|
before do
|
377
378
|
allow(type_info).to receive(:tag).and_return :array
|
378
379
|
allow(type_info).to receive(:zero_terminated?).and_return false
|
@@ -382,313 +383,327 @@ describe GirFFI::InfoExt::ITypeInfo do
|
|
382
383
|
allow(elmtype_info).to receive(:tag_or_class).and_return :foo
|
383
384
|
end
|
384
385
|
|
385
|
-
it
|
386
|
-
type_info.extra_conversion_arguments.must_equal [:foo]
|
386
|
+
it "returns an array containing the element type" do
|
387
|
+
_(type_info.extra_conversion_arguments).must_equal [:foo]
|
387
388
|
end
|
388
389
|
end
|
389
390
|
|
390
|
-
describe
|
391
|
+
describe "for a :callback" do
|
391
392
|
before do
|
392
|
-
allow(interface_type_info = Object.new).to receive(:namespace).and_return
|
393
|
-
allow(interface_type_info).to receive(:name).and_return
|
393
|
+
allow(interface_type_info = Object.new).to receive(:namespace).and_return "Bar"
|
394
|
+
allow(interface_type_info).to receive(:name).and_return "Foo"
|
394
395
|
|
395
396
|
allow(type_info).to receive(:tag).and_return :callback
|
396
397
|
allow(type_info).to receive(:interface).and_return interface_type_info
|
397
398
|
end
|
398
399
|
|
399
|
-
it
|
400
|
-
type_info.extra_conversion_arguments.must_equal []
|
400
|
+
it "returns an empty array" do
|
401
|
+
_(type_info.extra_conversion_arguments).must_equal []
|
401
402
|
end
|
402
403
|
end
|
403
404
|
end
|
404
405
|
|
405
|
-
describe
|
406
|
+
describe "#argument_class_name" do
|
406
407
|
before do
|
407
408
|
allow(type_info).to receive(:tag).and_return tag
|
408
409
|
end
|
409
410
|
|
410
|
-
describe
|
411
|
+
describe "for :gint32" do
|
411
412
|
let(:tag) { :gint32 }
|
412
413
|
|
413
|
-
it
|
414
|
-
type_info.argument_class_name.must_be_nil
|
414
|
+
it "is nil" do
|
415
|
+
_(type_info.argument_class_name).must_be_nil
|
415
416
|
end
|
416
417
|
end
|
417
418
|
|
418
|
-
describe
|
419
|
+
describe "for interfaces" do
|
419
420
|
let(:tag) { :interface }
|
420
421
|
|
421
422
|
before do
|
422
423
|
allow(type_info).to receive(:interface).and_return iface_info
|
423
424
|
allow(iface_info).to receive(:info_type).and_return interface_type
|
424
|
-
allow(iface_info).to receive(:full_type_name).and_return
|
425
|
+
allow(iface_info).to receive(:full_type_name).and_return "Bar::Foo"
|
425
426
|
end
|
426
427
|
|
427
|
-
describe
|
428
|
+
describe "for :struct" do
|
428
429
|
let(:interface_type) { :struct }
|
429
|
-
it
|
430
|
-
type_info.argument_class_name.must_equal
|
430
|
+
it "equals the struct class name" do
|
431
|
+
_(type_info.argument_class_name).must_equal "Bar::Foo"
|
431
432
|
end
|
432
433
|
end
|
433
434
|
|
434
|
-
describe
|
435
|
+
describe "for :union" do
|
435
436
|
let(:interface_type) { :union }
|
436
|
-
it
|
437
|
-
type_info.argument_class_name.must_equal
|
437
|
+
it "equals the union class name" do
|
438
|
+
_(type_info.argument_class_name).must_equal "Bar::Foo"
|
438
439
|
end
|
439
440
|
end
|
440
441
|
|
441
|
-
describe
|
442
|
+
describe "for :interface" do
|
442
443
|
let(:interface_type) { :interface }
|
443
444
|
|
444
|
-
it
|
445
|
-
type_info.argument_class_name.must_equal
|
445
|
+
it "equals the interface module name" do
|
446
|
+
_(type_info.argument_class_name).must_equal "Bar::Foo"
|
446
447
|
end
|
447
448
|
end
|
448
449
|
|
449
|
-
describe
|
450
|
+
describe "for :object" do
|
450
451
|
let(:interface_type) { :object }
|
451
452
|
|
452
|
-
it
|
453
|
-
type_info.argument_class_name.must_equal
|
453
|
+
it "equals the object class name" do
|
454
|
+
_(type_info.argument_class_name).must_equal "Bar::Foo"
|
454
455
|
end
|
455
456
|
end
|
456
457
|
|
457
|
-
describe
|
458
|
+
describe "for :callback" do
|
458
459
|
let(:interface_type) { :callback }
|
459
460
|
|
460
|
-
it
|
461
|
-
type_info.argument_class_name.must_equal
|
461
|
+
it "equals the callback type name" do
|
462
|
+
_(type_info.argument_class_name).must_equal "Bar::Foo"
|
462
463
|
end
|
463
464
|
end
|
464
465
|
end
|
465
466
|
|
466
|
-
describe
|
467
|
+
describe "for :strv" do
|
467
468
|
let(:tag) { :strv }
|
468
469
|
|
469
|
-
it
|
470
|
-
type_info.argument_class_name.must_equal
|
470
|
+
it "equals GLib::Strv" do
|
471
|
+
_(type_info.argument_class_name).must_equal "GLib::Strv"
|
471
472
|
end
|
472
473
|
end
|
473
474
|
|
474
|
-
describe
|
475
|
+
describe "for arrays" do
|
475
476
|
let(:tag) { :array }
|
476
477
|
before do
|
477
478
|
allow(type_info).to receive(:param_type).with(0).and_return elmtype_info
|
478
479
|
allow(elmtype_info).to receive(:tag_or_class).and_return :foo
|
479
480
|
end
|
480
481
|
|
481
|
-
describe
|
482
|
+
describe "for :zero_terminated" do
|
482
483
|
before do
|
483
484
|
allow(type_info).to receive(:zero_terminated?).and_return true
|
484
485
|
end
|
485
486
|
|
486
|
-
it
|
487
|
-
type_info.argument_class_name.must_equal
|
487
|
+
it "equals GirFFI::ZeroTerminated" do
|
488
|
+
_(type_info.argument_class_name).must_equal "GirFFI::ZeroTerminated"
|
488
489
|
end
|
489
490
|
end
|
490
491
|
|
491
|
-
describe
|
492
|
+
describe "for :byte_array" do
|
492
493
|
before do
|
493
494
|
allow(type_info).to receive(:zero_terminated?).and_return false
|
494
495
|
allow(type_info).to receive(:array_type).and_return :byte_array
|
495
496
|
end
|
496
497
|
|
497
|
-
it
|
498
|
-
type_info.argument_class_name.must_equal
|
498
|
+
it "equals GLib::ByteArray" do
|
499
|
+
_(type_info.argument_class_name).must_equal "GLib::ByteArray"
|
499
500
|
end
|
500
501
|
end
|
501
502
|
|
502
|
-
describe
|
503
|
+
describe "for :ptr_array" do
|
503
504
|
before do
|
504
505
|
allow(type_info).to receive(:zero_terminated?).and_return false
|
505
506
|
allow(type_info).to receive(:array_type).and_return :ptr_array
|
506
507
|
end
|
507
508
|
|
508
|
-
it
|
509
|
-
type_info.argument_class_name.must_equal
|
509
|
+
it "equals GLib::PtrArray" do
|
510
|
+
_(type_info.argument_class_name).must_equal "GLib::PtrArray"
|
510
511
|
end
|
511
512
|
end
|
512
513
|
|
513
|
-
describe
|
514
|
+
describe "for :array" do
|
514
515
|
before do
|
515
516
|
allow(type_info).to receive(:zero_terminated?).and_return false
|
516
517
|
allow(type_info).to receive(:array_type).and_return :array
|
517
518
|
end
|
518
519
|
|
519
|
-
it
|
520
|
-
type_info.argument_class_name.must_equal
|
520
|
+
it "equals GLib::Array" do
|
521
|
+
_(type_info.argument_class_name).must_equal "GLib::Array"
|
521
522
|
end
|
522
523
|
end
|
523
524
|
end
|
524
525
|
|
525
|
-
describe
|
526
|
+
describe "for :glist" do
|
526
527
|
let(:tag) { :glist }
|
527
528
|
|
528
|
-
it
|
529
|
-
type_info.argument_class_name.must_equal
|
529
|
+
it "equals GLib::List" do
|
530
|
+
_(type_info.argument_class_name).must_equal "GLib::List"
|
530
531
|
end
|
531
532
|
end
|
532
533
|
|
533
|
-
describe
|
534
|
+
describe "for :gslist" do
|
534
535
|
let(:tag) { :gslist }
|
535
536
|
|
536
|
-
it
|
537
|
-
type_info.argument_class_name.must_equal
|
537
|
+
it "equals GLib::SList" do
|
538
|
+
_(type_info.argument_class_name).must_equal "GLib::SList"
|
538
539
|
end
|
539
540
|
end
|
540
541
|
|
541
|
-
describe
|
542
|
+
describe "for :ghash" do
|
542
543
|
let(:tag) { :ghash }
|
543
544
|
|
544
|
-
it
|
545
|
-
type_info.argument_class_name.must_equal
|
545
|
+
it "equals GLib::HashTable" do
|
546
|
+
_(type_info.argument_class_name).must_equal "GLib::HashTable"
|
546
547
|
end
|
547
548
|
end
|
548
549
|
|
549
|
-
describe
|
550
|
+
describe "for :error" do
|
550
551
|
let(:tag) { :error }
|
551
552
|
|
552
|
-
it
|
553
|
-
type_info.argument_class_name.must_equal
|
553
|
+
it "equals GLib::Error" do
|
554
|
+
_(type_info.argument_class_name).must_equal "GLib::Error"
|
554
555
|
end
|
555
556
|
end
|
556
557
|
end
|
557
558
|
|
558
|
-
describe
|
559
|
+
describe "#gtype" do
|
559
560
|
before do
|
560
561
|
allow(type_info).to receive(:tag).and_return tag
|
561
562
|
allow(type_info).to receive(:pointer?).and_return pointer?
|
562
563
|
end
|
563
564
|
|
564
|
-
describe
|
565
|
-
let(:tag) { :void }
|
565
|
+
describe "for non-pointers" do
|
566
566
|
let(:pointer?) { false }
|
567
|
+
describe "for :void" do
|
568
|
+
let(:tag) { :void }
|
567
569
|
|
568
|
-
|
569
|
-
|
570
|
+
it "equals the none type" do
|
571
|
+
_(GObject.type_name(type_info.gtype)).must_equal "void"
|
572
|
+
end
|
570
573
|
end
|
571
|
-
end
|
572
574
|
|
573
|
-
|
574
|
-
|
575
|
-
let(:pointer?) { true }
|
575
|
+
describe "for :gboolean" do
|
576
|
+
let(:tag) { :gboolean }
|
576
577
|
|
577
|
-
|
578
|
-
|
578
|
+
it "equals the gboolean type" do
|
579
|
+
_(GObject.type_name(type_info.gtype)).must_equal "gboolean"
|
580
|
+
end
|
579
581
|
end
|
580
|
-
end
|
581
582
|
|
582
|
-
|
583
|
-
|
584
|
-
let(:pointer?) { false }
|
583
|
+
describe "for :gint32" do
|
584
|
+
let(:tag) { :gint32 }
|
585
585
|
|
586
|
-
|
587
|
-
|
586
|
+
it "equals the gint type" do
|
587
|
+
_(GObject.type_name(type_info.gtype)).must_equal "gint"
|
588
|
+
end
|
588
589
|
end
|
589
|
-
end
|
590
590
|
|
591
|
-
|
592
|
-
|
593
|
-
let(:pointer?) { false }
|
591
|
+
describe "for :gint64" do
|
592
|
+
let(:tag) { :gint64 }
|
594
593
|
|
595
|
-
|
596
|
-
|
594
|
+
it "equals the gint64 type" do
|
595
|
+
_(GObject.type_name(type_info.gtype)).must_equal "gint64"
|
596
|
+
end
|
597
597
|
end
|
598
|
-
end
|
599
598
|
|
600
|
-
|
601
|
-
|
602
|
-
let(:pointer?) { false }
|
599
|
+
describe "for :guint64" do
|
600
|
+
let(:tag) { :guint64 }
|
603
601
|
|
604
|
-
|
605
|
-
|
602
|
+
it "equals the guint64 type" do
|
603
|
+
_(GObject.type_name(type_info.gtype)).must_equal "guint64"
|
604
|
+
end
|
606
605
|
end
|
607
606
|
end
|
608
607
|
|
609
|
-
describe
|
610
|
-
let(:
|
611
|
-
|
608
|
+
describe "for pointers" do
|
609
|
+
let(:pointer?) { true }
|
610
|
+
|
611
|
+
describe "to :void" do
|
612
|
+
let(:tag) { :void }
|
612
613
|
|
613
|
-
|
614
|
-
|
614
|
+
it "equals the gpointer type" do
|
615
|
+
_(GObject.type_name(type_info.gtype)).must_equal "gpointer"
|
616
|
+
end
|
615
617
|
end
|
616
|
-
end
|
617
618
|
|
618
|
-
|
619
|
-
|
620
|
-
let(:pointer?) { true }
|
619
|
+
describe "to :utf8" do
|
620
|
+
let(:tag) { :utf8 }
|
621
621
|
|
622
|
-
|
623
|
-
|
622
|
+
it "equals the gchararray type" do
|
623
|
+
_(GObject.type_name(type_info.gtype)).must_equal "gchararray"
|
624
|
+
end
|
624
625
|
end
|
625
|
-
end
|
626
626
|
|
627
|
-
|
628
|
-
|
629
|
-
let(:pointer?) { true }
|
627
|
+
describe "to :ghash" do
|
628
|
+
let(:tag) { :ghash }
|
630
629
|
|
631
|
-
|
632
|
-
|
630
|
+
it "equals the GHashTable type" do
|
631
|
+
_(GObject.type_name(type_info.gtype)).must_equal "GHashTable"
|
632
|
+
end
|
633
633
|
end
|
634
|
-
end
|
635
634
|
|
636
|
-
|
637
|
-
|
638
|
-
let(:pointer?) { true }
|
635
|
+
describe "to :glist" do
|
636
|
+
let(:tag) { :glist }
|
639
637
|
|
640
|
-
|
641
|
-
|
638
|
+
it "equals the pointer type" do
|
639
|
+
_(GObject.type_name(type_info.gtype)).must_equal "gpointer"
|
640
|
+
end
|
641
|
+
end
|
642
|
+
|
643
|
+
describe "to :error" do
|
644
|
+
let(:tag) { :error }
|
645
|
+
|
646
|
+
it "equals the gpointer type" do
|
647
|
+
_(GObject.type_name(type_info.gtype)).must_equal "gpointer"
|
648
|
+
end
|
649
|
+
end
|
650
|
+
|
651
|
+
describe "to :guint32" do
|
652
|
+
let(:tag) { :guint32 }
|
653
|
+
|
654
|
+
it "equals the gpointer type" do
|
655
|
+
_(GObject.type_name(type_info.gtype)).must_equal "gpointer"
|
656
|
+
end
|
642
657
|
end
|
643
658
|
end
|
644
659
|
|
645
|
-
describe
|
660
|
+
describe "for arrays" do
|
646
661
|
let(:tag) { :array }
|
647
662
|
let(:pointer?) { true }
|
648
663
|
|
649
|
-
describe
|
664
|
+
describe "for pointer to GArray" do
|
650
665
|
before do
|
651
666
|
allow(type_info).to receive(:zero_terminated?).and_return false
|
652
667
|
allow(type_info).to receive(:array_type).and_return :array
|
653
668
|
end
|
654
669
|
|
655
|
-
it
|
656
|
-
GObject.type_name(type_info.gtype).must_equal
|
670
|
+
it "equals the GArray type" do
|
671
|
+
_(GObject.type_name(type_info.gtype)).must_equal "GArray"
|
657
672
|
end
|
658
673
|
end
|
659
674
|
|
660
|
-
describe
|
675
|
+
describe "for a C array" do
|
661
676
|
before do
|
662
677
|
allow(type_info).to receive(:zero_terminated?).and_return false
|
663
678
|
allow(type_info).to receive(:array_type).and_return :c
|
664
679
|
end
|
665
680
|
|
666
|
-
it
|
667
|
-
GObject.type_name(type_info.gtype).must_equal
|
681
|
+
it "equals the gpointer type" do
|
682
|
+
_(GObject.type_name(type_info.gtype)).must_equal "gpointer"
|
668
683
|
end
|
669
684
|
end
|
670
685
|
|
671
|
-
describe
|
686
|
+
describe "for a zero-terminated array" do
|
672
687
|
before do
|
673
688
|
allow(type_info).to receive(:param_type).with(0).and_return elmtype_info
|
674
689
|
allow(type_info).to receive(:zero_terminated?).and_return true
|
675
690
|
end
|
676
691
|
|
677
|
-
describe
|
678
|
-
it
|
692
|
+
describe "of utf8" do
|
693
|
+
it "equals the GStrv type" do
|
679
694
|
allow(elmtype_info).to receive(:tag).and_return :utf8
|
680
695
|
allow(elmtype_info).to receive(:pointer?).and_return true
|
681
696
|
|
682
|
-
GObject.type_name(type_info.gtype).must_equal
|
697
|
+
_(GObject.type_name(type_info.gtype)).must_equal "GStrv"
|
683
698
|
end
|
684
699
|
end
|
685
700
|
|
686
|
-
describe
|
687
|
-
it
|
701
|
+
describe "of filename" do
|
702
|
+
it "equals the GStrv type" do
|
688
703
|
allow(elmtype_info).to receive(:tag).and_return :filename
|
689
704
|
allow(elmtype_info).to receive(:pointer?).and_return true
|
690
705
|
|
691
|
-
GObject.type_name(type_info.gtype).must_equal
|
706
|
+
_(GObject.type_name(type_info.gtype)).must_equal "GStrv"
|
692
707
|
end
|
693
708
|
end
|
694
709
|
end
|