gir_ffi 0.14.1 → 0.15.0

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 (263) hide show
  1. checksums.yaml +4 -4
  2. data/Changelog.md +21 -0
  3. data/Gemfile +6 -4
  4. data/README.md +4 -4
  5. data/Rakefile +5 -5
  6. data/lib/ffi-glib/array.rb +14 -4
  7. data/lib/ffi-glib/byte_array.rb +7 -2
  8. data/lib/ffi-glib/container_class_methods.rb +1 -1
  9. data/lib/ffi-glib/error.rb +1 -1
  10. data/lib/ffi-glib/hash_table.rb +3 -3
  11. data/lib/ffi-glib/list.rb +1 -1
  12. data/lib/ffi-glib/list_methods.rb +1 -1
  13. data/lib/ffi-glib/main_loop.rb +3 -3
  14. data/lib/ffi-glib/ptr_array.rb +30 -8
  15. data/lib/ffi-glib/s_list.rb +1 -1
  16. data/lib/ffi-glib/variant.rb +1 -1
  17. data/lib/ffi-glib.rb +16 -16
  18. data/lib/ffi-gobject/object.rb +23 -32
  19. data/lib/ffi-gobject/param_spec.rb +1 -1
  20. data/lib/ffi-gobject/ruby_closure.rb +2 -2
  21. data/lib/ffi-gobject/value.rb +37 -28
  22. data/lib/ffi-gobject.rb +13 -13
  23. data/lib/ffi-gobject_introspection/gobject_type_init.rb +2 -2
  24. data/lib/ffi-gobject_introspection/i_arg_info.rb +2 -2
  25. data/lib/ffi-gobject_introspection/i_base_info.rb +27 -17
  26. data/lib/ffi-gobject_introspection/i_callable_info.rb +4 -4
  27. data/lib/ffi-gobject_introspection/i_constant_info.rb +2 -2
  28. data/lib/ffi-gobject_introspection/i_enum_info.rb +1 -0
  29. data/lib/ffi-gobject_introspection/i_field_info.rb +1 -1
  30. data/lib/ffi-gobject_introspection/i_function_info.rb +1 -1
  31. data/lib/ffi-gobject_introspection/i_interface_info.rb +1 -1
  32. data/lib/ffi-gobject_introspection/i_object_info.rb +2 -2
  33. data/lib/ffi-gobject_introspection/i_property_info.rb +2 -2
  34. data/lib/ffi-gobject_introspection/i_repository.rb +9 -6
  35. data/lib/ffi-gobject_introspection/i_struct_info.rb +2 -1
  36. data/lib/ffi-gobject_introspection/i_type_info.rb +13 -7
  37. data/lib/ffi-gobject_introspection/i_unresolved_info.rb +1 -1
  38. data/lib/ffi-gobject_introspection/i_vfunc_info.rb +1 -1
  39. data/lib/ffi-gobject_introspection/lib.rb +30 -19
  40. data/lib/ffi-gobject_introspection/strv.rb +1 -1
  41. data/lib/ffi-gobject_introspection.rb +20 -20
  42. data/lib/gir_ffi/allocation_helper.rb +1 -1
  43. data/lib/gir_ffi/arg_helper.rb +4 -4
  44. data/lib/gir_ffi/{in_out_pointer.rb → array_element_convertor.rb} +16 -23
  45. data/lib/gir_ffi/boolean.rb +1 -1
  46. data/lib/gir_ffi/boxed_base.rb +1 -1
  47. data/lib/gir_ffi/builder.rb +18 -10
  48. data/lib/gir_ffi/builders/argument_builder.rb +17 -17
  49. data/lib/gir_ffi/builders/base_argument_builder.rb +1 -0
  50. data/lib/gir_ffi/builders/base_method_builder.rb +7 -7
  51. data/lib/gir_ffi/builders/base_return_value_builder.rb +1 -1
  52. data/lib/gir_ffi/builders/base_type_builder.rb +1 -1
  53. data/lib/gir_ffi/builders/c_to_ruby_convertor.rb +5 -5
  54. data/lib/gir_ffi/builders/callback_argument_builder.rb +8 -8
  55. data/lib/gir_ffi/builders/callback_builder.rb +3 -3
  56. data/lib/gir_ffi/builders/callback_return_value_builder.rb +2 -2
  57. data/lib/gir_ffi/builders/closure_argument_builder.rb +1 -1
  58. data/lib/gir_ffi/builders/closure_return_value_builder.rb +1 -1
  59. data/lib/gir_ffi/builders/constant_builder.rb +1 -1
  60. data/lib/gir_ffi/builders/constructor_builder.rb +9 -9
  61. data/lib/gir_ffi/builders/enum_builder.rb +2 -2
  62. data/lib/gir_ffi/builders/field_builder.rb +16 -15
  63. data/lib/gir_ffi/builders/flags_builder.rb +2 -2
  64. data/lib/gir_ffi/builders/full_c_to_ruby_convertor.rb +1 -1
  65. data/lib/gir_ffi/builders/function_builder.rb +11 -5
  66. data/lib/gir_ffi/builders/initializer_builder.rb +3 -3
  67. data/lib/gir_ffi/builders/initializer_return_value_builder.rb +2 -2
  68. data/lib/gir_ffi/builders/interface_builder.rb +2 -2
  69. data/lib/gir_ffi/builders/mapping_method_builder.rb +9 -9
  70. data/lib/gir_ffi/builders/marshalling_method_builder.rb +7 -7
  71. data/lib/gir_ffi/builders/method_template.rb +1 -1
  72. data/lib/gir_ffi/builders/module_builder.rb +4 -6
  73. data/lib/gir_ffi/builders/object_builder.rb +6 -6
  74. data/lib/gir_ffi/builders/property_argument_builder.rb +1 -1
  75. data/lib/gir_ffi/builders/property_builder.rb +13 -12
  76. data/lib/gir_ffi/builders/property_return_value_builder.rb +1 -1
  77. data/lib/gir_ffi/builders/registered_type_builder.rb +14 -5
  78. data/lib/gir_ffi/builders/return_value_builder.rb +4 -4
  79. data/lib/gir_ffi/builders/ruby_to_c_convertor.rb +6 -6
  80. data/lib/gir_ffi/builders/signal_closure_builder.rb +2 -2
  81. data/lib/gir_ffi/builders/struct_builder.rb +4 -4
  82. data/lib/gir_ffi/builders/struct_like.rb +1 -1
  83. data/lib/gir_ffi/builders/type_builder.rb +12 -12
  84. data/lib/gir_ffi/builders/unintrospectable_boxed_builder.rb +2 -2
  85. data/lib/gir_ffi/builders/unintrospectable_builder.rb +2 -2
  86. data/lib/gir_ffi/builders/union_builder.rb +4 -4
  87. data/lib/gir_ffi/builders/user_defined_builder.rb +2 -2
  88. data/lib/gir_ffi/builders/vfunc_argument_builder.rb +1 -1
  89. data/lib/gir_ffi/builders/vfunc_builder.rb +6 -6
  90. data/lib/gir_ffi/builders/with_layout.rb +2 -2
  91. data/lib/gir_ffi/callback_base.rb +1 -1
  92. data/lib/gir_ffi/class_base.rb +5 -5
  93. data/lib/gir_ffi/core.rb +19 -20
  94. data/lib/gir_ffi/enum_base.rb +1 -1
  95. data/lib/gir_ffi/enum_like_base.rb +2 -2
  96. data/lib/gir_ffi/error_argument_info.rb +2 -2
  97. data/lib/gir_ffi/error_type_info.rb +1 -1
  98. data/lib/gir_ffi/ffi_ext/pointer.rb +1 -1
  99. data/lib/gir_ffi/ffi_ext.rb +1 -1
  100. data/lib/gir_ffi/flags_base.rb +1 -1
  101. data/lib/gir_ffi/in_pointer.rb +10 -0
  102. data/lib/gir_ffi/info_ext/full_type_name.rb +3 -3
  103. data/lib/gir_ffi/info_ext/i_arg_info.rb +1 -1
  104. data/lib/gir_ffi/info_ext/i_callable_info.rb +1 -1
  105. data/lib/gir_ffi/info_ext/i_callback_info.rb +1 -1
  106. data/lib/gir_ffi/info_ext/i_field_info.rb +1 -1
  107. data/lib/gir_ffi/info_ext/i_function_info.rb +1 -1
  108. data/lib/gir_ffi/info_ext/i_property_info.rb +2 -2
  109. data/lib/gir_ffi/info_ext/i_registered_type_info.rb +4 -5
  110. data/lib/gir_ffi/info_ext/i_signal_info.rb +7 -3
  111. data/lib/gir_ffi/info_ext/i_type_info.rb +48 -26
  112. data/lib/gir_ffi/info_ext/i_unresolved_info.rb +1 -1
  113. data/lib/gir_ffi/info_ext/i_value_info.rb +2 -2
  114. data/lib/gir_ffi/info_ext/i_vfunc_info.rb +2 -2
  115. data/lib/gir_ffi/info_ext/safe_constant_name.rb +8 -8
  116. data/lib/gir_ffi/info_ext/safe_function_name.rb +2 -2
  117. data/lib/gir_ffi/info_ext.rb +15 -15
  118. data/lib/gir_ffi/interface_base.rb +3 -3
  119. data/lib/gir_ffi/lib_c.rb +1 -1
  120. data/lib/gir_ffi/method_stubber.rb +1 -1
  121. data/lib/gir_ffi/module_base.rb +1 -1
  122. data/lib/gir_ffi/object_base.rb +3 -4
  123. data/lib/gir_ffi/receiver_argument_info.rb +1 -1
  124. data/lib/gir_ffi/receiver_type_info.rb +2 -2
  125. data/lib/gir_ffi/registered_type_base.rb +1 -1
  126. data/lib/gir_ffi/sized_array.rb +4 -2
  127. data/lib/gir_ffi/struct.rb +1 -1
  128. data/lib/gir_ffi/struct_base.rb +1 -1
  129. data/lib/gir_ffi/type_map.rb +2 -23
  130. data/lib/gir_ffi/unintrospectable_boxed_info.rb +2 -2
  131. data/lib/gir_ffi/unintrospectable_type_info.rb +1 -1
  132. data/lib/gir_ffi/union.rb +1 -1
  133. data/lib/gir_ffi/union_base.rb +1 -1
  134. data/lib/gir_ffi/user_defined_object_info.rb +6 -2
  135. data/lib/gir_ffi/user_defined_property_info.rb +33 -33
  136. data/lib/gir_ffi/version.rb +1 -1
  137. data/lib/gir_ffi-base/gobject/lib.rb +3 -2
  138. data/lib/gir_ffi-base/gobject.rb +26 -25
  139. data/lib/gir_ffi-base.rb +1 -1
  140. data/lib/gir_ffi.rb +3 -3
  141. data/tasks/test.rake +3 -2
  142. data/test/base_test_helper.rb +16 -9
  143. data/test/ffi-glib/array_test.rb +71 -56
  144. data/test/ffi-glib/byte_array_test.rb +13 -7
  145. data/test/ffi-glib/bytes_test.rb +24 -19
  146. data/test/ffi-glib/closure_test.rb +11 -11
  147. data/test/ffi-glib/destroy_notify_test.rb +6 -6
  148. data/test/ffi-glib/hash_table_test.rb +27 -27
  149. data/test/ffi-glib/list_test.rb +22 -22
  150. data/test/ffi-glib/main_loop_test.rb +12 -12
  151. data/test/ffi-glib/ptr_array_test.rb +39 -39
  152. data/test/ffi-glib/ruby_closure_test.rb +10 -10
  153. data/test/ffi-glib/s_list_test.rb +20 -20
  154. data/test/ffi-glib/strv_test.rb +19 -19
  155. data/test/ffi-glib/variant_test.rb +5 -5
  156. data/test/ffi-gobject/gobject_test.rb +48 -44
  157. data/test/ffi-gobject/object_class_test.rb +8 -8
  158. data/test/ffi-gobject/object_test.rb +49 -67
  159. data/test/ffi-gobject/param_spec_test.rb +12 -12
  160. data/test/ffi-gobject/value_test.rb +145 -125
  161. data/test/ffi-gobject_introspection/gobject_type_init_test.rb +8 -8
  162. data/test/ffi-gobject_introspection/i_base_info_test.rb +15 -16
  163. data/test/ffi-gobject_introspection/i_constant_info_test.rb +9 -13
  164. data/test/ffi-gobject_introspection/i_enum_info_test.rb +7 -7
  165. data/test/ffi-gobject_introspection/i_function_info_test.rb +1 -1
  166. data/test/ffi-gobject_introspection/i_interface_info_test.rb +10 -10
  167. data/test/ffi-gobject_introspection/i_object_info_test.rb +23 -23
  168. data/test/ffi-gobject_introspection/i_property_info_test.rb +19 -19
  169. data/test/ffi-gobject_introspection/i_registered_type_info_test.rb +10 -10
  170. data/test/ffi-gobject_introspection/i_repository_test.rb +31 -31
  171. data/test/ffi-gobject_introspection/i_struct_info_test.rb +10 -10
  172. data/test/ffi-gobject_introspection/i_type_info_test.rb +12 -15
  173. data/test/ffi-gobject_introspection/i_union_info_test.rb +7 -7
  174. data/test/ffi-gobject_introspection/i_vfunc_info_test.rb +16 -16
  175. data/test/ffi-gobject_introspection/lib_test.rb +3 -3
  176. data/test/ffi-gobject_introspection/strv_test.rb +9 -9
  177. data/test/ffi-gobject_test.rb +44 -44
  178. data/test/gir_ffi/allocation_helper_test.rb +13 -13
  179. data/test/gir_ffi/arg_helper_test.rb +63 -64
  180. data/test/gir_ffi/boolean_test.rb +20 -20
  181. data/test/gir_ffi/boxed_base_test.rb +18 -18
  182. data/test/gir_ffi/builder_test.rb +115 -93
  183. data/test/gir_ffi/builders/argument_builder_test.rb +280 -286
  184. data/test/gir_ffi/builders/base_argument_builder_test.rb +1 -1
  185. data/test/gir_ffi/builders/callback_argument_builder_test.rb +53 -56
  186. data/test/gir_ffi/builders/callback_builder_test.rb +71 -72
  187. data/test/gir_ffi/builders/callback_return_value_builder_test.rb +36 -40
  188. data/test/gir_ffi/builders/constant_builder_test.rb +1 -1
  189. data/test/gir_ffi/builders/constructor_builder_test.rb +10 -10
  190. data/test/gir_ffi/builders/enum_builder_test.rb +10 -10
  191. data/test/gir_ffi/builders/field_builder_test.rb +42 -42
  192. data/test/gir_ffi/builders/function_builder_test.rb +236 -224
  193. data/test/gir_ffi/builders/initializer_builder_test.rb +14 -14
  194. data/test/gir_ffi/builders/interface_builder_test.rb +9 -9
  195. data/test/gir_ffi/builders/module_builder_test.rb +18 -18
  196. data/test/gir_ffi/builders/object_builder_test.rb +38 -38
  197. data/test/gir_ffi/builders/property_builder_test.rb +91 -94
  198. data/test/gir_ffi/builders/registered_type_builder_test.rb +35 -11
  199. data/test/gir_ffi/builders/return_value_builder_test.rb +215 -222
  200. data/test/gir_ffi/builders/signal_closure_builder_test.rb +122 -113
  201. data/test/gir_ffi/builders/struct_builder_test.rb +32 -32
  202. data/test/gir_ffi/builders/unintrospectable_boxed_builder_test.rb +8 -14
  203. data/test/gir_ffi/builders/unintrospectable_builder_test.rb +23 -23
  204. data/test/gir_ffi/builders/union_builder_test.rb +12 -15
  205. data/test/gir_ffi/builders/user_defined_builder_test.rb +147 -147
  206. data/test/gir_ffi/builders/vfunc_argument_builder_test.rb +40 -40
  207. data/test/gir_ffi/builders/vfunc_builder_test.rb +145 -157
  208. data/test/gir_ffi/callback_base_test.rb +9 -9
  209. data/test/gir_ffi/class_base_test.rb +49 -51
  210. data/test/gir_ffi/core_test.rb +32 -32
  211. data/test/gir_ffi/enum_base_test.rb +19 -19
  212. data/test/gir_ffi/error_type_info_test.rb +23 -23
  213. data/test/gir_ffi/ffi_ext/pointer_test.rb +5 -5
  214. data/test/gir_ffi/g_type_test.rb +11 -11
  215. data/test/gir_ffi/in_pointer_test.rb +70 -50
  216. data/test/gir_ffi/info_ext/i_callable_info_test.rb +5 -5
  217. data/test/gir_ffi/info_ext/i_callback_info_test.rb +4 -4
  218. data/test/gir_ffi/info_ext/i_field_info_test.rb +6 -6
  219. data/test/gir_ffi/info_ext/i_function_info_test.rb +17 -17
  220. data/test/gir_ffi/info_ext/i_signal_info_test.rb +8 -8
  221. data/test/gir_ffi/info_ext/i_type_info_test.rb +229 -215
  222. data/test/gir_ffi/info_ext/i_unresolved_info_test.rb +4 -4
  223. data/test/gir_ffi/info_ext/safe_constant_name_test.rb +8 -8
  224. data/test/gir_ffi/info_ext/safe_function_name_test.rb +8 -8
  225. data/test/gir_ffi/interface_base_test.rb +8 -8
  226. data/test/gir_ffi/method_stubber_test.rb +19 -19
  227. data/test/gir_ffi/object_base_test.rb +19 -19
  228. data/test/gir_ffi/object_store_test.rb +13 -13
  229. data/test/gir_ffi/receiver_argument_info_test.rb +15 -15
  230. data/test/gir_ffi/sized_array_test.rb +68 -68
  231. data/test/gir_ffi/struct_base_test.rb +8 -8
  232. data/test/gir_ffi/struct_like_base_test.rb +64 -64
  233. data/test/gir_ffi/type_map_test.rb +6 -6
  234. data/test/gir_ffi/unintrospectable_type_info_test.rb +33 -33
  235. data/test/gir_ffi/union_base_test.rb +8 -8
  236. data/test/gir_ffi/user_defined_object_info_test.rb +34 -34
  237. data/test/gir_ffi/user_defined_property_info_test.rb +16 -16
  238. data/test/gir_ffi/variable_name_generator_test.rb +8 -8
  239. data/test/gir_ffi/version_test.rb +4 -4
  240. data/test/gir_ffi/zero_terminated_test.rb +34 -34
  241. data/test/gir_ffi_test_helper.rb +3 -3
  242. data/test/integration/callback_exceptions_test.rb +17 -21
  243. data/test/integration/derived_classes_test.rb +13 -13
  244. data/test/integration/generated_everything_test.rb +224 -224
  245. data/test/integration/generated_gimarshallingtests_test.rb +1118 -1017
  246. data/test/integration/generated_gio_test.rb +36 -36
  247. data/test/integration/generated_glib_test.rb +4 -6
  248. data/test/integration/generated_gobject_test.rb +43 -35
  249. data/test/integration/generated_gst_test.rb +16 -16
  250. data/test/integration/generated_gtk_source_test.rb +22 -17
  251. data/test/integration/generated_gtop_test.rb +8 -15
  252. data/test/integration/generated_pango_ft2_test.rb +2 -2
  253. data/test/integration/generated_pango_test.rb +4 -4
  254. data/test/integration/generated_regress_test.rb +1809 -1621
  255. data/test/integration/generated_secret_test.rb +8 -11
  256. data/test/integration/generated_utility_test.rb +81 -81
  257. data/test/integration/generated_warnlib_test.rb +13 -19
  258. data/test/integration/method_lookup_test.rb +6 -6
  259. data/test/introspection_test_helper.rb +48 -7
  260. data/test/minitest/stats_plugin.rb +1 -1
  261. metadata +11 -28
  262. data/lib/ffi-glib/array_methods.rb +0 -16
  263. data/test/gir_ffi/in_out_pointer_test.rb +0 -56
