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.
Files changed (265) hide show
  1. checksums.yaml +4 -4
  2. data/Changelog.md +45 -0
  3. data/Gemfile +6 -4
  4. data/README.md +11 -10
  5. data/Rakefile +5 -5
  6. data/lib/ffi-glib.rb +16 -16
  7. data/lib/ffi-glib/array.rb +14 -4
  8. data/lib/ffi-glib/byte_array.rb +7 -2
  9. data/lib/ffi-glib/container_class_methods.rb +1 -1
  10. data/lib/ffi-glib/error.rb +1 -1
  11. data/lib/ffi-glib/hash_table.rb +3 -3
  12. data/lib/ffi-glib/list.rb +1 -1
  13. data/lib/ffi-glib/list_methods.rb +1 -1
  14. data/lib/ffi-glib/main_loop.rb +3 -3
  15. data/lib/ffi-glib/ptr_array.rb +30 -8
  16. data/lib/ffi-glib/s_list.rb +1 -1
  17. data/lib/ffi-glib/variant.rb +1 -1
  18. data/lib/ffi-gobject.rb +13 -13
  19. data/lib/ffi-gobject/object.rb +23 -32
  20. data/lib/ffi-gobject/param_spec.rb +1 -1
  21. data/lib/ffi-gobject/ruby_closure.rb +2 -2
  22. data/lib/ffi-gobject/value.rb +40 -29
  23. data/lib/ffi-gobject_introspection.rb +20 -20
  24. data/lib/ffi-gobject_introspection/gobject_type_init.rb +2 -2
  25. data/lib/ffi-gobject_introspection/i_arg_info.rb +2 -2
  26. data/lib/ffi-gobject_introspection/i_base_info.rb +27 -17
  27. data/lib/ffi-gobject_introspection/i_callable_info.rb +4 -4
  28. data/lib/ffi-gobject_introspection/i_constant_info.rb +2 -2
  29. data/lib/ffi-gobject_introspection/i_enum_info.rb +1 -0
  30. data/lib/ffi-gobject_introspection/i_field_info.rb +1 -1
  31. data/lib/ffi-gobject_introspection/i_function_info.rb +1 -1
  32. data/lib/ffi-gobject_introspection/i_interface_info.rb +1 -1
  33. data/lib/ffi-gobject_introspection/i_object_info.rb +2 -2
  34. data/lib/ffi-gobject_introspection/i_property_info.rb +2 -2
  35. data/lib/ffi-gobject_introspection/i_repository.rb +9 -6
  36. data/lib/ffi-gobject_introspection/i_struct_info.rb +2 -1
  37. data/lib/ffi-gobject_introspection/i_type_info.rb +13 -7
  38. data/lib/ffi-gobject_introspection/i_unresolved_info.rb +1 -1
  39. data/lib/ffi-gobject_introspection/i_vfunc_info.rb +1 -1
  40. data/lib/ffi-gobject_introspection/lib.rb +30 -19
  41. data/lib/ffi-gobject_introspection/strv.rb +1 -1
  42. data/lib/gir_ffi-base.rb +1 -1
  43. data/lib/gir_ffi-base/gobject.rb +26 -25
  44. data/lib/gir_ffi-base/gobject/lib.rb +3 -2
  45. data/lib/gir_ffi.rb +3 -3
  46. data/lib/gir_ffi/allocation_helper.rb +1 -1
  47. data/lib/gir_ffi/arg_helper.rb +4 -4
  48. data/lib/gir_ffi/{in_out_pointer.rb → array_element_convertor.rb} +16 -23
  49. data/lib/gir_ffi/boolean.rb +1 -1
  50. data/lib/gir_ffi/boxed_base.rb +1 -1
  51. data/lib/gir_ffi/builder.rb +18 -10
  52. data/lib/gir_ffi/builder_helper.rb +6 -1
  53. data/lib/gir_ffi/builders/argument_builder.rb +19 -19
  54. data/lib/gir_ffi/builders/argument_builder_collection.rb +2 -2
  55. data/lib/gir_ffi/builders/base_argument_builder.rb +1 -0
  56. data/lib/gir_ffi/builders/base_method_builder.rb +7 -7
  57. data/lib/gir_ffi/builders/base_return_value_builder.rb +1 -1
  58. data/lib/gir_ffi/builders/base_type_builder.rb +1 -1
  59. data/lib/gir_ffi/builders/c_to_ruby_convertor.rb +5 -5
  60. data/lib/gir_ffi/builders/callback_argument_builder.rb +8 -8
  61. data/lib/gir_ffi/builders/callback_builder.rb +16 -4
  62. data/lib/gir_ffi/builders/callback_return_value_builder.rb +2 -2
  63. data/lib/gir_ffi/builders/closure_argument_builder.rb +1 -1
  64. data/lib/gir_ffi/builders/closure_return_value_builder.rb +1 -1
  65. data/lib/gir_ffi/builders/constant_builder.rb +1 -1
  66. data/lib/gir_ffi/builders/constructor_builder.rb +9 -9
  67. data/lib/gir_ffi/builders/enum_builder.rb +16 -3
  68. data/lib/gir_ffi/builders/field_builder.rb +20 -18
  69. data/lib/gir_ffi/builders/flags_builder.rb +2 -2
  70. data/lib/gir_ffi/builders/full_c_to_ruby_convertor.rb +1 -1
  71. data/lib/gir_ffi/builders/function_builder.rb +11 -5
  72. data/lib/gir_ffi/builders/initializer_builder.rb +3 -3
  73. data/lib/gir_ffi/builders/initializer_return_value_builder.rb +2 -2
  74. data/lib/gir_ffi/builders/interface_builder.rb +2 -2
  75. data/lib/gir_ffi/builders/mapping_method_builder.rb +9 -9
  76. data/lib/gir_ffi/builders/marshalling_method_builder.rb +7 -7
  77. data/lib/gir_ffi/builders/method_template.rb +1 -1
  78. data/lib/gir_ffi/builders/module_builder.rb +7 -7
  79. data/lib/gir_ffi/builders/object_builder.rb +6 -6
  80. data/lib/gir_ffi/builders/property_argument_builder.rb +1 -1
  81. data/lib/gir_ffi/builders/property_builder.rb +13 -12
  82. data/lib/gir_ffi/builders/property_return_value_builder.rb +1 -1
  83. data/lib/gir_ffi/builders/registered_type_builder.rb +14 -5
  84. data/lib/gir_ffi/builders/return_value_builder.rb +4 -4
  85. data/lib/gir_ffi/builders/ruby_to_c_convertor.rb +6 -6
  86. data/lib/gir_ffi/builders/signal_closure_builder.rb +2 -2
  87. data/lib/gir_ffi/builders/struct_builder.rb +6 -4
  88. data/lib/gir_ffi/builders/struct_like.rb +1 -1
  89. data/lib/gir_ffi/builders/type_builder.rb +12 -12
  90. data/lib/gir_ffi/builders/unintrospectable_boxed_builder.rb +2 -2
  91. data/lib/gir_ffi/builders/unintrospectable_builder.rb +2 -2
  92. data/lib/gir_ffi/builders/union_builder.rb +4 -4
  93. data/lib/gir_ffi/builders/user_defined_builder.rb +2 -2
  94. data/lib/gir_ffi/builders/vfunc_argument_builder.rb +1 -1
  95. data/lib/gir_ffi/builders/vfunc_builder.rb +8 -8
  96. data/lib/gir_ffi/builders/with_layout.rb +2 -2
  97. data/lib/gir_ffi/callback_base.rb +4 -6
  98. data/lib/gir_ffi/class_base.rb +6 -5
  99. data/lib/gir_ffi/core.rb +19 -20
  100. data/lib/gir_ffi/enum_base.rb +1 -1
  101. data/lib/gir_ffi/enum_like_base.rb +2 -2
  102. data/lib/gir_ffi/error_argument_info.rb +2 -2
  103. data/lib/gir_ffi/error_type_info.rb +1 -1
  104. data/lib/gir_ffi/ffi_ext.rb +1 -1
  105. data/lib/gir_ffi/ffi_ext/pointer.rb +1 -1
  106. data/lib/gir_ffi/flags_base.rb +1 -1
  107. data/lib/gir_ffi/in_pointer.rb +10 -0
  108. data/lib/gir_ffi/info_ext.rb +15 -14
  109. data/lib/gir_ffi/info_ext/full_type_name.rb +3 -3
  110. data/lib/gir_ffi/info_ext/i_arg_info.rb +1 -1
  111. data/lib/gir_ffi/info_ext/i_callable_info.rb +1 -1
  112. data/lib/gir_ffi/info_ext/i_callback_info.rb +1 -1
  113. data/lib/gir_ffi/info_ext/i_field_info.rb +1 -1
  114. data/lib/gir_ffi/info_ext/i_function_info.rb +1 -1
  115. data/lib/gir_ffi/info_ext/i_property_info.rb +2 -2
  116. data/lib/gir_ffi/info_ext/i_registered_type_info.rb +4 -5
  117. data/lib/gir_ffi/info_ext/i_signal_info.rb +7 -3
  118. data/lib/gir_ffi/info_ext/i_type_info.rb +48 -26
  119. data/lib/gir_ffi/info_ext/i_unresolved_info.rb +1 -1
  120. data/lib/gir_ffi/info_ext/i_value_info.rb +25 -0
  121. data/lib/gir_ffi/info_ext/i_vfunc_info.rb +2 -2
  122. data/lib/gir_ffi/info_ext/safe_constant_name.rb +8 -8
  123. data/lib/gir_ffi/info_ext/safe_function_name.rb +2 -2
  124. data/lib/gir_ffi/interface_base.rb +3 -3
  125. data/lib/gir_ffi/lib_c.rb +1 -1
  126. data/lib/gir_ffi/method_stubber.rb +1 -1
  127. data/lib/gir_ffi/module_base.rb +1 -1
  128. data/lib/gir_ffi/object_base.rb +3 -4
  129. data/lib/gir_ffi/receiver_argument_info.rb +1 -1
  130. data/lib/gir_ffi/receiver_type_info.rb +2 -2
  131. data/lib/gir_ffi/registered_type_base.rb +1 -1
  132. data/lib/gir_ffi/sized_array.rb +4 -2
  133. data/lib/gir_ffi/struct.rb +1 -1
  134. data/lib/gir_ffi/struct_base.rb +1 -1
  135. data/lib/gir_ffi/type_map.rb +2 -23
  136. data/lib/gir_ffi/unintrospectable_boxed_info.rb +2 -2
  137. data/lib/gir_ffi/unintrospectable_type_info.rb +5 -1
  138. data/lib/gir_ffi/union.rb +1 -1
  139. data/lib/gir_ffi/union_base.rb +1 -1
  140. data/lib/gir_ffi/user_defined_object_info.rb +6 -2
  141. data/lib/gir_ffi/user_defined_property_info.rb +33 -33
  142. data/lib/gir_ffi/version.rb +1 -1
  143. data/tasks/test.rake +3 -2
  144. data/test/base_test_helper.rb +16 -9
  145. data/test/ffi-glib/array_test.rb +71 -56
  146. data/test/ffi-glib/byte_array_test.rb +13 -7
  147. data/test/ffi-glib/bytes_test.rb +24 -19
  148. data/test/ffi-glib/closure_test.rb +11 -11
  149. data/test/ffi-glib/destroy_notify_test.rb +6 -6
  150. data/test/ffi-glib/hash_table_test.rb +27 -27
  151. data/test/ffi-glib/list_test.rb +22 -22
  152. data/test/ffi-glib/main_loop_test.rb +12 -12
  153. data/test/ffi-glib/ptr_array_test.rb +39 -39
  154. data/test/ffi-glib/ruby_closure_test.rb +10 -10
  155. data/test/ffi-glib/s_list_test.rb +20 -20
  156. data/test/ffi-glib/strv_test.rb +19 -19
  157. data/test/ffi-glib/variant_test.rb +5 -5
  158. data/test/ffi-gobject/gobject_test.rb +48 -44
  159. data/test/ffi-gobject/object_class_test.rb +8 -8
  160. data/test/ffi-gobject/object_test.rb +51 -68
  161. data/test/ffi-gobject/param_spec_test.rb +12 -12
  162. data/test/ffi-gobject/value_test.rb +145 -125
  163. data/test/ffi-gobject_introspection/gobject_type_init_test.rb +9 -9
  164. data/test/ffi-gobject_introspection/i_base_info_test.rb +15 -16
  165. data/test/ffi-gobject_introspection/i_constant_info_test.rb +9 -13
  166. data/test/ffi-gobject_introspection/i_enum_info_test.rb +7 -7
  167. data/test/ffi-gobject_introspection/i_function_info_test.rb +1 -1
  168. data/test/ffi-gobject_introspection/i_interface_info_test.rb +10 -10
  169. data/test/ffi-gobject_introspection/i_object_info_test.rb +23 -23
  170. data/test/ffi-gobject_introspection/i_property_info_test.rb +19 -19
  171. data/test/ffi-gobject_introspection/i_registered_type_info_test.rb +10 -10
  172. data/test/ffi-gobject_introspection/i_repository_test.rb +34 -34
  173. data/test/ffi-gobject_introspection/i_struct_info_test.rb +10 -10
  174. data/test/ffi-gobject_introspection/i_type_info_test.rb +12 -15
  175. data/test/ffi-gobject_introspection/i_union_info_test.rb +7 -7
  176. data/test/ffi-gobject_introspection/i_vfunc_info_test.rb +16 -16
  177. data/test/ffi-gobject_introspection/lib_test.rb +3 -3
  178. data/test/ffi-gobject_introspection/strv_test.rb +9 -9
  179. data/test/ffi-gobject_test.rb +47 -45
  180. data/test/gir_ffi/allocation_helper_test.rb +13 -13
  181. data/test/gir_ffi/arg_helper_test.rb +71 -65
  182. data/test/gir_ffi/boolean_test.rb +20 -20
  183. data/test/gir_ffi/boxed_base_test.rb +18 -18
  184. data/test/gir_ffi/builder_test.rb +81 -213
  185. data/test/gir_ffi/builders/argument_builder_test.rb +321 -287
  186. data/test/gir_ffi/builders/base_argument_builder_test.rb +1 -1
  187. data/test/gir_ffi/builders/callback_argument_builder_test.rb +57 -56
  188. data/test/gir_ffi/builders/callback_builder_test.rb +71 -72
  189. data/test/gir_ffi/builders/callback_return_value_builder_test.rb +40 -41
  190. data/test/gir_ffi/builders/constant_builder_test.rb +1 -1
  191. data/test/gir_ffi/builders/constructor_builder_test.rb +12 -10
  192. data/test/gir_ffi/builders/enum_builder_test.rb +12 -11
  193. data/test/gir_ffi/builders/field_builder_test.rb +48 -42
  194. data/test/gir_ffi/builders/function_builder_test.rb +256 -224
  195. data/test/gir_ffi/builders/initializer_builder_test.rb +16 -14
  196. data/test/gir_ffi/builders/interface_builder_test.rb +9 -9
  197. data/test/gir_ffi/builders/module_builder_test.rb +18 -18
  198. data/test/gir_ffi/builders/object_builder_test.rb +41 -41
  199. data/test/gir_ffi/builders/property_builder_test.rb +94 -94
  200. data/test/gir_ffi/builders/registered_type_builder_test.rb +35 -11
  201. data/test/gir_ffi/builders/return_value_builder_test.rb +227 -223
  202. data/test/gir_ffi/builders/signal_closure_builder_test.rb +124 -113
  203. data/test/gir_ffi/builders/struct_builder_test.rb +38 -35
  204. data/test/gir_ffi/builders/unintrospectable_boxed_builder_test.rb +8 -14
  205. data/test/gir_ffi/builders/unintrospectable_builder_test.rb +34 -23
  206. data/test/gir_ffi/builders/union_builder_test.rb +12 -15
  207. data/test/gir_ffi/builders/user_defined_builder_test.rb +152 -148
  208. data/test/gir_ffi/builders/vfunc_argument_builder_test.rb +46 -40
  209. data/test/gir_ffi/builders/vfunc_builder_test.rb +149 -157
  210. data/test/gir_ffi/callback_base_test.rb +9 -9
  211. data/test/gir_ffi/class_base_test.rb +56 -53
  212. data/test/gir_ffi/core_test.rb +36 -35
  213. data/test/gir_ffi/enum_base_test.rb +19 -19
  214. data/test/gir_ffi/error_type_info_test.rb +23 -23
  215. data/test/gir_ffi/ffi_ext/pointer_test.rb +9 -7
  216. data/test/gir_ffi/g_type_test.rb +11 -11
  217. data/test/gir_ffi/in_pointer_test.rb +70 -50
  218. data/test/gir_ffi/info_ext/i_callable_info_test.rb +5 -5
  219. data/test/gir_ffi/info_ext/i_callback_info_test.rb +6 -5
  220. data/test/gir_ffi/info_ext/i_field_info_test.rb +6 -6
  221. data/test/gir_ffi/info_ext/i_function_info_test.rb +17 -17
  222. data/test/gir_ffi/info_ext/i_signal_info_test.rb +8 -8
  223. data/test/gir_ffi/info_ext/i_type_info_test.rb +231 -216
  224. data/test/gir_ffi/info_ext/i_unresolved_info_test.rb +4 -4
  225. data/test/gir_ffi/info_ext/safe_constant_name_test.rb +8 -8
  226. data/test/gir_ffi/info_ext/safe_function_name_test.rb +8 -8
  227. data/test/gir_ffi/interface_base_test.rb +8 -8
  228. data/test/gir_ffi/method_stubber_test.rb +21 -19
  229. data/test/gir_ffi/object_base_test.rb +23 -23
  230. data/test/gir_ffi/object_store_test.rb +13 -13
  231. data/test/gir_ffi/receiver_argument_info_test.rb +15 -15
  232. data/test/gir_ffi/sized_array_test.rb +68 -68
  233. data/test/gir_ffi/struct_base_test.rb +8 -8
  234. data/test/gir_ffi/struct_like_base_test.rb +64 -64
  235. data/test/gir_ffi/type_map_test.rb +8 -8
  236. data/test/gir_ffi/unintrospectable_type_info_test.rb +33 -33
  237. data/test/gir_ffi/union_base_test.rb +8 -8
  238. data/test/gir_ffi/user_defined_object_info_test.rb +34 -34
  239. data/test/gir_ffi/user_defined_property_info_test.rb +16 -16
  240. data/test/gir_ffi/variable_name_generator_test.rb +8 -8
  241. data/test/gir_ffi/version_test.rb +4 -4
  242. data/test/gir_ffi/zero_terminated_test.rb +34 -34
  243. data/test/gir_ffi_test_helper.rb +3 -3
  244. data/test/integration/callback_exceptions_test.rb +17 -21
  245. data/test/integration/derived_classes_test.rb +14 -13
  246. data/test/integration/generated_everything_test.rb +225 -224
  247. data/test/integration/generated_gimarshallingtests_test.rb +1174 -1060
  248. data/test/integration/generated_gio_test.rb +36 -36
  249. data/test/integration/generated_glib_test.rb +4 -6
  250. data/test/integration/generated_gobject_test.rb +43 -35
  251. data/test/integration/generated_gst_test.rb +20 -16
  252. data/test/integration/generated_gtk_source_test.rb +9 -15
  253. data/test/integration/generated_gtop_test.rb +8 -15
  254. data/test/integration/generated_pango_ft2_test.rb +2 -2
  255. data/test/integration/generated_pango_test.rb +4 -4
  256. data/test/integration/generated_regress_test.rb +1858 -1632
  257. data/test/integration/generated_secret_test.rb +8 -11
  258. data/test/integration/generated_utility_test.rb +81 -81
  259. data/test/integration/generated_warnlib_test.rb +17 -21
  260. data/test/integration/method_lookup_test.rb +6 -6
  261. data/test/introspection_test_helper.rb +49 -7
  262. data/test/minitest/stats_plugin.rb +1 -1
  263. metadata +21 -23
  264. data/lib/ffi-glib/array_methods.rb +0 -16
  265. data/test/gir_ffi/in_out_pointer_test.rb +0 -56
