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,6 +1,6 @@
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::BaseArgumentBuilder do
6
6
  end
@@ -1,71 +1,73 @@
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::CallbackArgumentBuilder do
6
6
  let(:var_gen) { GirFFI::VariableNameGenerator.new }
7
7
  let(:builder) { GirFFI::Builders::CallbackArgumentBuilder.new(var_gen, arg_info) }
8
8
 
9
- describe 'for an argument with direction :out' do
10
- describe 'for :zero_terminated' do
9
+ describe "for an argument with direction :out" do
10
+ describe "for :zero_terminated" do
11
11
  let(:vfunc_info) do
12
- get_vfunc_introspection_data('GIMarshallingTests', 'Object',
13
- 'vfunc_array_out_parameter')
12
+ get_vfunc_introspection_data("GIMarshallingTests", "Object",
13
+ "vfunc_array_out_parameter")
14
14
  end
15
15
  let(:arg_info) { vfunc_info.args[0] }
16
16
 
17
- before { skip unless vfunc_info }
18
-
19
- it 'has the correct value for #pre_conversion' do
20
- builder.pre_conversion.must_equal ['_v1 = a']
17
+ it "has the correct value for #pre_conversion" do
18
+ _(builder.pre_conversion).must_equal ["_v1 = a"]
21
19
  end
22
20
 
23
- it 'has the correct value for #post_conversion' do
24
- builder.post_conversion.must_equal ['_v1.put_pointer 0, GirFFI::ZeroTerminated.from(:gfloat, _v2)']
21
+ it "has the correct value for #post_conversion" do
22
+ _(builder.post_conversion)
23
+ .must_equal ["_v1.put_pointer 0, GirFFI::ZeroTerminated.from(:gfloat, _v2)"]
25
24
  end
26
25
  end
27
26
 
28
- describe 'when the argument is allocated by us, the callee' do
27
+ describe "when the argument is allocated by us, the callee" do
29
28
  let(:vfunc_info) do
30
- get_vfunc_introspection_data('GIMarshallingTests', 'Object',
31
- 'method_int8_arg_and_out_callee')
29
+ get_vfunc_introspection_data("GIMarshallingTests", "Object",
30
+ "method_int8_arg_and_out_callee")
32
31
  end
33
32
 
34
33
  let(:arg_info) { vfunc_info.args[1] }
35
34
 
36
- it 'has the correct value for #pre_conversion' do
37
- builder.pre_conversion.must_equal ['_v1 = FFI::MemoryPointer.new(:int8).tap { |ptr| out.put_pointer 0, ptr }']
35
+ it "has the correct value for #pre_conversion" do
36
+ _(builder.pre_conversion)
37
+ .must_equal [
38
+ "_v1 = FFI::MemoryPointer.new(:int8).tap { |ptr| out.put_pointer 0, ptr }"
39
+ ]
38
40
  end
39
41
 
40
- it 'has the correct value for #post_conversion' do
41
- builder.post_conversion.must_equal ['_v1.put_int8 0, _v2']
42
+ it "has the correct value for #post_conversion" do
43
+ _(builder.post_conversion).must_equal ["_v1.put_int8 0, _v2"]
42
44
  end
43
45
  end
44
46
  end
45
47
 
46
- describe 'for an argument with direction :error' do
48
+ describe "for an argument with direction :error" do
47
49
  let(:arg_info) { GirFFI::ErrorArgumentInfo.new }
48
50
 