@@ -1,187 +1,196 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'gir_ffi_test_helper'
3
+ require "gir_ffi_test_helper"
4
4
 
5
5
  describe GirFFI::Builders::SignalClosureBuilder do
6
6
  let(:builder) { GirFFI::Builders::SignalClosureBuilder.new signal_info }
7
7
 
8
- describe '#build_class' do
8
+ describe "#build_class" do
9
9
  let(:signal_info) do
10
- get_signal_introspection_data 'Regress', 'TestObj', 'test'
10
+ get_signal_introspection_data "Regress", "TestObj", "test"
11
11
  end
12
12
 
13
- it 'builds a descendant of RubyClosure' do
13
+ it "builds a descendant of RubyClosure" do
14
14
  klass = builder.build_class
15
- klass.superclass.must_equal GObject::RubyClosure
15
+ _(klass.superclass).must_equal GObject::RubyClosure
16
16
  end
17
17
  end
18
18
 
19
- describe '#marshaller_definition' do
20
- describe 'for a signal with no arguments or return value' do
19
+ describe "#marshaller_definition" do
20
+ describe "for a signal with no arguments or return value" do
21
21
  let(:signal_info) do
22
- get_signal_introspection_data 'Regress', 'TestObj', 'test'
22
+ get_signal_introspection_data "Regress", "TestObj", "test"
23
23
  end