@@ -1,101 +1,107 @@
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::VFuncArgumentBuilder do
6
6
  let(:var_gen) { GirFFI::VariableNameGenerator.new }
7
7
  let(:builder) { GirFFI::Builders::VFuncArgumentBuilder.new(var_gen, arg_info) }
8
8
 
9
- describe 'for a plain in argument' do
9
+ describe "for a plain in argument" do
10
10
  let(:vfunc_info) do
11
- get_vfunc_introspection_data 'GIMarshallingTests', 'Object', 'method_int8_in'
11
+ get_vfunc_introspection_data "GIMarshallingTests", "Object", "method_int8_in"
12
12
  end
13
13
  let(:arg_info) { vfunc_info.args[0] }
14
14
 
15
- it 'has the correct value for #pre_conversion' do
16
- builder.pre_conversion.must_equal ['_v1 = in_']
15
+ it "has the correct value for #pre_conversion" do
16
+ _(builder.pre_conversion).must_equal ["_v1 = in_"]
17
17
  end
18
18
 
19
- it 'has the correct value for #post_conversion' do
20
- builder.post_conversion.must_equal []
19
+ it "has the correct value for #post_conversion" do
20
+ _(builder.post_conversion).must_equal []
21
21
  end
22
22
  end
23
23
 
24
- describe 'for a transfer-none in argument' do
24
+ describe "for a transfer-none in argument" do
25
25
  let(:vfunc_info) do
