gir_ffi 0.15.3 → 0.15.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Changelog.md +15 -0
- data/README.md +5 -6
- data/TODO.md +14 -35
- data/docs/Documentation.md +6 -0
- data/docs/Subclassing.md +38 -0
- data/lib/ffi-glib.rb +8 -3
- data/lib/ffi-glib/byte_array.rb +2 -1
- data/lib/ffi-glib/destroy_notify.rb +2 -2
- data/lib/ffi-glib/hash_table.rb +1 -2
- data/lib/ffi-glib/list.rb +11 -5
- data/lib/ffi-glib/list_methods.rb +12 -0
- data/lib/ffi-glib/s_list.rb +10 -4
- data/lib/ffi-gobject.rb +0 -3
- data/lib/ffi-gobject/object.rb +77 -73
- data/lib/ffi-gobject/object_class.rb +1 -1
- data/lib/ffi-gobject/value.rb +107 -108
- data/lib/ffi-gobject_introspection/i_base_info.rb +20 -19
- data/lib/gir_ffi-base/gobject/lib.rb +4 -0
- data/lib/gir_ffi/array_element_convertor.rb +1 -2
- data/lib/gir_ffi/boxed_base.rb +1 -5
- data/lib/gir_ffi/builder.rb +1 -1
- data/lib/gir_ffi/builder_helper.rb +7 -4
- data/lib/gir_ffi/builders/base_argument_builder.rb +2 -2
- data/lib/gir_ffi/builders/base_method_builder.rb +1 -1
- data/lib/gir_ffi/builders/base_type_builder.rb +1 -1
- data/lib/gir_ffi/builders/callback_argument_builder.rb +2 -0
- data/lib/gir_ffi/builders/callback_builder.rb +14 -12
- data/lib/gir_ffi/builders/callback_return_value_builder.rb +4 -6
- data/lib/gir_ffi/builders/class_struct_builder.rb +24 -0
- data/lib/gir_ffi/builders/enum_builder.rb +3 -3
- data/lib/gir_ffi/builders/interface_builder.rb +3 -1
- data/lib/gir_ffi/builders/mapping_method_builder.rb +1 -1
- data/lib/gir_ffi/builders/marshalling_method_builder.rb +5 -2
- data/lib/gir_ffi/builders/method_template.rb +4 -4
- data/lib/gir_ffi/builders/null_argument_builder.rb +0 -2
- data/lib/gir_ffi/builders/null_return_value_builder.rb +0 -2
- data/lib/gir_ffi/builders/object_builder.rb +16 -6
- data/lib/gir_ffi/builders/property_builder.rb +1 -2
- data/lib/gir_ffi/builders/signal_closure_builder.rb +3 -5
- data/lib/gir_ffi/builders/struct_builder.rb +5 -5
- data/lib/gir_ffi/builders/user_defined_builder.rb +8 -1
- data/lib/gir_ffi/builders/vfunc_argument_builder.rb +1 -1
- data/lib/gir_ffi/callback_base.rb +3 -3
- data/lib/gir_ffi/core.rb +17 -2
- data/lib/gir_ffi/glib_error.rb +1 -2
- data/lib/gir_ffi/in_pointer.rb +7 -0
- data/lib/gir_ffi/object_base.rb +27 -0
- data/lib/gir_ffi/return_value_info.rb +1 -2
- data/lib/gir_ffi/struct_base.rb +1 -9
- data/lib/gir_ffi/struct_like_base.rb +9 -5
- data/lib/gir_ffi/unintrospectable_type_info.rb +1 -1
- data/lib/gir_ffi/union_base.rb +1 -9
- data/lib/gir_ffi/user_defined_object_info.rb +3 -2
- data/lib/gir_ffi/version.rb +1 -1
- data/lib/gir_ffi/vfunc_implementation.rb +1 -0
- metadata +86 -136
- data/Gemfile +0 -14
- data/Rakefile +0 -9
- data/tasks/test.rake +0 -204
- data/test/base_test_helper.rb +0 -70
- data/test/ffi-glib/array_test.rb +0 -203
- data/test/ffi-glib/byte_array_test.rb +0 -28
- data/test/ffi-glib/bytes_test.rb +0 -61
- data/test/ffi-glib/closure_test.rb +0 -38
- data/test/ffi-glib/destroy_notify_test.rb +0 -18
- data/test/ffi-glib/hash_table_test.rb +0 -68
- data/test/ffi-glib/list_test.rb +0 -86
- data/test/ffi-glib/main_loop_test.rb +0 -53
- data/test/ffi-glib/ptr_array_test.rb +0 -112
- data/test/ffi-glib/ruby_closure_test.rb +0 -62
- data/test/ffi-glib/s_list_test.rb +0 -76
- data/test/ffi-glib/strv_test.rb +0 -60
- data/test/ffi-glib/variant_test.rb +0 -12
- data/test/ffi-gobject/gobject_test.rb +0 -76
- data/test/ffi-gobject/object_class_test.rb +0 -31
- data/test/ffi-gobject/object_test.rb +0 -123
- data/test/ffi-gobject/param_spec_test.rb +0 -32
- data/test/ffi-gobject/value_test.rb +0 -390
- data/test/ffi-gobject_introspection/gobject_type_init_test.rb +0 -26
- data/test/ffi-gobject_introspection/i_base_info_test.rb +0 -52
- data/test/ffi-gobject_introspection/i_constant_info_test.rb +0 -29
- data/test/ffi-gobject_introspection/i_enum_info_test.rb +0 -18
- data/test/ffi-gobject_introspection/i_function_info_test.rb +0 -6
- data/test/ffi-gobject_introspection/i_interface_info_test.rb +0 -23
- data/test/ffi-gobject_introspection/i_object_info_test.rb +0 -49
- data/test/ffi-gobject_introspection/i_property_info_test.rb +0 -47
- data/test/ffi-gobject_introspection/i_registered_type_info_test.rb +0 -27
- data/test/ffi-gobject_introspection/i_repository_test.rb +0 -81
- data/test/ffi-gobject_introspection/i_struct_info_test.rb +0 -23
- data/test/ffi-gobject_introspection/i_type_info_test.rb +0 -30
- data/test/ffi-gobject_introspection/i_union_info_test.rb +0 -17
- data/test/ffi-gobject_introspection/i_vfunc_info_test.rb +0 -41
- data/test/ffi-gobject_introspection/lib_test.rb +0 -13
- data/test/ffi-gobject_introspection/strv_test.rb +0 -46
- data/test/ffi-gobject_test.rb +0 -153
- data/test/gir_ffi/allocation_helper_test.rb +0 -36
- data/test/gir_ffi/arg_helper_test.rb +0 -146
- data/test/gir_ffi/boolean_test.rb +0 -43
- data/test/gir_ffi/boxed_base_test.rb +0 -65
- data/test/gir_ffi/builder_test.rb +0 -168
- data/test/gir_ffi/builders/argument_builder_test.rb +0 -691
- data/test/gir_ffi/builders/base_argument_builder_test.rb +0 -6
- data/test/gir_ffi/builders/callback_argument_builder_test.rb +0 -130
- data/test/gir_ffi/builders/callback_builder_test.rb +0 -117
- data/test/gir_ffi/builders/callback_return_value_builder_test.rb +0 -84
- data/test/gir_ffi/builders/constant_builder_test.rb +0 -6
- data/test/gir_ffi/builders/constructor_builder_test.rb +0 -39
- data/test/gir_ffi/builders/enum_builder_test.rb +0 -23
- data/test/gir_ffi/builders/field_builder_test.rb +0 -140
- data/test/gir_ffi/builders/function_builder_test.rb +0 -570
- data/test/gir_ffi/builders/initializer_builder_test.rb +0 -56
- data/test/gir_ffi/builders/interface_builder_test.rb +0 -32
- data/test/gir_ffi/builders/module_builder_test.rb +0 -43
- data/test/gir_ffi/builders/object_builder_test.rb +0 -98
- data/test/gir_ffi/builders/property_builder_test.rb +0 -161
- data/test/gir_ffi/builders/registered_type_builder_test.rb +0 -54
- data/test/gir_ffi/builders/return_value_builder_test.rb +0 -444
- data/test/gir_ffi/builders/signal_closure_builder_test.rb +0 -199
- data/test/gir_ffi/builders/struct_builder_test.rb +0 -96
- data/test/gir_ffi/builders/unintrospectable_boxed_builder_test.rb +0 -29
- data/test/gir_ffi/builders/unintrospectable_builder_test.rb +0 -84
- data/test/gir_ffi/builders/union_builder_test.rb +0 -28
- data/test/gir_ffi/builders/user_defined_builder_test.rb +0 -528
- data/test/gir_ffi/builders/vfunc_argument_builder_test.rb +0 -107
- data/test/gir_ffi/builders/vfunc_builder_test.rb +0 -245
- data/test/gir_ffi/callback_base_test.rb +0 -22
- data/test/gir_ffi/class_base_test.rb +0 -171
- data/test/gir_ffi/core_test.rb +0 -99
- data/test/gir_ffi/enum_base_test.rb +0 -43
- data/test/gir_ffi/error_type_info_test.rb +0 -50
- data/test/gir_ffi/ffi_ext/pointer_test.rb +0 -22
- data/test/gir_ffi/g_type_test.rb +0 -31
- data/test/gir_ffi/in_pointer_test.rb +0 -203
- data/test/gir_ffi/info_ext/i_callable_info_test.rb +0 -26
- data/test/gir_ffi/info_ext/i_callback_info_test.rb +0 -22
- data/test/gir_ffi/info_ext/i_field_info_test.rb +0 -37
- data/test/gir_ffi/info_ext/i_function_info_test.rb +0 -74
- data/test/gir_ffi/info_ext/i_signal_info_test.rb +0 -32
- data/test/gir_ffi/info_ext/i_type_info_test.rb +0 -712
- data/test/gir_ffi/info_ext/i_unresolved_info_test.rb +0 -19
- data/test/gir_ffi/info_ext/safe_constant_name_test.rb +0 -26
- data/test/gir_ffi/info_ext/safe_function_name_test.rb +0 -26
- data/test/gir_ffi/interface_base_test.rb +0 -20
- data/test/gir_ffi/method_stubber_test.rb +0 -67
- data/test/gir_ffi/object_base_test.rb +0 -64
- data/test/gir_ffi/object_store_test.rb +0 -41
- data/test/gir_ffi/receiver_argument_info_test.rb +0 -33
- data/test/gir_ffi/sized_array_test.rb +0 -206
- data/test/gir_ffi/struct_base_test.rb +0 -23
- data/test/gir_ffi/struct_like_base_test.rb +0 -167
- data/test/gir_ffi/type_map_test.rb +0 -17
- data/test/gir_ffi/unintrospectable_type_info_test.rb +0 -121
- data/test/gir_ffi/union_base_test.rb +0 -23
- data/test/gir_ffi/user_defined_object_info_test.rb +0 -119
- data/test/gir_ffi/user_defined_property_info_test.rb +0 -39
- data/test/gir_ffi/variable_name_generator_test.rb +0 -18
- data/test/gir_ffi/version_test.rb +0 -9
- data/test/gir_ffi/zero_terminated_test.rb +0 -108
- data/test/gir_ffi_test_helper.rb +0 -84
- data/test/integration/callback_exceptions_test.rb +0 -59
- data/test/integration/derived_classes_test.rb +0 -54
- data/test/integration/generated_everything_test.rb +0 -453
- data/test/integration/generated_gimarshallingtests_test.rb +0 -3109
- data/test/integration/generated_gio_test.rb +0 -116
- data/test/integration/generated_glib_test.rb +0 -10
- data/test/integration/generated_gobject_test.rb +0 -124
- data/test/integration/generated_gst_test.rb +0 -38
- data/test/integration/generated_gtk_source_test.rb +0 -21
- data/test/integration/generated_gtop_test.rb +0 -22
- data/test/integration/generated_pango_ft2_test.rb +0 -17
- data/test/integration/generated_pango_test.rb +0 -24
- data/test/integration/generated_regress_test.rb +0 -4076
- data/test/integration/generated_secret_test.rb +0 -14
- data/test/integration/generated_utility_test.rb +0 -174
- data/test/integration/generated_warnlib_test.rb +0 -45
- data/test/integration/method_lookup_test.rb +0 -34
- data/test/introspection_test_helper.rb +0 -94
- data/test/lib/Makefile.am +0 -110
- data/test/lib/autogen.sh +0 -4
- data/test/lib/configure.ac +0 -34
- data/test/lib/m4/jhflags.m4 +0 -21
- data/test/minitest/stats_plugin.rb +0 -30
@@ -1,56 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "gir_ffi_test_helper"
|
4
|
-
|
5
|
-
describe GirFFI::Builders::InitializerBuilder do
|
6
|
-
describe "#method_definition" do
|
7
|
-
let(:builder) { GirFFI::Builders::InitializerBuilder.new function_info }
|
8
|
-
let(:code) { builder.method_definition }
|
9
|
-
|
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
|
-
def initialize(obj)
|
15
|
-
_v1 = Regress::TestObj.from(obj)
|
16
|
-
_v2 = Regress::Lib.regress_test_obj_new _v1
|
17
|
-
store_pointer(_v2)
|
18
|
-
end
|
19
|
-
CODE
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
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
|
29
|
-
def initialize_from_file(x)
|
30
|
-
_v1 = GirFFI::InPointer.from_utf8(x)
|
31
|
-
_v2 = FFI::MemoryPointer.new(:pointer).write_pointer nil
|
32
|
-
_v3 = Regress::Lib.regress_test_obj_new_from_file _v1, _v2
|
33
|
-
GirFFI::ArgHelper.check_error(_v2)
|
34
|
-
store_pointer(_v3)
|
35
|
-
end
|
36
|
-
CODE
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
describe "for constructors for boxed types" do
|
41
|
-
let(:function_info) do
|
42
|
-
get_method_introspection_data "GIMarshallingTests", "BoxedStruct", "new"
|
43
|
-
end
|
44
|
-
|
45
|
-
it "builds an initializer that sets owned to true" do
|
46
|
-
_(code).must_equal <<~CODE
|
47
|
-
def initialize
|
48
|
-
_v1 = GIMarshallingTests::Lib.gi_marshalling_tests_boxed_struct_new
|
49
|
-
store_pointer(_v1)
|
50
|
-
@struct.owned = true
|
51
|
-
end
|
52
|
-
CODE
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
@@ -1,32 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "gir_ffi_test_helper"
|
4
|
-
|
5
|
-
describe GirFFI::Builders::InterfaceBuilder do
|
6
|
-
let(:interface_builder) do
|
7
|
-
GirFFI::Builders::InterfaceBuilder.new(
|
8
|
-
get_introspection_data("Regress", "TestInterface"))
|
9
|
-
end
|
10
|
-
|
11
|
-
describe "#build_class" do
|
12
|
-
before do
|
13
|
-
info = get_introspection_data "GObject", "TypePlugin"
|
14
|
-
@bldr = GirFFI::Builders::InterfaceBuilder.new info
|
15
|
-
@iface = @bldr.build_class
|
16
|
-
end
|
17
|
-
|
18
|
-
it "builds an interface as a module" do
|
19
|
-
assert_instance_of Module, @iface
|
20
|
-
end
|
21
|
-
|
22
|
-
it "creates methods on the interface" do
|
23
|
-
assert_defines_instance_method @iface, :complete_interface_info
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
describe "#interface_struct" do
|
28
|
-
it "returns the interface struct type" do
|
29
|
-
_(interface_builder.interface_struct).must_equal Regress::TestInterfaceIface
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
@@ -1,43 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "gir_ffi_test_helper"
|
4
|
-
|
5
|
-
describe GirFFI::Builders::ModuleBuilder do
|
6
|
-
let(:gir) { GObjectIntrospection::IRepository.default }
|
7
|
-
|
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
|
-
|
12
|
-
builder = GirFFI::Builders::ModuleBuilder.new "Foo"
|
13
|
-
|
14
|
-
expect(gir).to receive(:find_by_name).with("Foo", "Bar").and_return "gir info"
|
15
|
-
|
16
|
-
_(builder.find_namespaced_class_info(:Bar)).must_equal "gir info"
|
17
|
-
end
|
18
|
-
|
19
|
-
it "checks downcased class name as an alternative" do
|
20
|
-
allow(gir).to receive(:require).with("Foo", nil)
|
21
|
-
|
22
|
-
builder = GirFFI::Builders::ModuleBuilder.new "Foo"
|
23
|
-
|
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
|
-
|
27
|
-
_(builder.find_namespaced_class_info(:Bar)).must_equal "gir info"
|
28
|
-
end
|
29
|
-
|
30
|
-
it "raises a clear error if the named class does not exist" do
|
31
|
-
allow(gir).to receive(:require).with("Foo", nil)
|
32
|
-
|
33
|
-
builder = GirFFI::Builders::ModuleBuilder.new "Foo"
|
34
|
-
|
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
|
-
|
38
|
-
assert_raises NameError do
|
39
|
-
builder.find_namespaced_class_info :Bar
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
@@ -1,98 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "gir_ffi_test_helper"
|
4
|
-
|
5
|
-
describe GirFFI::Builders::ObjectBuilder do
|
6
|
-
let(:obj_builder) do
|
7
|
-
GirFFI::Builders::ObjectBuilder.new(
|
8
|
-
get_introspection_data("Regress", "TestObj"))
|
9
|
-
end
|
10
|
-
let(:sub_obj_builder) do
|
11
|
-
GirFFI::Builders::ObjectBuilder.new(
|
12
|
-
get_introspection_data("Regress", "TestSubObj"))
|
13
|
-
end
|
14
|
-
let(:param_spec_builder) do
|
15
|
-
GirFFI::Builders::ObjectBuilder.new(
|
16
|
-
get_introspection_data("GObject", "ParamSpec"))
|
17
|
-
end
|
18
|
-
|
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
|
-
end
|
24
|
-
|
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
|
-
end
|
29
|
-
|
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
|
-
end
|
35
|
-
|
36
|
-
it "returns nil for a signal that doesn't exist" do
|
37
|
-
_(obj_builder.find_signal("foo")).must_be_nil
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
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
|
-
end
|
46
|
-
|
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
|
-
end
|
51
|
-
|
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
|
-
end
|
55
|
-
end
|
56
|
-
|
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
|
-
end
|
61
|
-
|
62
|
-
it "returns the parent struct type for classes without their own struct" do
|
63
|
-
binding_info = get_introspection_data "GObject", "Binding"
|
64
|
-
builder = GirFFI::Builders::ObjectBuilder.new binding_info
|
65
|
-
_(builder.object_class_struct).must_equal GObject::ObjectClass
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
describe "for a struct without defined fields" do
|
70
|
-
let(:info) { get_introspection_data "GObject", "Binding" }
|
71
|
-
|
72
|
-
it "uses a single field of the parent struct type as the default layout" do
|
73
|
-
_(info.n_fields).must_equal 0
|
74
|
-
|
75
|
-
builder = GirFFI::Builders::ObjectBuilder.new info
|
76
|
-
|
77
|
-
spec = builder.send :layout_specification
|
78
|
-
assert_equal [:parent, GObject::Object::Struct, 0], spec
|
79
|
-
end
|
80
|
-
end
|
81
|
-
|
82
|
-
describe "#eligible_properties" do
|
83
|
-
let(:wi_builder) do
|
84
|
-
GirFFI::Builders::ObjectBuilder.new(
|
85
|
-
get_introspection_data("Regress", "TestWi8021x"))
|
86
|
-
end
|
87
|
-
|
88
|
-
it "includes properties that do not have a matching getter method" do
|
89
|
-
result = obj_builder.eligible_properties
|
90
|
-
_(result.map(&:name)).must_include "double"
|
91
|
-
end
|
92
|
-
|
93
|
-
it "skips properties that have a matching getter method" do
|
94
|
-
result = wi_builder.eligible_properties
|
95
|
-
_(result.map(&:name)).wont_include "testbool"
|
96
|
-
end
|
97
|
-
end
|
98
|
-
end
|
@@ -1,161 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "gir_ffi_test_helper"
|
4
|
-
|
5
|
-
describe GirFFI::Builders::PropertyBuilder do
|
6
|
-
let(:builder) { GirFFI::Builders::PropertyBuilder.new property_info }
|
7
|
-
|
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
|
-
CODE
|
18
|
-
|
19
|
-
_(builder.getter_def).must_equal expected
|
20
|
-
end
|
21
|
-
|
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
|
-
CODE
|
29
|
-
|
30
|
-
_(builder.setter_def).must_equal expected
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
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
|
45
|
-
CODE
|
46
|
-
|
47
|
-
_(builder.getter_def).must_equal expected
|
48
|
-
end
|
49
|
-
|
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
|
56
|
-
CODE
|
57
|
-
|
58
|
-
_(builder.setter_def).must_equal expected
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
describe "for a property of type :strv" do
|
63
|
-
let(:property_info) do
|
64
|
-
get_property_introspection_data("GIMarshallingTests",
|
65
|
-
"PropertiesObject",
|
66
|
-
"some-strv")
|
67
|
-
end
|
68
|
-
|
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
|
75
|
-
CODE
|
76
|
-
|
77
|
-
_(builder.getter_def).must_equal expected
|
78
|
-
end
|
79
|
-
|
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
|
86
|
-
CODE
|
87
|
-
|
88
|
-
_(builder.setter_def).must_equal expected
|
89
|
-
end
|
90
|
-
end
|
91
|
-
|
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
|
100
|
-
CODE
|
101
|
-
|
102
|
-
_(builder.getter_def).must_equal expected
|
103
|
-
end
|
104
|
-
|
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
|
111
|
-
CODE
|
112
|
-
|
113
|
-
_(builder.setter_def).must_equal expected
|
114
|
-
end
|
115
|
-
end
|
116
|
-
|
117
|
-
describe "for a property of a callback type" do
|
118
|
-
let(:property_info) do
|
119
|
-
get_property_introspection_data("Regress", "AnnotationObject", "function-property")
|
120
|
-
end
|
121
|
-
|
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
|
129
|
-
CODE
|
130
|
-
|
131
|
-
_(builder.getter_def).must_equal expected
|
132
|
-
end
|
133
|
-
|
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
|
140
|
-
CODE
|
141
|
-
|
142
|
-
_(builder.setter_def).must_equal expected
|
143
|
-
end
|
144
|
-
end
|
145
|
-
|
146
|
-
describe "#container_defines_getter_method?" do
|
147
|
-
let(:property_info) { Object.new.tap { |o| o.extend GirFFI::InfoExt::IPropertyInfo } }
|
148
|
-
let(:container_info) { Object.new }
|
149
|
-
|
150
|
-
before do
|
151
|
-
allow(property_info).to receive(:container).and_return 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
|
-
end
|
156
|
-
|
157
|
-
it "finds methods with underscores for properties with dashes" do
|
158
|
-
_(builder.container_defines_getter_method?).must_equal true
|
159
|
-
end
|
160
|
-
end
|
161
|
-
end
|
@@ -1,54 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "gir_ffi_test_helper"
|
4
|
-
|
5
|
-
GirFFI.setup :Regress
|
6
|
-
|
7
|
-
describe GirFFI::Builders::RegisteredTypeBuilder do
|
8
|
-
describe "#setup_instance_method" do
|
9
|
-
it "restores a method that was removed" do
|
10
|
-
Regress::TestObj.class_eval { remove_method "instance_method" }
|
11
|
-
|
12
|
-
builder = Regress::TestObj.gir_ffi_builder
|
13
|
-
|
14
|
-
builder.setup_instance_method "instance_method"
|
15
|
-
|
16
|
-
obj = Regress::TestObj.constructor
|
17
|
-
_(obj).must_respond_to "instance_method"
|
18
|
-
end
|
19
|
-
|
20
|
-
it "returns the name of the generated method" do
|
21
|
-
builder = Regress::TestObj.gir_ffi_builder
|
22
|
-
result = builder.setup_instance_method "instance_method"
|
23
|
-
_(result).must_equal "instance_method"
|
24
|
-
end
|
25
|
-
|
26
|
-
it "returns the name of the generated method if different from the info name" do
|
27
|
-
skip "Need some way to test this now that GLib::IConv is gone"
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
describe "#stub_methods" do
|
32
|
-
it "adds getter method aliases" do
|
33
|
-
instance = Regress::TestWi8021x.new
|
34
|
-
_(instance).must_respond_to :testbool
|
35
|
-
end
|
36
|
-
|
37
|
-
it "adds setter method aliases" do
|
38
|
-
instance = Regress::TestWi8021x.new
|
39
|
-
_(instance).must_respond_to :testbool=
|
40
|
-
end
|
41
|
-
|
42
|
-
it "adds getter alias for method with arguments" do
|
43
|
-
instance = Regress::TestObj.constructor
|
44
|
-
_(instance).must_respond_to :get_qdata
|
45
|
-
_(instance).must_respond_to :qdata
|
46
|
-
end
|
47
|
-
|
48
|
-
it "does not add setter alias for method with more than one argument" do
|
49
|
-
instance = Regress::TestObj.constructor
|
50
|
-
_(instance).must_respond_to :set_data
|
51
|
-
_(instance).wont_respond_to :data=
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|