24
24
 
25
- it 'returns a valid marshaller converting only the receiver' do
26
- expected = <<-CODE.reset_indentation
27
- def self.marshaller(closure, return_value, param_values, _invocation_hint, _marshal_data)
28
- _instance = param_values.first.get_value_plain
29
- _v1 = _instance
30
- wrap(closure.to_ptr).invoke_block(_v1)
31
- end
25
+ it "returns a valid marshaller converting only the receiver" do
26
+ expected = <<~CODE
27
+ def self.marshaller(closure, return_value, param_values, _invocation_hint, _marshal_data)
28
+ _instance = param_values.first.get_value_plain
29
+ _v1 = _instance
30
+ wrap(closure.to_ptr).invoke_block(_v1)
31
+ end
32
32
  CODE
33
33
 
34
- builder.marshaller_definition.must_equal expected
34
+ _(builder.marshaller_definition).must_equal expected
35
35
  end
36
36
  end
37
37
 
38
- describe 'for a signal with an argument and a return value' do
38
+ describe "for a signal with an argument and a return value" do
39
39
  let(:signal_info) do
40
- get_signal_introspection_data 'Regress', 'TestObj', 'sig-with-int64-prop'
41
- end
42
-
43
- it 'returns a valid mapping method' do
44
- skip unless signal_info
45
-
46
- expected = <<-CODE.reset_indentation
47
- def self.marshaller(closure, return_value, param_values, _invocation_hint, _marshal_data)
48
- _instance, i = param_values.map(&:get_value_plain)
49
- _v1 = _instance
50
- _v2 = i
51
- _v3 = wrap(closure.to_ptr).invoke_block(_v1, _v2)
52
- return_value.set_value _v3
53
- end
40
+ get_signal_introspection_data "Regress", "TestObj", "sig-with-int64-prop"
41
+ end
42
+
43
+ it "returns a valid mapping method" do
44
+ expected = <<~CODE
45
+ def self.marshaller(closure, return_value, param_values, _invocation_hint, _marshal_data)
46
+ _instance, i = param_values.map(&:get_value_plain)
47
+ _v1 = _instance
48
+ _v2 = i
49
+ _v3 = wrap(closure.to_ptr).invoke_block(_v1, _v2)
50
+ return_value.set_value _v3
51
+ end
54
52
  CODE