26
- get_vfunc_introspection_data 'GIMarshallingTests', 'Object', 'vfunc_in_object_transfer_none'
26
+ get_vfunc_introspection_data "GIMarshallingTests", "Object",
27
+ "vfunc_in_object_transfer_none"
27
28
  end
28
29
  let(:arg_info) { vfunc_info.args[0] }
29
30
 
30
- it 'has the correct value for #pre_conversion' do
31
- builder.pre_conversion.must_equal ['_v1 = GObject::Object.wrap(object)', '_v1.ref']
31
+ it "has the correct value for #pre_conversion" do
32
+ _(builder.pre_conversion).must_equal ["_v1 = GObject::Object.wrap(object)", "_v1.ref"]
32
33
  end
33
34
 
34
- it 'has the correct value for #post_conversion' do
35
- builder.post_conversion.must_equal []
35
+ it "has the correct value for #post_conversion" do
36
+ _(builder.post_conversion).must_equal []
36
37
  end
37
38
  end
38
39
 
39
- describe 'for a transfer-none outgoing object argument' do
40
+ describe "for a transfer-none outgoing object argument" do
40
41
  let(:vfunc_info) do
41
- get_vfunc_introspection_data 'GIMarshallingTests', 'Object', 'vfunc_out_object_transfer_none'
42
+ get_vfunc_introspection_data "GIMarshallingTests", "Object",
43
+ "vfunc_out_object_transfer_none"
42
44
  end