49
- it 'sets up a rescueing block in #pre_conversion' do
50
- builder.pre_conversion.must_equal [
51
- '_v1 = _error',
52
- 'begin'
51
+ it "sets up a rescueing block in #pre_conversion" do
52
+ _(builder.pre_conversion).must_equal [
53
+ "_v1 = _error",
54
+ "begin"
53
55
  ]
54
56
  end
55
57
 
56
- it 'converts any exceptions to GLib::Error in #post_conversion' do
57
- builder.post_conversion.must_equal [
58
- 'rescue => _v1',
59
- '_v2.put_pointer 0, GLib::Error.from(_v1)',
60
- 'end'
58
+ it "converts any exceptions to GLib::Error in #post_conversion" do
59
+ _(builder.post_conversion).must_equal [
60
+ "rescue => _v1",
61
+ "_v2.put_pointer 0, GLib::Error.from(_v1)",
62
+ "end"
61
63
  ]
62
64
  end
63
65
  end
64
66
 
65
- describe 'for an argument with direction :inout' do
67
+ describe "for an argument with direction :inout" do
66
68
  let(:callback_info) do
67
- get_introspection_data('Regress',
68
- 'TestCallbackArrayInOut')
69
+ get_introspection_data("Regress",
70
+ "TestCallbackArrayInOut")
69
71
  end
70
72
  let(:array_arg_info) { callback_info.args[0] }
71
73
  let(:array_arg_builder) do
@@ -77,52 +79,51 @@ describe GirFFI::Builders::CallbackArgumentBuilder do
77
79
  end
78
80
 
79
81
  before do
80
- skip unless callback_info
81
82
  length_arg_builder.array_arg = array_arg_builder
82
83
  array_arg_builder.length_arg = length_arg_builder
83
84
  end
84
85
 
85
- describe 'for arrays with a length argument' do
86
- it 'provides a call argument name' do
87
- array_arg_builder.call_argument_name.must_equal '_v1'
86
+ describe "for arrays with a length argument" do
87
+ it "provides a call argument name" do
88
+ _(array_arg_builder.call_argument_name).must_equal "_v1"
88
89
  end
89
90
 
90
- it 'provides a capture variable name' do
91
- array_arg_builder.capture_variable_name.must_equal '_v1'
91
+ it "provides a capture variable name" do
92
+ _(array_arg_builder.capture_variable_name).must_equal "_v1"
92
93
  end
93
94
 
94
- it 'has the correct value for #pre_conversion' do
95
- array_arg_builder.pre_conversion.
96
- must_equal ['_v1 = ints',
97
- '_v2 = GirFFI::SizedArray.wrap(:gint32, _v3, _v1.get_pointer(0))']
95
+ it "has the correct value for #pre_conversion" do
96
+ _(array_arg_builder.pre_conversion)
97
+ .must_equal ["_v1 = ints",
98
+ "_v2 = GirFFI::SizedArray.wrap(:gint32, _v3, _v1.get_pointer(0))"]
98
99
  end
99
100
 
100
- it 'has the correct value for #post_conversion' do
101
+ it "has the correct value for #post_conversion" do
101
102
  array_arg_builder.pre_conversion
102
- array_arg_builder.post_conversion.
103
- must_equal ['_v1.put_pointer 0, GirFFI::SizedArray.from(:gint32, -1, _v4)']
103
+ _(array_arg_builder.post_conversion)
104
+ .must_equal ["_v1.put_pointer 0, GirFFI::SizedArray.from(:gint32, -1, _v4)"]
104
105
  end
105
106
  end
106
107
 
107
- describe 'for an array length argument' do
108
- it 'does not provide a call argument name' do
109
- length_arg_builder.call_argument_name.must_be_nil
108
+ describe "for an array length argument" do
109
+ it "does not provide a call argument name" do
110
+ _(length_arg_builder.call_argument_name).must_be_nil
110
111
  end
111
112
 
112
- it 'does not provide a capture variable name' do
113
- length_arg_builder.capture_variable_name.must_be_nil
113
+ it "does not provide a capture variable name" do
114
+ _(length_arg_builder.capture_variable_name).must_be_nil
114
115
  end
115
116
 
116
- it 'has the correct value for #pre_conversion' do
117
- length_arg_builder.pre_conversion.
118
- must_equal ['_v1 = length',
119
- '_v2 = _v1.get_int32(0)']
117
+ it "has the correct value for #pre_conversion" do
118
+ _(length_arg_builder.pre_conversion)
119
+ .must_equal ["_v1 = length",
120
+ "_v2 = _v1.get_int32(0)"]
120
121
  end
121
122
 
122
- it 'has the correct value for #post_conversion' do
123
+ it "has the correct value for #post_conversion" do
123
124
  length_arg_builder.pre_conversion
124
- length_arg_builder.post_conversion.
125
- must_equal ['_v1.put_int32 0, _v3.length']
125
+ _(length_arg_builder.post_conversion)
126
+ .must_equal ["_v1.put_int32 0, _v3.length"]
126
127
  end
127
128
  end
128
129
  end
@@ -1,117 +1,116 @@
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::CallbackBuilder do
6
6
  let(:builder) { GirFFI::Builders::CallbackBuilder.new callback_info }
7
7
 
8
- describe '#mapping_method_definition' do
9
- describe 'for a callback with arguments and return value' do
10
- let(:callback_info) { get_introspection_data 'Regress', 'TestCallbackFull' }
11
- it 'returns a valid mapping method' do
12
- expected = <<-CODE.reset_indentation
13
- def self.call_with_argument_mapping(_proc, foo, bar, path)
14
- _v1 = foo
15
- _v2 = bar
16
- _v3 = path.to_utf8
17
- _v4 = _proc.call(_v1, _v2, _v3)
18
- return _v4
19
- end
8
+ describe "#mapping_method_definition" do
9
+ describe "for a callback with arguments and return value" do
10
+ let(:callback_info) { get_introspection_data "Regress", "TestCallbackFull" }
11
+ it "returns a valid mapping method" do
12
+ expected = <<~CODE
13
+ def self.call_with_argument_mapping(_proc, foo, bar, path)
14
+ _v1 = foo
15
+ _v2 = bar
16
+ _v3 = path.to_utf8
17
+ _v4 = _proc.call(_v1, _v2, _v3)
18
+ return _v4
19
+ end
20
20
  CODE
21
21
 
22
- builder.mapping_method_definition.must_equal expected
22
+ _(builder.mapping_method_definition).must_equal expected
23
23
  end
24
24
  end
25
25
 
26
- describe 'for a callback with no arguments or return value' do
27
- let(:callback_info) { get_introspection_data 'Regress', 'TestSimpleCallback' }
28
- it 'returns a valid mapping method' do
29
- expected = <<-CODE.reset_indentation
30
- def self.call_with_argument_mapping(_proc)
31
- _proc.call()
32
- end
26
+ describe "for a callback with no arguments or return value" do
27
+ let(:callback_info) { get_introspection_data "Regress", "TestSimpleCallback" }
28
+ it "returns a valid mapping method" do
29
+ expected = <<~CODE
30
+ def self.call_with_argument_mapping(_proc)
31
+ _proc.call()
32
+ end
33
33
  CODE
34
34
 
35
- builder.mapping_method_definition.must_equal expected
35
+ _(builder.mapping_method_definition).must_equal expected
36
36
  end
37
37
  end
38
38
 
39
- describe 'for a callback with a closure argument' do
40
- let(:callback_info) { get_introspection_data 'Regress', 'TestCallbackUserData' }
41
- it 'returns a valid mapping method' do
42
- expected = <<-CODE.reset_indentation
43
- def self.call_with_argument_mapping(_proc, user_data)
44
- _v1 = GirFFI::ArgHelper::OBJECT_STORE.fetch(user_data)
45
- _v2 = _proc.call(_v1)
46
- return _v2
47
- end
39
+ describe "for a callback with a closure argument" do
40
+ let(:callback_info) { get_introspection_data "Regress", "TestCallbackUserData" }
41
+ it "returns a valid mapping method" do
42
+ expected = <<~CODE
43
+ def self.call_with_argument_mapping(_proc, user_data)
44
+ _v1 = GirFFI::ArgHelper::OBJECT_STORE.fetch(user_data)
45
+ _v2 = _proc.call(_v1)
46
+ return _v2
47
+ end
48
48
  CODE
49
49
 
50
- builder.mapping_method_definition.must_equal expected
50
+ _(builder.mapping_method_definition).must_equal expected
51
51
  end
52
52
  end
53
53
 
54
- describe 'for a callback with one out argument' do
54
+ describe "for a callback with one out argument" do
55
55
  let(:callback_info) do
56
- get_introspection_data('GIMarshallingTests',
57
- 'CallbackOneOutParameter')
56
+ get_introspection_data("GIMarshallingTests",
57
+ "CallbackOneOutParameter")
58
58
  end
59
- it 'returns a valid mapping method' do
60
- expected = <<-CODE.reset_indentation
61
- def self.call_with_argument_mapping(_proc, a)
62
- _v1 = a
63
- _v2 = _proc.call()
64
- _v1.put_float 0, _v2
65
- end
59
+ it "returns a valid mapping method" do
60
+ expected = <<~CODE
61
+ def self.call_with_argument_mapping(_proc, a)
62
+ _v1 = a
63
+ _v2 = _proc.call()
64
+ _v1.put_float 0, _v2
65
+ end
66
66
  CODE
67
67
 
68
- builder.mapping_method_definition.must_equal expected
68
+ _(builder.mapping_method_definition).must_equal expected
69
69
  end
70
70
  end
71
71
 
72
- describe 'for a callback with an inout array argument' do
72
+ describe "for a callback with an inout array argument" do
73
73
  let(:callback_info) do
74
- get_introspection_data('Regress',
75
- 'TestCallbackArrayInOut')
74
+ get_introspection_data("Regress",
75
+ "TestCallbackArrayInOut")
76
76
  end
77
- it 'returns a valid mapping method' do
78
- skip unless callback_info
79
- expected = <<-CODE.reset_indentation
80
- def self.call_with_argument_mapping(_proc, ints, length)
81
- _v1 = length
82
- _v2 = _v1.get_int32(0)
83
- _v3 = ints
84
- _v4 = GirFFI::SizedArray.wrap(:gint32, _v2, _v3.get_pointer(0))
85
- _v5 = _proc.call(_v4)
86
- _v1.put_int32 0, _v5.length
87
- _v3.put_pointer 0, GirFFI::SizedArray.from(:gint32, -1, _v5)
88
- end
77
+ it "returns a valid mapping method" do
78
+ expected = <<~CODE
79
+ def self.call_with_argument_mapping(_proc, ints, length)
80
+ _v1 = length
81
+ _v2 = _v1.get_int32(0)
82
+ _v3 = ints
83
+ _v4 = GirFFI::SizedArray.wrap(:gint32, _v2, _v3.get_pointer(0))
84
+ _v5 = _proc.call(_v4)
85
+ _v1.put_int32 0, _v5.length
86
+ _v3.put_pointer 0, GirFFI::SizedArray.from(:gint32, -1, _v5)
87
+ end
89
88
  CODE
90
89
 
91
- builder.mapping_method_definition.must_equal expected
90
+ _(builder.mapping_method_definition).must_equal expected
92
91
  end
93
92
  end
94
93
 
95
- describe 'for a callback with a value in argument' do
94
+ describe "for a callback with a value in argument" do
96
95
  let(:field_info) do
97
- get_field_introspection_data('GObject',
98
- 'ObjectClass', 'get_property')
96
+ get_field_introspection_data("GObject",
97
+ "ObjectClass", "get_property")
99
98
  end
100
99
  let(:callback_info) do
101
100
  field_info.field_type.interface
102
101
  end
103
- it 'returns a valid mapping method' do
104
- expected = <<-CODE.reset_indentation
105
- def self.call_with_argument_mapping(_proc, object, property_id, value, pspec)
106
- _v1 = GObject::Object.wrap(object)
107
- _v2 = property_id
108
- _v3 = GObject::Value.wrap(value)
109
- _v4 = GObject::ParamSpec.wrap(pspec)
110
- _proc.call(_v1, _v2, _v3, _v4)
111
- end
102
+ it "returns a valid mapping method" do
103
+ expected = <<~CODE
104
+ def self.call_with_argument_mapping(_proc, object, property_id, value, pspec)
105
+ _v1 = GObject::Object.wrap(object)
106
+ _v2 = property_id
107
+ _v3 = GObject::Value.wrap(value)
108
+ _v4 = GObject::ParamSpec.wrap(pspec)
109
+ _proc.call(_v1, _v2, _v3, _v4)
110
+ end
112
111
  CODE
113
112
 
114
- builder.mapping_method_definition.must_equal expected
113
+ _(builder.mapping_method_definition).must_equal expected
115
114
  end
116
115
  end
117
116
  end
@@ -1,10 +1,12 @@
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::CallbackReturnValueBuilder do
6
6
  let(:var_gen) { GirFFI::VariableNameGenerator.new }
7
- let(:return_value_info) { GirFFI::ReturnValueInfo.new(type_info, ownership_transfer, false) }
7
+ let(:return_value_info) do
8
+ GirFFI::ReturnValueInfo.new(type_info, ownership_transfer, false)
9
+ end
8
10
  let(:type_info) { callback_info.return_type }
9
11
  let(:ownership_transfer) { callback_info.caller_owns }
10
12
  let(:builder) do
@@ -12,74 +14,71 @@ describe GirFFI::Builders::CallbackReturnValueBuilder do
12
14
  return_value_info)
13
15
  end
14
16
 
15
- before do
16
- skip unless callback_info
17
- end
18
-
19
- describe 'for :gint32' do
20
- let(:callback_info) { get_introspection_data('GIMarshallingTests', 'CallbackIntInt') }
17
+ describe "for :gint32" do
18
+ let(:callback_info) { get_introspection_data("GIMarshallingTests", "CallbackIntInt") }
21
19
 
22
- it 'has no statements in #post_conversion' do
23
- builder.post_conversion.must_equal []
20
+ it "has no statements in #post_conversion" do
21
+ _(builder.post_conversion).must_equal []
24
22
  end
25
23
 
26
- it 'returns the result of the callback directly' do
27
- builder.capture_variable_name.must_equal '_v1'
28
- builder.return_value_name.must_equal '_v1'
24
+ it "returns the result of the callback directly" do
25
+ _(builder.capture_variable_name).must_equal "_v1"
26
+ _(builder.return_value_name).must_equal "_v1"
29
27
  end
30
28
  end
31
29
 
32
- describe 'for :void' do
30
+ describe "for :void" do
33
31
  let(:callback_info) do
34
- get_introspection_data('GIMarshallingTests',
35
- 'CallbackMultipleOutParameters')
32
+ get_introspection_data("GIMarshallingTests",
33
+ "CallbackMultipleOutParameters")
36
34
  end
37
35
 
38
- it 'has no statements in #post_conversion' do
39
- builder.post_conversion.must_equal []
36
+ it "has no statements in #post_conversion" do
37
+ _(builder.post_conversion).must_equal []
40
38
  end
41
39
 
42
- it 'returns nothing' do
43
- builder.capture_variable_name.must_be_nil
44
- builder.return_value_name.must_be_nil
40
+ it "returns nothing" do
41
+ _(builder.capture_variable_name).must_be_nil
42
+ _(builder.return_value_name).must_be_nil
45
43
  end
46
44
  end
47
45
 
48
- describe 'for :enum' do
46
+ describe "for :enum" do
49
47
  let(:callback_info) do
50
- get_vfunc_introspection_data('GIMarshallingTests',
51
- 'Object',
52
- 'vfunc_return_enum')
48
+ get_vfunc_introspection_data("GIMarshallingTests",
49
+ "Object",
50
+ "vfunc_return_enum")
53
51
  end
54
52
 
55
- it 'converts the result' do
53
+ it "converts the result" do
56
54
  # Ensure variable names are generated in order
57
- builder.capture_variable_name.must_equal '_v1'
58
- builder.post_conversion.must_equal ['_v2 = GIMarshallingTests::Enum.to_int(_v1)']
55
+ _(builder.capture_variable_name).must_equal "_v1"
56
+ _(builder.post_conversion).must_equal ["_v2 = GIMarshallingTests::Enum.to_int(_v1)"]
59
57
  end
60
58
 
61
- it 'returns the result of the conversion' do
62
- builder.capture_variable_name.must_equal '_v1'
63
- builder.return_value_name.must_equal '_v2'
59
+ it "returns the result of the conversion" do
60
+ _(builder.capture_variable_name).must_equal "_v1"
61
+ _(builder.return_value_name).must_equal "_v2"
64
62
  end
65
63
  end
66
64
 
67
- describe 'for :object with full transfer' do
65
+ describe "for :object with full transfer" do
68
66
  let(:callback_info) do
69
- get_vfunc_introspection_data('GIMarshallingTests',
70
- 'Object',
71
- 'vfunc_return_object_transfer_full')
67
+ get_vfunc_introspection_data("GIMarshallingTests",
68
+ "Object",
69
+ "vfunc_return_object_transfer_full")
72
70
  end
73
71
 
74
- it 'increases the refcount of the result and converts it to a pointer' do
72
+ it "increases the refcount of the result and converts it to a pointer" do
75
73
  # Ensure variable names are generated in order
76
- builder.capture_variable_name.must_equal '_v1'
77
- builder.post_conversion.must_equal ['_v1.ref', '_v2 = GObject::Object.from(_v1).to_ptr']
74
+ _(builder.capture_variable_name).must_equal "_v1"
75
+ _(builder.post_conversion)
76
+ .must_equal ["_v1.ref", "_v2 = GObject::Object.from(_v1).to_ptr"]
78
77
  end
79
78
 
80
- it 'returns the result of the conversion' do
81
- builder.capture_variable_name.must_equal '_v1'
82
- builder.return_value_name.must_equal '_v2'
79
+ it "returns the result of the conversion" do
80
+ _(builder.capture_variable_name).must_equal "_v1"
81
+ _(builder.return_value_name).must_equal "_v2"
83
82
  end
84
83
  end
85
84
  end