55
53
 
56
- builder.marshaller_definition.must_equal expected
54
+ _(builder.marshaller_definition).must_equal expected
57
55
  end
58
56
  end
59
57
 
60
- describe 'for a signal with an enum argument' do
58
+ describe "for a signal with an enum argument" do
61
59
  let(:signal_info) do
62
- get_signal_introspection_data 'Gio', 'MountOperation', 'reply'
60
+ get_signal_introspection_data "Gio", "MountOperation", "reply"
63
61
  end
64
62
 
65
- it 'returns a valid mapping method' do
66
- expected = <<-CODE.reset_indentation
67
- def self.marshaller(closure, return_value, param_values, _invocation_hint, _marshal_data)
68
- _instance, result = param_values.map(&:get_value_plain)
69
- _v1 = _instance
70
- _v2 = result
71
- wrap(closure.to_ptr).invoke_block(_v1, _v2)
72
- end
63
+ it "returns a valid mapping method" do
64
+ expected = <<~CODE
65
+ def self.marshaller(closure, return_value, param_values, _invocation_hint, _marshal_data)
66
+ _instance, result = param_values.map(&:get_value_plain)
67
+ _v1 = _instance
68
+ _v2 = result
69
+ wrap(closure.to_ptr).invoke_block(_v1, _v2)
70
+ end
73
71
  CODE