43
45
  let(:arg_info) { vfunc_info.args[0] }
44
46
 
45
- it 'has the correct value for #pre_conversion' do
46
- builder.pre_conversion.must_equal ['_v1 = object']
47
+ it "has the correct value for #pre_conversion" do
48
+ _(builder.pre_conversion).must_equal ["_v1 = object"]
47
49
  end
48
50
 
49
- it 'has the correct value for #post_conversion' do
50
- builder.post_conversion.must_equal ['_v1.put_pointer 0, GObject::Object.from(_v2)']
51
+ it "has the correct value for #post_conversion" do
52
+ _(builder.post_conversion).must_equal ["_v1.put_pointer 0, GObject::Object.from(_v2)"]
51
53
  end
52
54
  end
53
55
 
54
- describe 'for a full-transfer outgoing object argument' do
56
+ describe "for a full-transfer outgoing object argument" do
55
57
  let(:vfunc_info) do
56
- get_vfunc_introspection_data 'GIMarshallingTests', 'Object', 'vfunc_out_object_transfer_full'
58
+ get_vfunc_introspection_data "GIMarshallingTests", "Object",
59
+ "vfunc_out_object_transfer_full"
57
60
  end
58
61
  let(:arg_info) { vfunc_info.args[0] }
59
62
 
