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,16 +1,16 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
3
|
+
require "gir_ffi_test_helper"
|
4
4
|
|
5
5
|
describe GirFFI::Builders::InitializerBuilder do
|
6
|
-
describe
|
6
|
+
describe "#method_definition" do
|
7
7
|
let(:builder) { GirFFI::Builders::InitializerBuilder.new function_info }
|
8
8
|
let(:code) { builder.method_definition }
|
9
9
|
|
10
|
-
describe
|
11
|
-
let(:function_info) { get_method_introspection_data
|
12
|
-
it
|
13
|
-
code.must_equal
|
10
|
+
describe "for constructors with the default name" do
|
11
|
+
let(:function_info) { get_method_introspection_data "Regress", "TestObj", "new" }
|
12
|
+
it "builds an initializer" do
|
13
|
+
_(code).must_equal <<~CODE
|
14
14
|
def initialize(obj)
|
15
15
|
_v1 = Regress::TestObj.from(obj)
|
16
16
|
_v2 = Regress::Lib.regress_test_obj_new _v1
|
@@ -20,10 +20,12 @@ describe GirFFI::Builders::InitializerBuilder do
|
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
23
|
-
describe
|
24
|
-
let(:function_info)
|
25
|
-
|
26
|
-
|
23
|
+
describe "for constructors with a custom name" do
|
24
|
+
let(:function_info) do
|
25
|
+
get_method_introspection_data "Regress", "TestObj", "new_from_file"
|
26
|
+
end
|
27
|
+
it "builds a custom initializer" do
|
28
|
+
_(code).must_equal <<~CODE
|
27
29
|
def initialize_from_file(x)
|
28
30
|
_v1 = GirFFI::InPointer.from_utf8(x)
|
29
31
|
_v2 = FFI::MemoryPointer.new(:pointer).write_pointer nil
|
@@ -35,13 +37,13 @@ describe GirFFI::Builders::InitializerBuilder do
|
|
35
37
|
end
|
36
38
|
end
|
37
39
|
|
38
|
-
describe
|
40
|
+
describe "for constructors for boxed types" do
|
39
41
|
let(:function_info) do
|
40
|
-
get_method_introspection_data
|
42
|
+
get_method_introspection_data "GIMarshallingTests", "BoxedStruct", "new"
|
41
43
|
end
|
42
44
|
|
43
|
-
it
|
44
|
-
code.must_equal
|
45
|
+
it "builds an initializer that sets owned to true" do
|
46
|
+
_(code).must_equal <<~CODE
|
45
47
|
def initialize
|
46
48
|
_v1 = GIMarshallingTests::Lib.gi_marshalling_tests_boxed_struct_new
|
47
49
|
store_pointer(_v1)
|
@@ -1,32 +1,32 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
3
|
+
require "gir_ffi_test_helper"
|
4
4
|
|
5
5
|
describe GirFFI::Builders::InterfaceBuilder do
|
6
6
|
let(:interface_builder) do
|
7
7
|
GirFFI::Builders::InterfaceBuilder.new(
|
8
|
-
get_introspection_data(
|
8
|
+
get_introspection_data("Regress", "TestInterface"))
|
9
9
|
end
|
10
10
|
|
11
|
-
describe
|
11
|
+
describe "#build_class" do
|
12
12
|
before do
|
13
|
-
info = get_introspection_data
|
13
|
+
info = get_introspection_data "GObject", "TypePlugin"
|
14
14
|
@bldr = GirFFI::Builders::InterfaceBuilder.new info
|
15
15
|
@iface = @bldr.build_class
|
16
16
|
end
|
17
17
|
|
18
|
-
it
|
18
|
+
it "builds an interface as a module" do
|
19
19
|
assert_instance_of Module, @iface
|
20
20
|
end
|
21
21
|
|
22
|
-
it
|
22
|
+
it "creates methods on the interface" do
|
23
23
|
assert_defines_instance_method @iface, :complete_interface_info
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
27
|
-
describe
|
28
|
-
it
|
29
|
-
interface_builder.interface_struct.must_equal Regress::TestInterfaceIface
|
27
|
+
describe "#interface_struct" do
|
28
|
+
it "returns the interface struct type" do
|
29
|
+
_(interface_builder.interface_struct).must_equal Regress::TestInterfaceIface
|
30
30
|
end
|
31
31
|
end
|
32
32
|
end
|
@@ -1,39 +1,39 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
3
|
+
require "gir_ffi_test_helper"
|
4
4
|
|
5
5
|
describe GirFFI::Builders::ModuleBuilder do
|
6
6
|
let(:gir) { GObjectIntrospection::IRepository.default }
|
7
7
|
|
8
|
-
describe
|
9
|
-
it
|
10
|
-
allow(gir).to receive(:require).with(
|
8
|
+
describe "#find_namespaced_class_info" do
|
9
|
+
it "finds the info in the GIR" do
|
10
|
+
allow(gir).to receive(:require).with("Foo", nil)
|
11
11
|
|
12
|
-
builder = GirFFI::Builders::ModuleBuilder.new
|
12
|
+
builder = GirFFI::Builders::ModuleBuilder.new "Foo"
|
13
13
|
|
14
|
-
expect(gir).to receive(:find_by_name).with(
|
14
|
+
expect(gir).to receive(:find_by_name).with("Foo", "Bar").and_return "gir info"
|
15
15
|
|
16
|
-
builder.find_namespaced_class_info(:Bar).must_equal
|
16
|
+
_(builder.find_namespaced_class_info(:Bar)).must_equal "gir info"
|
17
17
|
end
|
18
18
|
|
19
|
-
it
|
20
|
-
allow(gir).to receive(:require).with(
|
19
|
+
it "checks downcased class name as an alternative" do
|
20
|
+
allow(gir).to receive(:require).with("Foo", nil)
|
21
21
|
|
22
|
-
builder = GirFFI::Builders::ModuleBuilder.new
|
22
|
+
builder = GirFFI::Builders::ModuleBuilder.new "Foo"
|
23
23
|
|
24
|
-
expect(gir).to receive(:find_by_name).with(
|
25
|
-
expect(gir).to receive(:find_by_name).with(
|
24
|
+
expect(gir).to receive(:find_by_name).with("Foo", "Bar").and_return nil
|
25
|
+
expect(gir).to receive(:find_by_name).with("Foo", "bar").and_return "gir info"
|
26
26
|
|
27
|
-
builder.find_namespaced_class_info(:Bar).must_equal
|
27
|
+
_(builder.find_namespaced_class_info(:Bar)).must_equal "gir info"
|
28
28
|
end
|
29
29
|
|
30
|
-
it
|
31
|
-
allow(gir).to receive(:require).with(
|
30
|
+
it "raises a clear error if the named class does not exist" do
|
31
|
+
allow(gir).to receive(:require).with("Foo", nil)
|
32
32
|
|
33
|
-
builder = GirFFI::Builders::ModuleBuilder.new
|
33
|
+
builder = GirFFI::Builders::ModuleBuilder.new "Foo"
|
34
34
|
|
35
|
-
expect(gir).to receive(:find_by_name).with(
|
36
|
-
expect(gir).to receive(:find_by_name).with(
|
35
|
+
expect(gir).to receive(:find_by_name).with("Foo", "Bar").and_return nil
|
36
|
+
expect(gir).to receive(:find_by_name).with("Foo", "bar").and_return nil
|
37
37
|
|
38
38
|
assert_raises NameError do
|
39
39
|
builder.find_namespaced_class_info :Bar
|
@@ -1,76 +1,76 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
3
|
+
require "gir_ffi_test_helper"
|
4
4
|
|
5
5
|
describe GirFFI::Builders::ObjectBuilder do
|
6
6
|
let(:obj_builder) do
|
7
7
|
GirFFI::Builders::ObjectBuilder.new(
|
8
|
-
get_introspection_data(
|
8
|
+
get_introspection_data("Regress", "TestObj"))
|
9
9
|
end
|
10
10
|
let(:sub_obj_builder) do
|
11
11
|
GirFFI::Builders::ObjectBuilder.new(
|
12
|
-
get_introspection_data(
|
12
|
+
get_introspection_data("Regress", "TestSubObj"))
|
13
13
|
end
|
14
14
|
let(:param_spec_builder) do
|
15
15
|
GirFFI::Builders::ObjectBuilder.new(
|
16
|
-
get_introspection_data(
|
16
|
+
get_introspection_data("GObject", "ParamSpec"))
|
17
17
|
end
|
18
18
|
|
19
|
-
describe
|
20
|
-
it 'finds
|
21
|
-
sig = obj_builder.find_signal
|
22
|
-
sig.name.must_equal
|
19
|
+
describe "#find_signal" do
|
20
|
+
it 'finds a signal defined on the class itself' do
|
21
|
+
sig = obj_builder.find_signal "test"
|
22
|
+
_(sig.name).must_equal "test"
|
23
23
|
end
|
24
24
|
|
25
|
-
it 'finds
|
26
|
-
sig = sub_obj_builder.find_signal
|
27
|
-
sig.name.must_equal
|
25
|
+
it 'finds a signal defined on a superclass' do
|
26
|
+
sig = sub_obj_builder.find_signal "test"
|
27
|
+
_(sig.name).must_equal "test"
|
28
28
|
end
|
29
29
|
|
30
|
-
it 'finds
|
31
|
-
|
32
|
-
sig =
|
33
|
-
sig.name.must_equal
|
30
|
+
it 'finds signals defined on interfaces' do
|
31
|
+
skip_below "1.57.2"
|
32
|
+
sig = sub_obj_builder.find_signal "interface-signal"
|
33
|
+
_(sig.name).must_equal "interface-signal"
|
34
34
|
end
|
35
35
|
|
36
36
|
it "returns nil for a signal that doesn't exist" do
|
37
|
-
obj_builder.find_signal(
|
37
|
+
_(obj_builder.find_signal("foo")).must_be_nil
|
38
38
|
end
|
39
39
|
end
|
40
40
|
|
41
|
-
describe
|
42
|
-
it
|
43
|
-
prop = obj_builder.find_property(
|
44
|
-
prop.name.must_equal
|
41
|
+
describe "#find_property" do
|
42
|
+
it "finds a property specified on the class itself" do
|
43
|
+
prop = obj_builder.find_property("int")
|
44
|
+
_(prop.name).must_equal "int"
|
45
45
|
end
|
46
46
|
|
47
|
-
it
|
48
|
-
prop = sub_obj_builder.find_property(
|
49
|
-
prop.name.must_equal
|
47
|
+
it "finds a property specified on the parent class" do
|
48
|
+
prop = sub_obj_builder.find_property("int")
|
49
|
+
_(prop.name).must_equal "int"
|
50
50
|
end
|
51
51
|
|
52
|
-
it
|
53
|
-
sub_obj_builder.find_property(
|
52
|
+
it "returns nil if the property is not found" do
|
53
|
+
_(sub_obj_builder.find_property("this-property-does-not-exist")).must_be_nil
|
54
54
|
end
|
55
55
|
end
|
56
56
|
|
57
|
-
describe
|
58
|
-
it
|
59
|
-
obj_builder.object_class_struct.must_equal Regress::TestObjClass
|
57
|
+
describe "#object_class_struct" do
|
58
|
+
it "returns the class struct type" do
|
59
|
+
_(obj_builder.object_class_struct).must_equal Regress::TestObjClass
|
60
60
|
end
|
61
61
|
|
62
|
-
it
|
63
|
-
binding_info = get_introspection_data
|
62
|
+
it "returns the parent struct type for classes without their own struct" do
|
63
|
+
binding_info = get_introspection_data "GObject", "Binding"
|
64
64
|
builder = GirFFI::Builders::ObjectBuilder.new binding_info
|
65
|
-
builder.object_class_struct.must_equal GObject::ObjectClass
|
65
|
+
_(builder.object_class_struct).must_equal GObject::ObjectClass
|
66
66
|
end
|
67
67
|
end
|
68
68
|
|
69
|
-
describe
|
70
|
-
let(:info) { get_introspection_data
|
69
|
+
describe "for a struct without defined fields" do
|
70
|
+
let(:info) { get_introspection_data "GObject", "Binding" }
|
71
71
|
|
72
|
-
it
|
73
|
-
info.n_fields.must_equal 0
|
72
|
+
it "uses a single field of the parent struct type as the default layout" do
|
73
|
+
_(info.n_fields).must_equal 0
|
74
74
|
|
75
75
|
builder = GirFFI::Builders::ObjectBuilder.new info
|
76
76
|
|
@@ -79,20 +79,20 @@ describe GirFFI::Builders::ObjectBuilder do
|
|
79
79
|
end
|
80
80
|
end
|
81
81
|
|
82
|
-
describe
|
82
|
+
describe "#eligible_properties" do
|
83
83
|
let(:wi_builder) do
|
84
84
|
GirFFI::Builders::ObjectBuilder.new(
|
85
|
-
get_introspection_data(
|
85
|
+
get_introspection_data("Regress", "TestWi8021x"))
|
86
86
|
end
|
87
87
|
|
88
|
-
it
|
88
|
+
it "includes properties that do not have a matching getter method" do
|
89
89
|
result = obj_builder.eligible_properties
|
90
|
-
result.map(&:name).must_include
|
90
|
+
_(result.map(&:name)).must_include "double"
|
91
91
|
end
|
92
92
|
|
93
|
-
it
|
93
|
+
it "skips properties that have a matching getter method" do
|
94
94
|
result = wi_builder.eligible_properties
|
95
|
-
result.map(&:name).wont_include
|
95
|
+
_(result.map(&:name)).wont_include "testbool"
|
96
96
|
end
|
97
97
|
end
|
98
98
|
end
|
@@ -1,161 +1,161 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
3
|
+
require "gir_ffi_test_helper"
|
4
4
|
|
5
5
|
describe GirFFI::Builders::PropertyBuilder do
|
6
6
|
let(:builder) { GirFFI::Builders::PropertyBuilder.new property_info }
|
7
7
|
|
8
|
-
describe
|
9
|
-
let(:property_info) { get_property_introspection_data(
|
10
|
-
it
|
11
|
-
expected =
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
8
|
+
describe "for a property of type :glist" do
|
9
|
+
let(:property_info) { get_property_introspection_data("Regress", "TestObj", "list") }
|
10
|
+
it "generates the correct getter definition" do
|
11
|
+
expected = <<~CODE
|
12
|
+
def list
|
13
|
+
_v1 = get_property('list')
|
14
|
+
_v2 = GLib::List.wrap(:utf8, _v1)
|
15
|
+
_v2
|
16
|
+
end
|
17
17
|
CODE
|
18
18
|
|
19
|
-
builder.getter_def.must_equal expected
|
19
|
+
_(builder.getter_def).must_equal expected
|
20
20
|
end
|
21
21
|
|
22
|
-
it
|
23
|
-
expected =
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
22
|
+
it "generates the correct setter definition" do
|
23
|
+
expected = <<~CODE
|
24
|
+
def list= value
|
25
|
+
_v1 = GLib::List.from(:utf8, value)
|
26
|
+
set_property("list", _v1)
|
27
|
+
end
|
28
28
|
CODE
|
29
29
|
|
30
|
-
builder.setter_def.must_equal expected
|
30
|
+
_(builder.setter_def).must_equal expected
|
31
31
|
end
|
32
32
|
end
|
33
33
|
|
34
|
-
describe
|
35
|
-
let(:property_info)
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
34
|
+
describe "for a property of type :ghash" do
|
35
|
+
let(:property_info) do
|
36
|
+
get_property_introspection_data("Regress", "TestObj", "hash-table")
|
37
|
+
end
|
38
|
+
it "generates the correct getter definition" do
|
39
|
+
expected = <<~CODE
|
40
|
+
def hash_table
|
41
|
+
_v1 = get_property('hash-table')
|
42
|
+
_v2 = GLib::HashTable.wrap([:utf8, :gint8], _v1)
|
43
|
+
_v2
|
44
|
+
end
|
43
45
|
CODE
|
44
46
|
|
45
|
-
builder.getter_def.must_equal expected
|
47
|
+
_(builder.getter_def).must_equal expected
|
46
48
|
end
|
47
49
|
|
48
|
-
it
|
49
|
-
expected =
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
50
|
+
it "generates the correct setter definition" do
|
51
|
+
expected = <<~CODE
|
52
|
+
def hash_table= value
|
53
|
+
_v1 = GLib::HashTable.from([:utf8, :gint8], value)
|
54
|
+
set_property("hash-table", _v1)
|
55
|
+
end
|
54
56
|
CODE
|
55
57
|
|
56
|
-
builder.setter_def.must_equal expected
|
58
|
+
_(builder.setter_def).must_equal expected
|
57
59
|
end
|
58
60
|
end
|
59
61
|
|
60
|
-
describe
|
62
|
+
describe "for a property of type :strv" do
|
61
63
|
let(:property_info) do
|
62
|
-
get_property_introspection_data(
|
63
|
-
|
64
|
-
|
65
|
-
end
|
66
|
-
before do
|
67
|
-
skip unless property_info
|
64
|
+
get_property_introspection_data("GIMarshallingTests",
|
65
|
+
"PropertiesObject",
|
66
|
+
"some-strv")
|
68
67
|
end
|
69
68
|
|
70
|
-
it
|
71
|
-
expected =
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
69
|
+
it "generates the correct getter definition" do
|
70
|
+
expected = <<~CODE
|
71
|
+
def some_strv
|
72
|
+
_v1 = get_property('some-strv')
|
73
|
+
_v1
|
74
|
+
end
|
76
75
|
CODE
|
77
76
|
|
78
|
-
builder.getter_def.must_equal expected
|
77
|
+
_(builder.getter_def).must_equal expected
|
79
78
|
end
|
80
79
|
|
81
|
-
it
|
82
|
-
expected =
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
80
|
+
it "generates the correct setter definition" do
|
81
|
+
expected = <<~CODE
|
82
|
+
def some_strv= value
|
83
|
+
_v1 = GLib::Strv.from(value)
|
84
|
+
set_property("some-strv", _v1)
|
85
|
+
end
|
87
86
|
CODE
|
88
87
|
|
89
|
-
builder.setter_def.must_equal expected
|
88
|
+
_(builder.setter_def).must_equal expected
|
90
89
|
end
|
91
90
|
end
|
92
91
|
|
93
|
-
describe
|
94
|
-
let(:property_info) { get_property_introspection_data(
|
95
|
-
it
|
96
|
-
expected =
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
92
|
+
describe "for a property of type :utf8" do
|
93
|
+
let(:property_info) { get_property_introspection_data("Regress", "TestObj", "string") }
|
94
|
+
it "generates the correct getter definition" do
|
95
|
+
expected = <<~CODE
|
96
|
+
def string
|
97
|
+
_v1 = get_property('string')
|
98
|
+
_v1
|
99
|
+
end
|
101
100
|
CODE
|
102
101
|
|
103
|
-
builder.getter_def.must_equal expected
|
102
|
+
_(builder.getter_def).must_equal expected
|
104
103
|
end
|
105
104
|
|
106
|
-
it
|
107
|
-
expected =
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
105
|
+
it "generates the correct setter definition" do
|
106
|
+
expected = <<~CODE
|
107
|
+
def string= value
|
108
|
+
_v1 = value
|
109
|
+
set_property("string", _v1)
|
110
|
+
end
|
112
111
|
CODE
|
113
112
|
|
114
|
-
builder.setter_def.must_equal expected
|
113
|
+
_(builder.setter_def).must_equal expected
|
115
114
|
end
|
116
115
|
end
|
117
116
|
|
118
|
-
describe
|
117
|
+
describe "for a property of a callback type" do
|
119
118
|
let(:property_info) do
|
120
|
-
get_property_introspection_data(
|
119
|
+
get_property_introspection_data("Regress", "AnnotationObject", "function-property")
|
121
120
|
end
|
122
121
|
|
123
|
-
it
|
124
|
-
expected =
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
122
|
+
it "generates the correct getter definition" do
|
123
|
+
expected = <<~CODE
|
124
|
+
def function_property
|
125
|
+
_v1 = get_property('function-property')
|
126
|
+
_v2 = Regress::AnnotationCallback.wrap(_v1)
|
127
|
+
_v2
|
128
|
+
end
|
130
129
|
CODE
|
131
130
|
|
132
|
-
builder.getter_def.must_equal expected
|
131
|
+
_(builder.getter_def).must_equal expected
|
133
132
|
end
|
134
133
|
|
135
|
-
it
|
136
|
-
expected =
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
134
|
+
it "generates the correct setter definition" do
|
135
|
+
expected = <<~CODE
|
136
|
+
def function_property= value
|
137
|
+
_v1 = Regress::AnnotationCallback.from(value)
|
138
|
+
set_property("function-property", _v1)
|
139
|
+
end
|
141
140
|
CODE
|
142
141
|
|
143
|
-
builder.setter_def.must_equal expected
|
142
|
+
_(builder.setter_def).must_equal expected
|
144
143
|
end
|
145
144
|
end
|
146
145
|
|
147
|
-
describe
|
146
|
+
describe "#container_defines_getter_method?" do
|
148
147
|
let(:property_info) { Object.new.tap { |o| o.extend GirFFI::InfoExt::IPropertyInfo } }
|
149
148
|
let(:container_info) { Object.new }
|
150
149
|
|
151
150
|
before do
|
152
151
|
allow(property_info).to receive(:container).and_return container_info
|
153
|
-
allow(property_info).to receive(:name).and_return
|
154
|
-
allow(container_info)
|
152
|
+
allow(property_info).to receive(:name).and_return "foo-bar"
|
153
|
+
allow(container_info)
|
154
|
+
.to receive(:find_instance_method).with("foo_bar").and_return true
|
155
155
|
end
|
156
156
|
|
157
|
-
it
|
158
|
-
builder.container_defines_getter_method
|
157
|
+
it "finds methods with underscores for properties with dashes" do
|
158
|
+
_(builder.container_defines_getter_method?).must_equal true
|
159
159
|
end
|
160
160
|
end
|
161
161
|
end
|