74
72
 
75
- builder.marshaller_definition.must_equal expected
73
+ _(builder.marshaller_definition).must_equal expected
76
74
  end
77
75
  end
78
76
 
79
- describe 'for a signal with a array plus length arguments' do
77
+ describe "for a signal with a array plus length arguments" do
80
78
  let(:signal_info) do
81
- get_signal_introspection_data 'Regress', 'TestObj', 'sig-with-array-len-prop'
82
- end
83
-
84
- it 'returns a valid mapping method' do
85
- skip unless signal_info
86
-
87
- expected = <<-CODE.reset_indentation
88
- def self.marshaller(closure, return_value, param_values, _invocation_hint, _marshal_data)
89
- _instance, arr, len = param_values.map(&:get_value_plain)
90
- _v1 = _instance
91
- _v2 = len
92
- _v3 = GirFFI::SizedArray.wrap(:guint32, _v2, arr)
93
- wrap(closure.to_ptr).invoke_block(_v1, _v3)
94
- end
79
+ get_signal_introspection_data "Regress", "TestObj", "sig-with-array-len-prop"
80
+ end
81
+
82
+ it "returns a valid mapping method" do
83
+ expected = <<~CODE
84
+ def self.marshaller(closure, return_value, param_values, _invocation_hint, _marshal_data)
85
+ _instance, arr, len = param_values.map(&:get_value_plain)
86
+ _v1 = _instance
87
+ _v2 = len
88
+ _v3 = GirFFI::SizedArray.wrap(:guint32, _v2, arr)
89
+ wrap(closure.to_ptr).invoke_block(_v1, _v3)
90
+ end
95
91
  CODE