60
- it 'has the correct value for #pre_conversion' do
61
- builder.pre_conversion.must_equal ['_v1 = object']
63
+ it "has the correct value for #pre_conversion" do
64
+ _(builder.pre_conversion).must_equal ["_v1 = object"]
62
65
  end
63
66
 
64
- it 'has the correct value for #post_conversion' do
67
+ it "has the correct value for #post_conversion" do
65
68
  builder.pre_conversion
66
- builder.post_conversion.must_equal ['_v2.ref', '_v1.put_pointer 0, GObject::Object.from(_v2)']
69
+ _(builder.post_conversion)
70
+ .must_equal ["_v2.ref", "_v1.put_pointer 0, GObject::Object.from(_v2)"]
67
71
  end
68
72
  end
69
73
 
70
- describe 'for a full-transfer outgoing non-object argument' do
74
+ describe "for a full-transfer outgoing non-object argument" do
71
75
  let(:vfunc_info) do
72
- get_vfunc_introspection_data('GIMarshallingTests', 'Object',
73
- 'method_int8_arg_and_out_callee')
76
+ get_vfunc_introspection_data("GIMarshallingTests", "Object",
77
+ "method_int8_arg_and_out_callee")
74
78
  end
75
79
  let(:arg_info) { vfunc_info.args[1] }
76
80
 
77
- it 'has the correct value for #pre_conversion' do
78
- builder.pre_conversion.
79
- must_equal ['_v1 = FFI::MemoryPointer.new(:int8).tap { |ptr| out.put_pointer 0, ptr }']
81
+ it "has the correct value for #pre_conversion" do
82
+ _(builder.pre_conversion)
83
+ .must_equal [
84
+ "_v1 = FFI::MemoryPointer.new(:int8).tap { |ptr| out.put_pointer 0, ptr }"
85
+ ]
80
86
  end
81
87
 
82
- it 'has the correct value for #post_conversion' do
83
- builder.post_conversion.must_equal ['_v1.put_int8 0, _v2']
88
+ it "has the correct value for #post_conversion" do
89
+ _(builder.post_conversion).must_equal ["_v1.put_int8 0, _v2"]
84
90
  end
85
91
  end
86
92
 
87
- describe 'for a receiver argument' do
88
- let(:object_info) { get_introspection_data('GIMarshallingTests', 'Object') }
93
+ describe "for a receiver argument" do
94
+ let(:object_info) { get_introspection_data("GIMarshallingTests", "Object") }
89
95
  let(:type_info) { GirFFI::ReceiverTypeInfo.new(object_info) }
90
96
  let(:arg_info) { GirFFI::ReceiverArgumentInfo.new(type_info) }
91
97
 
92
- it 'has the correct value for #pre_conversion' do
93
- builder.pre_conversion.
94
- must_equal ['_v1 = GIMarshallingTests::Object.wrap(_instance)']
98
+ it "has the correct value for #pre_conversion" do
99
+ _(builder.pre_conversion)
100
+ .must_equal ["_v1 = GIMarshallingTests::Object.wrap(_instance)"]
95
101
  end
96
102
 
97
- it 'has the correct value for #post_conversion' do
98
- builder.post_conversion.must_equal []
103
+ it "has the correct value for #post_conversion" do
104
+ _(builder.post_conversion).must_equal []
99
105
  end
100
106
  end
101
107
  end
@@ -1,252 +1,244 @@
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::VFuncBuilder do
6
6
  let(:builder) { GirFFI::Builders::VFuncBuilder.new vfunc_info }
7
7
 
