gir_ffi 0.14.0 → 0.15.3
Sign up to get free protection for your applications and to get access to all the features.
- 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
|