96
92
 
97
- builder.marshaller_definition.must_equal expected
93
+ _(builder.marshaller_definition).must_equal expected
98
94
  end
99
95
  end
100
96
 
101
- describe 'for a signal with a struct argument' do
97
+ describe "for a signal with a struct argument" do
102
98
  let(:signal_info) do
103
- get_signal_introspection_data 'Regress', 'TestObj', 'test-with-static-scope-arg'
99
+ get_signal_introspection_data "Regress", "TestObj", "test-with-static-scope-arg"
104
100
  end
105
101
 
106
- it 'returns a valid mapping method' do
107
- skip unless signal_info
108
-
109
- expected = <<-CODE.reset_indentation
110
- def self.marshaller(closure, return_value, param_values, _invocation_hint, _marshal_data)
111
- _instance, object = param_values.map(&:get_value_plain)
112
- _v1 = _instance
113
- _v2 = Regress::TestSimpleBoxedA.wrap(object)
114
- wrap(closure.to_ptr).invoke_block(_v1, _v2)
115
- end
102
+ it "returns a valid mapping method" do
103
+ expected = <<~CODE
104
+ def self.marshaller(closure, return_value, param_values, _invocation_hint, _marshal_data)
105
+ _instance, object = param_values.map(&:get_value_plain)
106
+ _v1 = _instance
107
+ _v2 = Regress::TestSimpleBoxedA.wrap(object)
108
+ wrap(closure.to_ptr).invoke_block(_v1, _v2)
109
+ end
116
110
  CODE
117
111
 
118
- builder.marshaller_definition.must_equal expected
112
+ _(builder.marshaller_definition).must_equal expected
119
113
  end
120
114
  end
121
115
 
122
- describe 'for a signal returning an array of integers' do
116
+ describe "for a signal returning an array of integers" do
123
117
  let(:signal_info) do
124
- get_signal_introspection_data 'Regress', 'TestObj', 'sig-with-intarray-ret'
125
- end
118
+ get_signal_introspection_data "Regress", "TestObj", "sig-with-intarray-ret"
119
+ end
120
+
121
+ it "returns a valid mapping method" do
122
+ expected = <<~CODE
123
+ def self.marshaller(closure, return_value, param_values, _invocation_hint, _marshal_data)
124
+ _instance, i = param_values.map(&:get_value_plain)
125
+ _v1 = _instance
126
+ _v2 = i
127
+ _v3 = wrap(closure.to_ptr).invoke_block(_v1, _v2)
128
+ _v4 = GLib::Array.from(:gint32, _v3)
129
+ return_value.set_value _v4
130
+ end
131
+ CODE
126
132
 
127
- it 'returns a valid mapping method' do
128
- skip unless signal_info
133
+ _(builder.marshaller_definition).must_equal expected
134
+ end
135
+ end
129
136
 
130
- expected = <<-CODE.reset_indentation
131
- def self.marshaller(closure, return_value, param_values, _invocation_hint, _marshal_data)
132
- _instance, i = param_values.map(&:get_value_plain)
133
- _v1 = _instance
134
- _v2 = i
135
- _v3 = wrap(closure.to_ptr).invoke_block(_v1, _v2)
136
- _v4 = GLib::Array.from(:gint32, _v3)
137
- return_value.set_value _v4
138
- end
137
+ describe "for a signal returning an string" do
138
+ let(:signal_info) do
139
+ get_signal_introspection_data "Gtk", "Scale", "format-value"
140
+ end
141
+
142
+ it "returns a mapping method that passes the string result to return_value directly" do
143
+ expected = <<~CODE
144
+ def self.marshaller(closure, return_value, param_values, _invocation_hint, _marshal_data)
145
+ _instance, value = param_values.map(&:get_value_plain)
146
+ _v1 = _instance
147
+ _v2 = value
148
+ _v3 = wrap(closure.to_ptr).invoke_block(_v1, _v2)
149
+ return_value.set_value _v3
150
+ end
139
151
  CODE
140
152
 
141
- builder.marshaller_definition.must_equal expected
153
+ _(builder.marshaller_definition).must_equal expected
142
154
  end
143
155
  end
144
156
 
145
- describe 'for a signal returning an string' do
157
+ describe "for a signal with GList argument" do
146
158
  let(:signal_info) do
147
- get_signal_introspection_data 'Gtk', 'Scale', 'format-value'
159
+ get_signal_introspection_data "Regress", "AnnotationObject", "list-signal"
148
160
  end
149
161
 