8
- describe '#mapping_method_definition' do
8
+ describe "#mapping_method_definition" do
9
9
  let(:result) { builder.mapping_method_definition }
10
10
 
11
- before do
12
- skip unless vfunc_info
13
- end
14
-
15
- describe 'for a vfunc with only one argument' do
11
+ describe "for a vfunc with only one argument" do
16
12
  let(:vfunc_info) do
17
- get_vfunc_introspection_data 'GIMarshallingTests', 'Object', 'method_int8_in'
13
+ get_vfunc_introspection_data "GIMarshallingTests", "Object", "method_int8_in"
18
14
  end
19
15
 
20
- it 'returns a valid mapping method including receiver' do
21
- expected = <<-CODE.reset_indentation
22
- def self.call_with_argument_mapping(_proc, _instance, in_)
23
- _v1 = GIMarshallingTests::Object.wrap(_instance)
24
- _v2 = in_
25
- _proc.call(_v1, _v2)
26
- end
16
+ it "returns a valid mapping method including receiver" do
17
+ expected = <<~CODE
18
+ def self.call_with_argument_mapping(_proc, _instance, in_)
19
+ _v1 = GIMarshallingTests::Object.wrap(_instance)
20
+ _v2 = in_
21
+ _proc.call(_v1, _v2)
22
+ end
27
23
  CODE
28
24
 
29
- result.must_equal expected
25
+ _(result).must_equal expected
30
26
  end
31
27
  end
32
28
 
33
- describe 'for a vfunc returning an enum' do
29
+ describe "for a vfunc returning an enum" do
34
30
  let(:vfunc_info) do
35
- get_vfunc_introspection_data 'GIMarshallingTests', 'Object', 'vfunc_return_enum'
31
+ get_vfunc_introspection_data "GIMarshallingTests", "Object", "vfunc_return_enum"
36
32
  end
37
33
 
38
- it 'returns a valid mapping method including receiver' do
39
- expected = <<-CODE.reset_indentation
40
- def self.call_with_argument_mapping(_proc, _instance)
41
- _v1 = GIMarshallingTests::Object.wrap(_instance)
42
- _v2 = _proc.call(_v1)
43
- _v3 = GIMarshallingTests::Enum.to_int(_v2)
44
- return _v3
45
- end
34
+ it "returns a valid mapping method including receiver" do
35
+ expected = <<~CODE
36
+ def self.call_with_argument_mapping(_proc, _instance)
37
+ _v1 = GIMarshallingTests::Object.wrap(_instance)
38
+ _v2 = _proc.call(_v1)
39
+ _v3 = GIMarshallingTests::Enum.to_int(_v2)
40
+ return _v3
41
+ end
46
42
  CODE
47
43
 
48
- result.must_equal expected
44
+ _(result).must_equal expected
49
45
  end
50
46
  end
51
47
 
52
- describe 'for a vfunc with a callback argument' do
48
+ describe "for a vfunc with a callback argument" do
53
49
  let(:vfunc_info) do
54
- get_vfunc_introspection_data 'GIMarshallingTests', 'Object', 'vfunc_with_callback'
50
+ get_vfunc_introspection_data "GIMarshallingTests", "Object", "vfunc_with_callback"
55
51
  end
56
52
 
57
- it 'returns a valid mapping method including receiver' do
58
- expected = <<-CODE.reset_indentation
59
- def self.call_with_argument_mapping(_proc, _instance, callback, callback_data)
60
- _v1 = GIMarshallingTests::Object.wrap(_instance)
61
- _v2 = GIMarshallingTests::CallbackIntInt.wrap(callback)
62
- _v3 = GirFFI::ArgHelper::OBJECT_STORE.fetch(callback_data)
63
- _proc.call(_v1, _v2, _v3)
64
- end
53
+ it "returns a valid mapping method including receiver" do
54
+ expected = <<~CODE
55
+ def self.call_with_argument_mapping(_proc, _instance, callback, callback_data)
56
+ _v1 = GIMarshallingTests::Object.wrap(_instance)
57
+ _v2 = GIMarshallingTests::CallbackIntInt.wrap(callback)
58
+ _v3 = GirFFI::ArgHelper::OBJECT_STORE.fetch(callback_data)
59
+ _proc.call(_v1, _v2, _v3)
60
+ end
65
61
  CODE
66
62
 
67
- result.must_equal expected
63
+ _(result).must_equal expected
68
64
  end
69
65
  end
70
66
 
71
- describe 'for a vfunc with an out argument allocated by them, the caller' do
67
+ describe "for a vfunc with an out argument allocated by them, the caller" do
72
68
  let(:vfunc_info) do
73
- get_vfunc_introspection_data('GIMarshallingTests', 'Object',
74
- 'method_int8_arg_and_out_caller')
75
- end
76
-
77
- it 'returns a valid mapping method including receiver' do
78
- expected = <<-CODE.reset_indentation
79
- def self.call_with_argument_mapping(_proc, _instance, arg, out)
80
- _v1 = GIMarshallingTests::Object.wrap(_instance)
81
- _v2 = arg
82
- _v3 = out
83
- _v4 = _proc.call(_v1, _v2)
84
- _v3.put_int8 0, _v4
85
- end
69
+ get_vfunc_introspection_data("GIMarshallingTests", "Object",
70
+ "method_int8_arg_and_out_caller")
71
+ end
72
+
73
+ it "returns a valid mapping method including receiver" do
74
+ expected = <<~CODE
75
+ def self.call_with_argument_mapping(_proc, _instance, arg, out)
76
+ _v1 = GIMarshallingTests::Object.wrap(_instance)
77
+ _v2 = arg
78
+ _v3 = out
79
+ _v4 = _proc.call(_v1, _v2)
80
+ _v3.put_int8 0, _v4
81
+ end
86
82
  CODE
