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.
Files changed (183) hide show
  1. checksums.yaml +4 -4
  2. data/Changelog.md +15 -0
  3. data/README.md +5 -6
  4. data/TODO.md +14 -35
  5. data/docs/Documentation.md +6 -0
  6. data/docs/Subclassing.md +38 -0
  7. data/lib/ffi-glib.rb +8 -3
  8. data/lib/ffi-glib/byte_array.rb +2 -1
  9. data/lib/ffi-glib/destroy_notify.rb +2 -2
  10. data/lib/ffi-glib/hash_table.rb +1 -2
  11. data/lib/ffi-glib/list.rb +11 -5
  12. data/lib/ffi-glib/list_methods.rb +12 -0
  13. data/lib/ffi-glib/s_list.rb +10 -4
  14. data/lib/ffi-gobject.rb +0 -3
  15. data/lib/ffi-gobject/object.rb +77 -73
  16. data/lib/ffi-gobject/object_class.rb +1 -1
  17. data/lib/ffi-gobject/value.rb +107 -108
  18. data/lib/ffi-gobject_introspection/i_base_info.rb +20 -19
  19. data/lib/gir_ffi-base/gobject/lib.rb +4 -0
  20. data/lib/gir_ffi/array_element_convertor.rb +1 -2
  21. data/lib/gir_ffi/boxed_base.rb +1 -5
  22. data/lib/gir_ffi/builder.rb +1 -1
  23. data/lib/gir_ffi/builder_helper.rb +7 -4
  24. data/lib/gir_ffi/builders/base_argument_builder.rb +2 -2
  25. data/lib/gir_ffi/builders/base_method_builder.rb +1 -1
  26. data/lib/gir_ffi/builders/base_type_builder.rb +1 -1
  27. data/lib/gir_ffi/builders/callback_argument_builder.rb +2 -0
  28. data/lib/gir_ffi/builders/callback_builder.rb +14 -12
  29. data/lib/gir_ffi/builders/callback_return_value_builder.rb +4 -6
  30. data/lib/gir_ffi/builders/class_struct_builder.rb +24 -0
  31. data/lib/gir_ffi/builders/enum_builder.rb +3 -3
  32. data/lib/gir_ffi/builders/interface_builder.rb +3 -1
  33. data/lib/gir_ffi/builders/mapping_method_builder.rb +1 -1
  34. data/lib/gir_ffi/builders/marshalling_method_builder.rb +5 -2
  35. data/lib/gir_ffi/builders/method_template.rb +4 -4
  36. data/lib/gir_ffi/builders/null_argument_builder.rb +0 -2
  37. data/lib/gir_ffi/builders/null_return_value_builder.rb +0 -2
  38. data/lib/gir_ffi/builders/object_builder.rb +16 -6
  39. data/lib/gir_ffi/builders/property_builder.rb +1 -2
  40. data/lib/gir_ffi/builders/signal_closure_builder.rb +3 -5
  41. data/lib/gir_ffi/builders/struct_builder.rb +5 -5
  42. data/lib/gir_ffi/builders/user_defined_builder.rb +8 -1
  43. data/lib/gir_ffi/builders/vfunc_argument_builder.rb +1 -1
  44. data/lib/gir_ffi/callback_base.rb +3 -3
  45. data/lib/gir_ffi/core.rb +17 -2
  46. data/lib/gir_ffi/glib_error.rb +1 -2
  47. data/lib/gir_ffi/in_pointer.rb +7 -0
  48. data/lib/gir_ffi/object_base.rb +27 -0
  49. data/lib/gir_ffi/return_value_info.rb +1 -2
  50. data/lib/gir_ffi/struct_base.rb +1 -9
  51. data/lib/gir_ffi/struct_like_base.rb +9 -5
  52. data/lib/gir_ffi/unintrospectable_type_info.rb +1 -1
  53. data/lib/gir_ffi/union_base.rb +1 -9
  54. data/lib/gir_ffi/user_defined_object_info.rb +3 -2
  55. data/lib/gir_ffi/version.rb +1 -1
  56. data/lib/gir_ffi/vfunc_implementation.rb +1 -0
  57. metadata +86 -136
  58. data/Gemfile +0 -14
  59. data/Rakefile +0 -9
  60. data/tasks/test.rake +0 -204
  61. data/test/base_test_helper.rb +0 -70
  62. data/test/ffi-glib/array_test.rb +0 -203
  63. data/test/ffi-glib/byte_array_test.rb +0 -28
  64. data/test/ffi-glib/bytes_test.rb +0 -61
  65. data/test/ffi-glib/closure_test.rb +0 -38
  66. data/test/ffi-glib/destroy_notify_test.rb +0 -18
  67. data/test/ffi-glib/hash_table_test.rb +0 -68
  68. data/test/ffi-glib/list_test.rb +0 -86
  69. data/test/ffi-glib/main_loop_test.rb +0 -53
  70. data/test/ffi-glib/ptr_array_test.rb +0 -112
  71. data/test/ffi-glib/ruby_closure_test.rb +0 -62
  72. data/test/ffi-glib/s_list_test.rb +0 -76
  73. data/test/ffi-glib/strv_test.rb +0 -60
  74. data/test/ffi-glib/variant_test.rb +0 -12
  75. data/test/ffi-gobject/gobject_test.rb +0 -76
  76. data/test/ffi-gobject/object_class_test.rb +0 -31
  77. data/test/ffi-gobject/object_test.rb +0 -123
  78. data/test/ffi-gobject/param_spec_test.rb +0 -32
  79. data/test/ffi-gobject/value_test.rb +0 -390
  80. data/test/ffi-gobject_introspection/gobject_type_init_test.rb +0 -26
  81. data/test/ffi-gobject_introspection/i_base_info_test.rb +0 -52
  82. data/test/ffi-gobject_introspection/i_constant_info_test.rb +0 -29
  83. data/test/ffi-gobject_introspection/i_enum_info_test.rb +0 -18
  84. data/test/ffi-gobject_introspection/i_function_info_test.rb +0 -6
  85. data/test/ffi-gobject_introspection/i_interface_info_test.rb +0 -23
  86. data/test/ffi-gobject_introspection/i_object_info_test.rb +0 -49
  87. data/test/ffi-gobject_introspection/i_property_info_test.rb +0 -47
  88. data/test/ffi-gobject_introspection/i_registered_type_info_test.rb +0 -27
  89. data/test/ffi-gobject_introspection/i_repository_test.rb +0 -81
  90. data/test/ffi-gobject_introspection/i_struct_info_test.rb +0 -23
  91. data/test/ffi-gobject_introspection/i_type_info_test.rb +0 -30
  92. data/test/ffi-gobject_introspection/i_union_info_test.rb +0 -17
  93. data/test/ffi-gobject_introspection/i_vfunc_info_test.rb +0 -41
  94. data/test/ffi-gobject_introspection/lib_test.rb +0 -13
  95. data/test/ffi-gobject_introspection/strv_test.rb +0 -46
  96. data/test/ffi-gobject_test.rb +0 -153
  97. data/test/gir_ffi/allocation_helper_test.rb +0 -36
  98. data/test/gir_ffi/arg_helper_test.rb +0 -146
  99. data/test/gir_ffi/boolean_test.rb +0 -43
  100. data/test/gir_ffi/boxed_base_test.rb +0 -65
  101. data/test/gir_ffi/builder_test.rb +0 -168
  102. data/test/gir_ffi/builders/argument_builder_test.rb +0 -691
  103. data/test/gir_ffi/builders/base_argument_builder_test.rb +0 -6
  104. data/test/gir_ffi/builders/callback_argument_builder_test.rb +0 -130
  105. data/test/gir_ffi/builders/callback_builder_test.rb +0 -117
  106. data/test/gir_ffi/builders/callback_return_value_builder_test.rb +0 -84
  107. data/test/gir_ffi/builders/constant_builder_test.rb +0 -6
  108. data/test/gir_ffi/builders/constructor_builder_test.rb +0 -39
  109. data/test/gir_ffi/builders/enum_builder_test.rb +0 -23
  110. data/test/gir_ffi/builders/field_builder_test.rb +0 -140
  111. data/test/gir_ffi/builders/function_builder_test.rb +0 -570
  112. data/test/gir_ffi/builders/initializer_builder_test.rb +0 -56
  113. data/test/gir_ffi/builders/interface_builder_test.rb +0 -32
  114. data/test/gir_ffi/builders/module_builder_test.rb +0 -43
  115. data/test/gir_ffi/builders/object_builder_test.rb +0 -98
  116. data/test/gir_ffi/builders/property_builder_test.rb +0 -161
  117. data/test/gir_ffi/builders/registered_type_builder_test.rb +0 -54
  118. data/test/gir_ffi/builders/return_value_builder_test.rb +0 -444
  119. data/test/gir_ffi/builders/signal_closure_builder_test.rb +0 -199
  120. data/test/gir_ffi/builders/struct_builder_test.rb +0 -96
  121. data/test/gir_ffi/builders/unintrospectable_boxed_builder_test.rb +0 -29
  122. data/test/gir_ffi/builders/unintrospectable_builder_test.rb +0 -84
  123. data/test/gir_ffi/builders/union_builder_test.rb +0 -28
  124. data/test/gir_ffi/builders/user_defined_builder_test.rb +0 -528
  125. data/test/gir_ffi/builders/vfunc_argument_builder_test.rb +0 -107
  126. data/test/gir_ffi/builders/vfunc_builder_test.rb +0 -245
  127. data/test/gir_ffi/callback_base_test.rb +0 -22
  128. data/test/gir_ffi/class_base_test.rb +0 -171
  129. data/test/gir_ffi/core_test.rb +0 -99
  130. data/test/gir_ffi/enum_base_test.rb +0 -43
  131. data/test/gir_ffi/error_type_info_test.rb +0 -50
  132. data/test/gir_ffi/ffi_ext/pointer_test.rb +0 -22
  133. data/test/gir_ffi/g_type_test.rb +0 -31
  134. data/test/gir_ffi/in_pointer_test.rb +0 -203
  135. data/test/gir_ffi/info_ext/i_callable_info_test.rb +0 -26
  136. data/test/gir_ffi/info_ext/i_callback_info_test.rb +0 -22
  137. data/test/gir_ffi/info_ext/i_field_info_test.rb +0 -37
  138. data/test/gir_ffi/info_ext/i_function_info_test.rb +0 -74
  139. data/test/gir_ffi/info_ext/i_signal_info_test.rb +0 -32
  140. data/test/gir_ffi/info_ext/i_type_info_test.rb +0 -712
  141. data/test/gir_ffi/info_ext/i_unresolved_info_test.rb +0 -19
  142. data/test/gir_ffi/info_ext/safe_constant_name_test.rb +0 -26
  143. data/test/gir_ffi/info_ext/safe_function_name_test.rb +0 -26
  144. data/test/gir_ffi/interface_base_test.rb +0 -20
  145. data/test/gir_ffi/method_stubber_test.rb +0 -67
  146. data/test/gir_ffi/object_base_test.rb +0 -64
  147. data/test/gir_ffi/object_store_test.rb +0 -41
  148. data/test/gir_ffi/receiver_argument_info_test.rb +0 -33
  149. data/test/gir_ffi/sized_array_test.rb +0 -206
  150. data/test/gir_ffi/struct_base_test.rb +0 -23
  151. data/test/gir_ffi/struct_like_base_test.rb +0 -167
  152. data/test/gir_ffi/type_map_test.rb +0 -17
  153. data/test/gir_ffi/unintrospectable_type_info_test.rb +0 -121
  154. data/test/gir_ffi/union_base_test.rb +0 -23
  155. data/test/gir_ffi/user_defined_object_info_test.rb +0 -119
  156. data/test/gir_ffi/user_defined_property_info_test.rb +0 -39
  157. data/test/gir_ffi/variable_name_generator_test.rb +0 -18
  158. data/test/gir_ffi/version_test.rb +0 -9
  159. data/test/gir_ffi/zero_terminated_test.rb +0 -108
  160. data/test/gir_ffi_test_helper.rb +0 -84
  161. data/test/integration/callback_exceptions_test.rb +0 -59
  162. data/test/integration/derived_classes_test.rb +0 -54
  163. data/test/integration/generated_everything_test.rb +0 -453
  164. data/test/integration/generated_gimarshallingtests_test.rb +0 -3109
  165. data/test/integration/generated_gio_test.rb +0 -116
  166. data/test/integration/generated_glib_test.rb +0 -10
  167. data/test/integration/generated_gobject_test.rb +0 -124
  168. data/test/integration/generated_gst_test.rb +0 -38
  169. data/test/integration/generated_gtk_source_test.rb +0 -21
  170. data/test/integration/generated_gtop_test.rb +0 -22
  171. data/test/integration/generated_pango_ft2_test.rb +0 -17
  172. data/test/integration/generated_pango_test.rb +0 -24
  173. data/test/integration/generated_regress_test.rb +0 -4076
  174. data/test/integration/generated_secret_test.rb +0 -14
  175. data/test/integration/generated_utility_test.rb +0 -174
  176. data/test/integration/generated_warnlib_test.rb +0 -45
  177. data/test/integration/method_lookup_test.rb +0 -34
  178. data/test/introspection_test_helper.rb +0 -94
  179. data/test/lib/Makefile.am +0 -110
  180. data/test/lib/autogen.sh +0 -4
  181. data/test/lib/configure.ac +0 -34
  182. data/test/lib/m4/jhflags.m4 +0 -21
  183. 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