150
- it 'returns a mapping method that passes the string result to return_value directly' do
151
- skip unless signal_info
152
-
153
- expected = <<-CODE.reset_indentation
154
- def self.marshaller(closure, return_value, param_values, _invocation_hint, _marshal_data)
155
- _instance, value = param_values.map(&:get_value_plain)
156
- _v1 = _instance
157
- _v2 = value
158
- _v3 = wrap(closure.to_ptr).invoke_block(_v1, _v2)
159
- return_value.set_value _v3
160
- end
162
+ it "returns a valid mapping method" do
163
+ expected = <<~CODE
164
+ def self.marshaller(closure, return_value, param_values, _invocation_hint, _marshal_data)
165
+ _instance, list = param_values.map(&:get_value_plain)
166
+ _v1 = _instance
167
+ _v2 = GLib::List.wrap(:utf8, list)
168
+ wrap(closure.to_ptr).invoke_block(_v1, _v2)
169
+ end
161
170
  CODE
162
171
 
163
- builder.marshaller_definition.must_equal expected
172
+ _(builder.marshaller_definition).must_equal expected
164
173
  end
165
174
  end
166
175
 
167
- describe 'for a signal with GList argument' do
176
+ describe "for a signal with GError argument" do
168
177
  let(:signal_info) do
169
- get_signal_introspection_data 'Regress', 'AnnotationObject', 'list-signal'
178
+ get_signal_introspection_data "Regress", "TestObj", "sig-with-gerror"
170
179
  end
171
180
 
172
- it 'returns a valid mapping method' do
173
- skip unless signal_info
181
+ it "returns a valid mapping method" do
182
+ skip_below "1.61.1"
174
183
 
175
- expected = <<-CODE.reset_indentation
176
- def self.marshaller(closure, return_value, param_values, _invocation_hint, _marshal_data)
177
- _instance, list = param_values.map(&:get_value_plain)
178
- _v1 = _instance
179
- _v2 = GLib::List.wrap(:utf8, list)
180
- wrap(closure.to_ptr).invoke_block(_v1, _v2)
181
- end
184
+ expected = <<~CODE
185
+ def self.marshaller(closure, return_value, param_values, _invocation_hint, _marshal_data)
186
+ _instance, error = param_values.map(&:get_value_plain)
187
+ _v1 = _instance
188
+ _v2 = GLib::Error.wrap(error)
189
+ wrap(closure.to_ptr).invoke_block(_v1, _v2)
190
+ end
182
191
  CODE
183
192
 
184
- builder.marshaller_definition.must_equal expected
193
+ _(builder.marshaller_definition).must_equal expected
185
194
  end
186
195
  end
187
196
  end
@@ -1,45 +1,45 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'gir_ffi_test_helper'
3
+ require "gir_ffi_test_helper"
4
4
 
5
5
  describe GirFFI::Builders::StructBuilder do
6
- describe '#layout_specification' do
7
- it 'returns the correct layout for Regress::TestStructA' do
8
- info = get_introspection_data 'Regress', 'TestStructA'
6
+ describe "#layout_specification" do
7
+ it "returns the correct layout for Regress::TestStructA" do
8
+ info = get_introspection_data "Regress", "TestStructA"
9
9
  builder = GirFFI::Builders::StructBuilder.new info
10
- builder.layout_specification.must_equal [:some_int, :int32, 0,
11
- :some_int8, :int8, 4,
12
- :some_double, :double, 8,
13
- :some_enum, Regress::TestEnum, 16]
10
+ _(builder.layout_specification).must_equal [:some_int, :int32, 0,
11
+ :some_int8, :int8, 4,
12
+ :some_double, :double, 8,
13
+ :some_enum, Regress::TestEnum, 16]
14
14
  end
15
15
 
16
- describe 'for a struct with a simple layout' do
16
+ describe "for a struct with a simple layout" do
17
17
  before do
18
18
  @field = Object.new
19
19
 
20
20
  @struct = Object.new
21
- allow(@struct).to receive(:namespace).and_return 'Foo'
22
- allow(@struct).to receive(:safe_name).and_return 'Bar'
21
+ allow(@struct).to receive(:namespace).and_return "Foo"
22
+ allow(@struct).to receive(:safe_name).and_return "Bar"
23
23
  allow(@struct).to receive(:fields).and_return [@field]
24
24
 
25
25
  @builder = GirFFI::Builders::StructBuilder.new @struct
26
26
  end
27
27
 
28
- it 'creates the correct layout specification' do
28
+ it "creates the correct layout specification" do
29
29
  expect(@field).to receive(:layout_specification).and_return [:bar, :int32, 0]
30
30
  spec = @builder.layout_specification
31
31
  assert_equal [:bar, :int32, 0], spec
32
32
  end
33
33
  end
34
34
 
35
- describe 'for a struct with a layout with a complex type' do
36
- it 'does not flatten the complex type specification' do
35
+ describe "for a struct with a layout with a complex type" do
36
+ it "does not flatten the complex type specification" do
37
37
  expect(simplefield = Object.new).to receive(:layout_specification).and_return [:bar, :foo, 0]
38
38
  expect(complexfield = Object.new).to receive(:layout_specification).and_return [:baz, [:qux, 2], 0]
39
39
  expect(struct = Object.new).to receive(:fields).and_return [simplefield, complexfield]
40
40
 