87
83
 
88
- result.must_equal expected
84
+ _(result).must_equal expected
89
85
  end
90
86
  end
91
87
 
92
- describe 'for a vfunc with an out argument allocated by us, the callee' do
88
+ describe "for a vfunc with an out argument allocated by the callee" do
93
89
  let(:vfunc_info) do
94
- get_vfunc_introspection_data('GIMarshallingTests', 'Object',
95
- 'method_int8_arg_and_out_callee')
96
- end
97
-
98
- it 'returns a valid mapping method including receiver' do
99
- expected = <<-CODE.reset_indentation
100
- def self.call_with_argument_mapping(_proc, _instance, arg, out)
101
- _v1 = GIMarshallingTests::Object.wrap(_instance)
102
- _v2 = arg
103
- _v3 = FFI::MemoryPointer.new(:int8).tap { |ptr| out.put_pointer 0, ptr }
104
- _v4 = _proc.call(_v1, _v2)
105
- _v3.put_int8 0, _v4
106
- end
90
+ get_vfunc_introspection_data("GIMarshallingTests", "Object",
91
+ "method_int8_arg_and_out_callee")
92
+ end
93
+
94
+ it "returns a valid mapping method including receiver" do
95
+ expected = <<~CODE
96
+ def self.call_with_argument_mapping(_proc, _instance, arg, out)
97
+ _v1 = GIMarshallingTests::Object.wrap(_instance)
98
+ _v2 = arg
99
+ _v3 = FFI::MemoryPointer.new(:int8).tap { |ptr| out.put_pointer 0, ptr }
100
+ _v4 = _proc.call(_v1, _v2)
101
+ _v3.put_int8 0, _v4
102
+ end
107
103
  CODE
108
104
 
109
- result.must_equal expected
105
+ _(result).must_equal expected
110
106
  end
111
107
  end
112
108
 
113
- describe 'for a vfunc with a GObject::Value out argument allocated by them, the caller' do
109
+ describe "for a vfunc with a GObject::Value out argument allocated by the caller" do
114
110
  let(:vfunc_info) do
115
- get_vfunc_introspection_data('GIMarshallingTests', 'Object',
116
- 'vfunc_caller_allocated_out_parameter')
117
- end
118
-
119
- it 'returns a valid mapping method including receiver' do
120
- expected = <<-CODE.reset_indentation
121
- def self.call_with_argument_mapping(_proc, _instance, a)
122
- _v1 = GIMarshallingTests::Object.wrap(_instance)
123
- _v2 = a
124
- _v3 = _proc.call(_v1)
125
- GObject::Value.copy_value_to_pointer(GObject::Value.from(_v3), _v2)
126
- end
111
+ get_vfunc_introspection_data("GIMarshallingTests", "Object",
112
+ "vfunc_caller_allocated_out_parameter")
113
+ end
114
+
115
+ it "returns a valid mapping method including receiver" do
116
+ expected = <<~CODE
117
+ def self.call_with_argument_mapping(_proc, _instance, a)
118
+ _v1 = GIMarshallingTests::Object.wrap(_instance)
119
+ _v2 = a
120
+ _v3 = _proc.call(_v1)
121
+ GObject::Value.copy_value_to_pointer(GObject::Value.from(_v3), _v2)
122
+ end
127
123
  CODE
128
124
 
129
- result.must_equal expected
125
+ _(result).must_equal expected
130
126
  end
131
127
  end
132
128
 
133
- describe 'for a vfunc with an error argument' do
129
+ describe "for a vfunc with an error argument" do
134
130
  let(:vfunc_info) do
135
- get_vfunc_introspection_data('GIMarshallingTests', 'Object',
136
- 'vfunc_meth_with_err')
137
- end
138
-
139
- it 'returns a valid mapping method including receiver' do
140
- expected = <<-CODE.reset_indentation
141
- def self.call_with_argument_mapping(_proc, _instance, x, _error)
142
- _v1 = GIMarshallingTests::Object.wrap(_instance)
143
- _v2 = x
144
- _v3 = _error
145
- begin
146
- _v4 = _proc.call(_v1, _v2)
147
- rescue => _v5
148
- _v3.put_pointer 0, GLib::Error.from(_v5)
131
+ get_vfunc_introspection_data("GIMarshallingTests", "Object",
132
+ "vfunc_meth_with_err")
133
+ end
134
+
135
+ it "returns a valid mapping method including receiver" do
136
+ expected = <<~CODE
137
+ def self.call_with_argument_mapping(_proc, _instance, x, _error)
138
+ _v1 = GIMarshallingTests::Object.wrap(_instance)
139
+ _v2 = x
140
+ _v3 = _error
141
+ begin
142
+ _v4 = _proc.call(_v1, _v2)
143
+ rescue => _v5
144
+ _v3.put_pointer 0, GLib::Error.from(_v5)
145
+ end
146
+ return _v4
149
147
  end
150
- return _v4
151
- end
152
148
  CODE
153
149
 
154
- result.must_equal expected
150
+ _(result).must_equal expected
155
151
  end
156
152
  end
157
153
 
158
- describe 'for a vfunc with a full-transfer return value' do
154
+ describe "for a vfunc with a full-transfer return value" do
159
155
  let(:vfunc_info) do