41
- allow(struct).to receive(:safe_name).and_return 'Bar'
42
- allow(struct).to receive(:namespace).and_return 'Foo'
41
+ allow(struct).to receive(:safe_name).and_return "Bar"
42
+ allow(struct).to receive(:namespace).and_return "Foo"
43
43
 
44
44
  builder = GirFFI::Builders::StructBuilder.new struct
45
45
  spec = builder.layout_specification
@@ -48,39 +48,39 @@ describe GirFFI::Builders::StructBuilder do
48
48
  end
49
49
  end
50
50
 
51
- describe '#superclass' do
52
- it 'returns StructBase for a normal struct' do
53
- info = get_introspection_data 'Regress', 'TestStructA'
51
+ describe "#superclass" do
52
+ it "returns StructBase for a normal struct" do
53
+ info = get_introspection_data "Regress", "TestStructA"
54
54
  builder = GirFFI::Builders::StructBuilder.new info
55
- builder.superclass.must_equal GirFFI::StructBase
55
+ _(builder.superclass).must_equal GirFFI::StructBase
56
56
  end
57
57
 
58
- it 'returns BoxedBase for a boxed type' do
59
- info = get_introspection_data 'Regress', 'TestSimpleBoxedB'
58
+ it "returns BoxedBase for a boxed type" do
59
+ info = get_introspection_data "Regress", "TestSimpleBoxedB"
60
60
  builder = GirFFI::Builders::StructBuilder.new info
61
- builder.superclass.must_equal GirFFI::BoxedBase
61
+ _(builder.superclass).must_equal GirFFI::BoxedBase
62
62
  end
63
63
 
64
- it 'returns the GObject parent class for a type class' do
65
- info = get_introspection_data 'GIMarshallingTests', 'SubSubObjectClass'
64
+ it "returns the GObject parent class for a type class" do
65
+ info = get_introspection_data "GIMarshallingTests", "SubSubObjectClass"
66
66
  builder = GirFFI::Builders::StructBuilder.new info
67
- builder.superclass.must_equal GIMarshallingTests::SubObjectClass
67
+ _(builder.superclass).must_equal GIMarshallingTests::SubObjectClass
68
68
  end
69
69
 
70
- it 'returns ObjectClass for InitiallyUnownedClass' do
71
- info = get_introspection_data 'GObject', 'InitiallyUnownedClass'
70
+ it "returns ObjectClass for InitiallyUnownedClass" do
71
+ info = get_introspection_data "GObject", "InitiallyUnownedClass"
72
72
  builder = GirFFI::Builders::StructBuilder.new info
73
- builder.superclass.must_equal GObject::ObjectClass
73
+ _(builder.superclass).must_equal GObject::ObjectClass
74
74
  end
75
75
  end
76
76
 
77
- describe '#setup_class' do
77
+ describe "#setup_class" do
78
78
  before do
79
79
  save_module :Regress
80
80
  end
81
81
 
82
- it 'stubs the structs methods' do
83
- info = get_introspection_data 'Regress', 'TestStructA'
82
+ it "stubs the structs methods" do
83
+ info = get_introspection_data "Regress", "TestStructA"
84
84
  builder = GirFFI::Builders::StructBuilder.new info
85
85
  builder.setup_class
86
86
  assert_defines_instance_method Regress::TestStructA, :clone
@@ -1,35 +1,29 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'gir_ffi_test_helper'
3
+ require "gir_ffi_test_helper"
4
4
 
5
5
  GirFFI.setup :GIMarshallingTests
6
6
 
7
7
  describe GirFFI::Builders::UnintrospectableBoxedBuilder do
8
8
  let(:instance) { GIMarshallingTests::PropertiesObject.new }
9
- let(:property) { instance.object_class.find_property 'some-boxed-glist' }
9
+ let(:property) { instance.object_class.find_property "some-boxed-glist" }
10
10
  let(:gtype) { property.value_type }
11
11
  let(:info) { GirFFI::UnintrospectableBoxedInfo.new(gtype) }
12
12
  let(:bldr) { GirFFI::Builders::UnintrospectableBoxedBuilder.new(info) }
13
13
  let(:boxed_class) { bldr.build_class }
14
14
 
15
- before do
16
- skip unless get_property_introspection_data('GIMarshallingTests',
17
- 'PropertiesObject',
18
- 'some-boxed-glist')
15
+ it "builds a class" do
16
+ _(boxed_class).must_be_instance_of Class
19
17
  end
20
18
 
21
- it 'builds a class' do
22
- boxed_class.must_be_instance_of Class
19
+ it "builds a class derived from GirFFI::BoxedBase" do
20
+ _(boxed_class.superclass).must_equal GirFFI::BoxedBase
23
21
  end
24
22
 
25
- it 'builds a class derived from GirFFI::BoxedBase' do
26
- boxed_class.superclass.must_equal GirFFI::BoxedBase
27
- end
28
-
29
- it 'returns the same class when built again' do
23
+ it "returns the same class when built again" do
30
24
  other_bldr = GirFFI::Builders::UnintrospectableBoxedBuilder.new(info)
31
25
  other_class = other_bldr.build_class
32
26
 
33
- other_class.must_equal boxed_class
27
+ _(other_class).must_equal boxed_class
34
28
  end
35
29
  end