160
- get_vfunc_introspection_data 'GIMarshallingTests', 'Object', 'vfunc_return_object_transfer_full'
161
- end
162
-
163
- it 'returns a valid mapping method' do
164
- expected = <<-CODE.reset_indentation
165
- def self.call_with_argument_mapping(_proc, _instance)
166
- _v1 = GIMarshallingTests::Object.wrap(_instance)
167
- _v2 = _proc.call(_v1)
168
- _v2.ref
169
- _v3 = GObject::Object.from(_v2).to_ptr
170
- return _v3
171
- end
156
+ get_vfunc_introspection_data "GIMarshallingTests", "Object",
157
+ "vfunc_return_object_transfer_full"
158
+ end
159
+
160
+ it "returns a valid mapping method" do
161
+ expected = <<~CODE
162
+ def self.call_with_argument_mapping(_proc, _instance)
163
+ _v1 = GIMarshallingTests::Object.wrap(_instance)
164
+ _v2 = _proc.call(_v1)
165
+ _v2.ref
166
+ _v3 = GObject::Object.from(_v2).to_ptr
167
+ return _v3
168
+ end
172
169
  CODE
173
170
 
174
- result.must_equal expected
171
+ _(result).must_equal expected
175
172
  end
176
173
  end
177
174
 
178
- describe 'for a vfunc with a transfer-none in argument' do
175
+ describe "for a vfunc with a transfer-none in argument" do
179
176
  let(:vfunc_info) do
180
- get_vfunc_introspection_data 'GIMarshallingTests', 'Object', 'vfunc_in_object_transfer_none'
177
+ get_vfunc_introspection_data "GIMarshallingTests", "Object",
178
+ "vfunc_in_object_transfer_none"
181
179
  end
182
180
 
183
- it 'returns a valid mapping method' do
184
- expected = <<-CODE.reset_indentation
185
- def self.call_with_argument_mapping(_proc, _instance, object)
186
- _v1 = GIMarshallingTests::Object.wrap(_instance)
187
- _v2 = GObject::Object.wrap(object)
188
- _v2.ref
189
- _proc.call(_v1, _v2)
190
- end
181
+ it "returns a valid mapping method" do
182
+ expected = <<~CODE
183
+ def self.call_with_argument_mapping(_proc, _instance, object)
184
+ _v1 = GIMarshallingTests::Object.wrap(_instance)
185
+ _v2 = GObject::Object.wrap(object)
186
+ _v2.ref
187
+ _proc.call(_v1, _v2)
188
+ end
191
189
  CODE
192
190
 
193
- result.must_equal expected
191
+ _(result).must_equal expected
194
192
  end
195
193
  end
196
194
 
197
- describe 'for a vfunc with a full-transfer outgoing argument' do
195
+ describe "for a vfunc with a full-transfer outgoing argument" do
198
196
  let(:vfunc_info) do
199
- get_vfunc_introspection_data 'GIMarshallingTests', 'Object', 'vfunc_out_object_transfer_full'
200
- end
201
-
202
- it 'returns a valid mapping method' do
203
- expected = <<-CODE.reset_indentation
204
- def self.call_with_argument_mapping(_proc, _instance, object)
205
- _v1 = GIMarshallingTests::Object.wrap(_instance)
206
- _v2 = object
207
- _v3 = _proc.call(_v1)
208
- _v3.ref
209
- _v2.put_pointer 0, GObject::Object.from(_v3)
210
- end
197
+ get_vfunc_introspection_data "GIMarshallingTests", "Object",
198
+ "vfunc_out_object_transfer_full"
199
+ end
200
+
201
+ it "returns a valid mapping method" do
202
+ expected = <<~CODE
203
+ def self.call_with_argument_mapping(_proc, _instance, object)
204
+ _v1 = GIMarshallingTests::Object.wrap(_instance)
205
+ _v2 = object
206
+ _v3 = _proc.call(_v1)
207
+ _v3.ref
208
+ _v2.put_pointer 0, GObject::Object.from(_v3)
209
+ end
211
210
  CODE
212
211
 
213
- result.must_equal expected
212
+ _(result).must_equal expected
214
213
  end
215
214
  end
216
215
  end
217
216
 
218
- describe '#argument_ffi_types' do
217
+ describe "#argument_ffi_types" do
219
218
  let(:result) { builder.argument_ffi_types }
220
219
 
221
- before do
222
- skip unless vfunc_info
223
- end
224
-
225
- describe 'for a vfunc with only one argument' do
220
+ describe "for a vfunc with only one argument" do
226
221
  let(:vfunc_info) do
227
- get_vfunc_introspection_data 'GIMarshallingTests', 'Object', 'method_int8_in'
222
+ get_vfunc_introspection_data "GIMarshallingTests", "Object", "method_int8_in"
228
223
  end
229
224
 
230
- it 'returns the correct FFI types including :pointer for the receiver' do
231
- result.must_equal [:pointer, :int8]
225
+ it "returns the correct FFI types including :pointer for the receiver" do
226
+ _(result).must_equal [:pointer, :int8]
232
227
  end
233
228
  end
234
229
  end
235
230
 
236
- describe '#return_ffi_type' do
231
+ describe "#return_ffi_type" do
237
232
  let(:result) { builder.return_ffi_type }
238
233
 
239
- before do
240
- skip unless vfunc_info
241
- end
242
-
243
- describe 'for a vfunc returning an object' do
234
+ describe "for a vfunc returning an object" do
244
235
  let(:vfunc_info) do
245
- get_vfunc_introspection_data 'GIMarshallingTests', 'Object', 'vfunc_return_object_transfer_full'
236
+ get_vfunc_introspection_data "GIMarshallingTests", "Object",
237
+ "vfunc_return_object_transfer_full"
246
238
  end
247
239
 
248
- it 'returns :pointer' do
249
- result.must_equal :pointer
240
+ it "returns :pointer" do
241
+ _(result).must_equal :pointer
250
242
  end
251
243
  end
252
244
  end