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,140 +1,146 @@
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::ArgHelper do
6
- describe '.cast_from_pointer' do
7
- it 'handles class types' do
6
+ describe ".cast_from_pointer" do
7
+ it "handles class types" do
8
8
  klass = Class.new
9
9
  expect(klass).to receive(:wrap).with(:pointer_value).and_return :wrapped_value
10
- GirFFI::ArgHelper.cast_from_pointer(klass, :pointer_value).must_equal :wrapped_value
10
+ _(GirFFI::ArgHelper.cast_from_pointer(klass, :pointer_value))
11
+ .must_equal :wrapped_value
11
12
  end
12
13
 
13
- describe 'for :gint8' do
14
- it 'handles negative :gint8' do
14
+ describe "for :gint8" do
15
+ it "handles negative :gint8" do
15
16
  ptr = FFI::Pointer.new(-127)
16
- GirFFI::ArgHelper.cast_from_pointer(:gint8, ptr).must_equal(-127)
17
+ _(GirFFI::ArgHelper.cast_from_pointer(:gint8, ptr)).must_equal(-127)
17
18
  end
18
19
 
19
- it 'handles positive :gint8' do
20
+ it "handles positive :gint8" do
20
21
  ptr = FFI::Pointer.new(128)
21
- GirFFI::ArgHelper.cast_from_pointer(:gint8, ptr).must_equal(128)
22
+ _(GirFFI::ArgHelper.cast_from_pointer(:gint8, ptr)).must_equal(128)
22
23
  end
23
24
  end
24
25
 
25
- it 'handles :guint32' do
26
+ it "handles :guint32" do
26
27
  ptr = FFI::Pointer.new(0xffffffff)
27
- GirFFI::ArgHelper.cast_from_pointer(:guint32, ptr).must_equal(0xffffffff)
28
+ _(GirFFI::ArgHelper.cast_from_pointer(:guint32, ptr)).must_equal(0xffffffff)
28
29
  end
29
30
 
30
- describe 'for :gint32' do
31
- it 'handles positive :gint32' do
31
+ describe "for :gint32" do
32
+ it "handles positive :gint32" do
32
33
  ptr = FFI::Pointer.new(1)
33
- GirFFI::ArgHelper.cast_from_pointer(:gint32, ptr).must_equal(1)
34
+ _(GirFFI::ArgHelper.cast_from_pointer(:gint32, ptr)).must_equal(1)
34
35
  end
35
36
 
36
- it 'handles negative :gint32' do
37
+ it "handles negative :gint32" do
37
38
  ptr = FFI::Pointer.new(0xffffffff)
38
- GirFFI::ArgHelper.cast_from_pointer(:gint32, ptr).must_equal(-1)
39
+ _(GirFFI::ArgHelper.cast_from_pointer(:gint32, ptr)).must_equal(-1)
39
40
  end
40
41
 
41
- it 'handles largest negative :gint32' do
42
+ it "handles largest negative :gint32" do
42
43
  ptr = FFI::Pointer.new(0x80000000)
43
- GirFFI::ArgHelper.cast_from_pointer(:gint32, ptr).must_equal(-0x80000000)
44
+ _(GirFFI::ArgHelper.cast_from_pointer(:gint32, ptr)).must_equal(-0x80000000)
44
45
  end
45
46
 
46
- it 'handles largest positive :gint32' do
47
+ it "handles largest positive :gint32" do
47
48
  ptr = FFI::Pointer.new(0x7fffffff)
48
- GirFFI::ArgHelper.cast_from_pointer(:gint32, ptr).must_equal(0x7fffffff)
49
+ _(GirFFI::ArgHelper.cast_from_pointer(:gint32, ptr)).must_equal(0x7fffffff)
49
50
  end
50
51
  end
51
52
 
52
- it 'handles :utf8' do
53
- ptr = FFI::MemoryPointer.from_string 'foo'
54
- GirFFI::ArgHelper.cast_from_pointer(:utf8, ptr).must_equal 'foo'
53
+ it "handles :utf8" do
54
+ ptr = FFI::MemoryPointer.from_string "foo"
55
+ _(GirFFI::ArgHelper.cast_from_pointer(:utf8, ptr)).must_equal "foo"
55
56
  end
56
57
 
57
- it 'handles :filename' do
58
- ptr = FFI::MemoryPointer.from_string 'foo'
59
- GirFFI::ArgHelper.cast_from_pointer(:filename, ptr).must_equal 'foo'
58
+ it "handles :filename" do
59
+ ptr = FFI::MemoryPointer.from_string "foo"
60
+ _(GirFFI::ArgHelper.cast_from_pointer(:filename, ptr)).must_equal "foo"
60
61
  end
61
62
 
62
- it 'handles GHashTable' do
63
- hash = GLib::HashTable.from [:utf8, :gint32], 'foo' => 1, 'bar' => 2
63
+ it "handles GHashTable" do
64
+ hash = GLib::HashTable.from [:utf8, :gint32], "foo" => 1, "bar" => 2
64
65
  ptr = hash.to_ptr
65
- result = GirFFI::ArgHelper.cast_from_pointer([:pointer, [:ghash, :utf8, :gint32]], ptr)
66
- result.to_hash.must_equal hash.to_hash
66
+ result = GirFFI::ArgHelper.cast_from_pointer([:pointer, [:ghash, :utf8, :gint32]],
67
+ ptr)
68
+ _(result.to_hash).must_equal hash.to_hash
67
69
  end
68
70
 
69
- describe 'when passing a broken typespec' do
70
- it 'raises on unknown symbol' do
71
+ describe "when passing a broken typespec" do
72
+ it "raises on unknown symbol" do
71
73
  ptr = FFI::Pointer.new(0xffffffff)
72
- exception = -> { GirFFI::ArgHelper.cast_from_pointer(:foo, ptr) }.must_raise RuntimeError
73
- exception.message.must_equal "Don't know how to cast foo"
74
+ exception = _(-> { GirFFI::ArgHelper.cast_from_pointer(:foo, ptr) })
75
+ .must_raise RuntimeError
76
+ _(exception.message).must_equal "Don't know how to cast foo"
74
77
  end
75
78
 
76
- it 'raises on unexpected main type for complex type' do
79
+ it "raises on unexpected main type for complex type" do
77
80
  ptr = FFI::Pointer.new(0xffffffff)
78
- exception = -> { GirFFI::ArgHelper.cast_from_pointer([:utf8], ptr) }.must_raise RuntimeError
79
- exception.message.must_equal "Don't know how to cast [:utf8]"
81
+ exception = _(-> { GirFFI::ArgHelper.cast_from_pointer([:utf8], ptr) })
82
+ .must_raise RuntimeError
83
+ _(exception.message).must_equal "Don't know how to cast [:utf8]"
80
84
  end
81
85
 
82
- it 'raises on unexpected sub type for complex type' do
86
+ it "raises on unexpected sub type for complex type" do
83
87
  ptr = FFI::Pointer.new(0xffffffff)
84
- exception = -> { GirFFI::ArgHelper.cast_from_pointer([:pointer, :utf8], ptr) }.must_raise RuntimeError
85
- exception.message.must_equal "Don't know how to cast [:pointer, :utf8]"
88
+ exception = _(-> { GirFFI::ArgHelper.cast_from_pointer([:pointer, :utf8], ptr) })
89
+ .must_raise RuntimeError
90
+ _(exception.message).must_equal "Don't know how to cast [:pointer, :utf8]"
86
91
  end
87
92
 
88
- it 'raises on unexpected container type for complex type' do
93
+ it "raises on unexpected container type for complex type" do
89
94
  ptr = FFI::Pointer.new(0xffffffff)
90
- exception = -> { GirFFI::ArgHelper.cast_from_pointer([:pointer, [:gint32]], ptr) }.must_raise RuntimeError
91
- exception.message.must_equal "Don't know how to cast [:pointer, [:gint32]]"
95
+ exception =
96
+ _(-> { GirFFI::ArgHelper.cast_from_pointer([:pointer, [:gint32]], ptr) })
97
+ .must_raise RuntimeError
98
+ _(exception.message).must_equal "Don't know how to cast [:pointer, [:gint32]]"
92
99
  end
93
100
  end
94
101
  end
95
102
 
96
- describe '.store' do
97
- describe 'when called with nil' do
98
- it 'returns a null pointer' do
99
- GirFFI::ArgHelper.store(nil).must_be :null?
103
+ describe ".store" do
104
+ describe "when called with nil" do
105
+ it "returns a null pointer" do
106
+ _(GirFFI::ArgHelper.store(nil)).must_be :null?
100
107
  end
101
108
  end
102
109
 
103
- describe 'when called with a string' do
104
- it 'stores the string in GirFFI::ArgHelper::OBJECT_STORE' do
105
- str = 'Foo'
110
+ describe "when called with a string" do
111
+ it "stores the string in GirFFI::ArgHelper::OBJECT_STORE" do
112
+ str = "Foo"
106
113
  ptr = GirFFI::ArgHelper.store(str)
107
114
  result = GirFFI::ArgHelper::OBJECT_STORE.fetch(ptr)
108
- result.must_equal str
115
+ _(result).must_equal str
109
116
  end
110
117
  end
111
118
  end
112
119
 
113
- describe '.check_fixed_array_size' do
114
- it 'passes if array has the correct size' do
115
- GirFFI::ArgHelper.check_fixed_array_size(3, [1, 2, 3], 'foo')
120
+ describe ".check_fixed_array_size" do
121
+ it "passes if array has the correct size" do
122
+ GirFFI::ArgHelper.check_fixed_array_size(3, [1, 2, 3], "foo")
116
123
  pass
117
124
  end
118
125
 
119
- it 'raises if array does not have the correct size' do
120
- result = lambda do
121
- GirFFI::ArgHelper.check_fixed_array_size(3, [1, 2], 'foo')
122
- end.must_raise ArgumentError
123
- result.message.must_equal 'foo should have size 3'
126
+ it "raises if array does not have the correct size" do
127
+ result = _(-> { GirFFI::ArgHelper.check_fixed_array_size(3, [1, 2], "foo") })
128
+ .must_raise ArgumentError
129
+ _(result.message).must_equal "foo should have size 3"
124
130
  end
125
131
  end
126
132
 
127
- describe '.check_error' do
128
- it 'does nothing if there is no error' do
129
- err_ptr = double('err_ptr', read_pointer: nil)
133
+ describe ".check_error" do
134
+ it "does nothing if there is no error" do
135
+ err_ptr = double("err_ptr", read_pointer: nil)
130
136
  GirFFI::ArgHelper.check_error err_ptr
131
137
  pass
132
138
  end
133
139
 
134
- it 'raises an exception if there is an error' do
140
+ it "raises an exception if there is an error" do
135
141
  err = GLib::Error.new
136
- err_ptr = double('err_ptr', read_pointer: err.to_ptr)
137
- -> { GirFFI::ArgHelper.check_error err_ptr }.must_raise GirFFI::GLibError
142
+ err_ptr = double("err_ptr", read_pointer: err.to_ptr)
143
+ _(-> { GirFFI::ArgHelper.check_error err_ptr }).must_raise GirFFI::GLibError
138
144
  end
139
145
  end
140
146
  end
@@ -1,43 +1,43 @@
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::Boolean do
6
- it 'has the same native size as an int' do
7
- FFI.type_size(GirFFI::Boolean).must_equal FFI.type_size :int
6
+ it "has the same native size as an int" do
7
+ _(FFI.type_size(GirFFI::Boolean)).must_equal FFI.type_size :int
8
8
  end
9
9
 
10
- describe '.from_native' do
11
- it 'converts 0 to false' do
12
- GirFFI::Boolean.from_native(0, 'whatever').must_equal false
10
+ describe ".from_native" do
11
+ it "converts 0 to false" do
12
+ _(GirFFI::Boolean.from_native(0, "whatever")).must_equal false
13
13
  end
14
14
 
15
- it 'converts 1 to true' do
16
- GirFFI::Boolean.from_native(1, 'whatever').must_equal true
15
+ it "converts 1 to true" do
16
+ _(GirFFI::Boolean.from_native(1, "whatever")).must_equal true
17
17
  end
18
18
  end
19
19
 
20
- describe '.to_native' do
21
- it 'converts false to 0' do
22
- GirFFI::Boolean.to_native(false, 'whatever').must_equal 0
20
+ describe ".to_native" do
21
+ it "converts false to 0" do
22
+ _(GirFFI::Boolean.to_native(false, "whatever")).must_equal 0
23
23
  end
24
24
 
25
- it 'converts true to 1' do
26
- GirFFI::Boolean.to_native(true, 'whatever').must_equal 1
25
+ it "converts true to 1" do
26
+ _(GirFFI::Boolean.to_native(true, "whatever")).must_equal 1
27
27
  end
28
28
 
29
- it 'converts nil to 0' do
30
- GirFFI::Boolean.to_native(nil, 'whatever').must_equal 0
29
+ it "converts nil to 0" do
30
+ _(GirFFI::Boolean.to_native(nil, "whatever")).must_equal 0
31
31
  end
32
32
 
33
- it 'converts truthy value to 1' do
34
- GirFFI::Boolean.to_native('i am truth!', 'whatever').must_equal 1
33
+ it "converts truthy value to 1" do
34
+ _(GirFFI::Boolean.to_native("i am truth!", "whatever")).must_equal 1
35
35
  end
36
36
  end
37
37
 
38
- describe '.size' do
39
- it 'returns the correct type size' do
40
- GirFFI::Boolean.size.must_equal FFI.type_size :int
38
+ describe ".size" do
39
+ it "returns the correct type size" do
40
+ _(GirFFI::Boolean.size).must_equal FFI.type_size :int
41
41
  end
42
42
  end
43
43
  end
@@ -1,44 +1,44 @@
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::BoxedBase do
8
- describe 'initialize' do
9
- it 'sets up the held struct pointer' do
8
+ describe "initialize" do
9
+ it "sets up the held struct pointer" do
10
10
  # NOTE: GObject::Value uses the generic constructor, unlike
11
11
  # GIMarshallingTests::BoxedStruct, which has its own constructor.
12
12
  value = GObject::Value.new
13
- value.to_ptr.wont_be_nil
13
+ _(value.to_ptr).wont_be_nil
14
14
  end
15
15
  end
16
16
 
17
- describe 'copy_from' do
18
- it 'returns a copy with owned false' do
17
+ describe "copy_from" do
18
+ it "returns a copy with owned false" do
19
19
  original = GIMarshallingTests::BoxedStruct.new
20
20
  copy = GIMarshallingTests::BoxedStruct.copy_from(original)
21
21
  ptr = copy.to_ptr
22
- ptr.wont_be :==, original.to_ptr
23
- ptr.wont_be :autorelease? if ptr.respond_to? :autorelease?
24
- copy.struct.wont_be :owned?
22
+ _(ptr).wont_be :==, original.to_ptr
23
+ _(ptr).wont_be :autorelease? if ptr.respond_to? :autorelease?
24
+ _(copy.struct).wont_be :owned?
25
25
  end
26
26
  end
27
27
 
28
- describe 'wrap_own' do
29
- it 'wraps and owns the supplied pointer' do
28
+ describe "wrap_own" do
29
+ it "wraps and owns the supplied pointer" do
30
30
  original = GIMarshallingTests::BoxedStruct.new
31
31
  copy = GIMarshallingTests::BoxedStruct.wrap_own(original.to_ptr)
32
32
  ptr = copy.to_ptr
33
- ptr.must_equal original.to_ptr
34
- ptr.wont_be :autorelease? if ptr.respond_to? :autorelease?
35
- copy.struct.must_be :owned?
33
+ _(ptr).must_equal original.to_ptr
34
+ _(ptr).wont_be :autorelease? if ptr.respond_to? :autorelease?
35
+ _(copy.struct).must_be :owned?
36
36
  end
37
37
  end
38
38
 
39
- describe 'upon garbage collection' do
40
- it 'frees and disowns the underlying struct if it is owned' do
41
- skip 'cannot be reliably tested on JRuby and Rubinius' if jruby? || rubinius?
39
+ describe "upon garbage collection" do
40
+ it "frees and disowns the underlying struct if it is owned" do
41
+ skip "cannot be reliably tested on JRuby" if jruby?
42
42
 
43
43
  allow(GObject).to receive(:boxed_free)
44
44
  gtype = GIMarshallingTests::BoxedStruct.gtype
@@ -59,7 +59,7 @@ describe GirFFI::BoxedBase do
59
59
 
60
60
  expect(GObject).to have_received(:boxed_free).with(gtype, owned_ptr)
61
61
  expect(GObject).not_to have_received(:boxed_free).with(gtype, unowned_ptr)
62
- owned_struct.wont_be :owned?
62
+ _(owned_struct).wont_be :owned?
63
63
  end
64
64
  end
65
65
  end
@@ -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
  GirFFI.setup :Regress
6
6
  GirFFI.setup :GIMarshallingTests
@@ -8,29 +8,29 @@ GirFFI.setup :GIMarshallingTests
8
8
  describe GirFFI::Builder do
9
9
  let(:gir) { GObjectIntrospection::IRepository.default }
10
10
 
11
- describe '.build_class' do
12
- it 'does not replace existing classes' do
11
+ describe ".build_class" do
12
+ it "does not replace existing classes" do
13
13
  oldclass = GObject::Object
14
- GirFFI::Builder.build_class get_introspection_data('GObject', 'Object')
15
- GObject::Object.must_equal oldclass
14
+ GirFFI::Builder.build_class get_introspection_data("GObject", "Object")
15
+ _(GObject::Object).must_equal oldclass
16
16
  end
17
17
  end
18
18
 
19
- describe '.build_module' do
20
- it 'refuses to build existing modules defined elsewhere' do
21
- result = -> { GirFFI::Builder.build_module('Array') }.must_raise RuntimeError
22
- result.message.must_equal 'The module Array was already defined elsewhere'
19
+ describe ".build_module" do
20
+ it "refuses to build existing modules defined elsewhere" do
21
+ result = _(-> { GirFFI::Builder.build_module("Array") }).must_raise RuntimeError
22
+ _(result.message).must_equal "The module Array was already defined elsewhere"
23
23
  end
24
24
 
25
- describe 'building a module for the first time' do
25
+ describe "building a module for the first time" do
26
26
  before do
27
27
  save_module :Regress
28
- GirFFI::Builder.build_module 'Regress'
28
+ GirFFI::Builder.build_module "Regress"
29
29
  end
30
30
 
31
- it 'creates a Lib module ready to attach functions from the shared library' do
31
+ it "creates a Lib module ready to attach functions from the shared library" do
32
32
  gir = GObjectIntrospection::IRepository.default
33
- expected = [gir.shared_library('Regress')]
33
+ expected = [gir.shared_library("Regress")]
34
34
  assert_equal expected, Regress::Lib.ffi_libraries.map(&:name)
35
35
  end
36
36
 
@@ -39,262 +39,130 @@ describe GirFFI::Builder do
39
39
  end
40
40
  end
41
41
 
42
- describe 'building a module that already exists' do
43
- it 'does not replace the existing module' do
42
+ describe "building a module that already exists" do
43
+ it "does not replace the existing module" do
44
44
  oldmodule = Regress
45
- GirFFI::Builder.build_module 'Regress'
45
+ GirFFI::Builder.build_module "Regress"
46
46
  assert_equal oldmodule, Regress
47
47
  end
48
48
 
49
- it 'does not replace the existing Lib module' do
49
+ it "does not replace the existing Lib module" do
50
50
  oldmodule = Regress::Lib
51
- GirFFI::Builder.build_module 'Regress'
51
+ GirFFI::Builder.build_module "Regress"
52
52
  assert_equal oldmodule, Regress::Lib
53
53
  end
54
54
  end
55
55
 
56
- it 'passes the version on to ModuleBuilder' do
56
+ it "passes the version on to ModuleBuilder" do
57
57
  builder = double(generate: nil)
58
- expect(GirFFI::Builders::ModuleBuilder).to receive(:new).
59
- with('Foo', namespace: 'Foo', version: '1.0').
60
- and_return builder
58
+ expect(GirFFI::Builders::ModuleBuilder).to receive(:new)
59
+ .with("Foo", namespace: "Foo", version: "1.0")
60
+ .and_return builder
61
61
 
62
- GirFFI::Builder.build_module 'Foo', '1.0'
62
+ GirFFI::Builder.build_module "Foo", "1.0"
63
63
  end
64
64
  end
65
65
 
66
- describe '.build_by_gtype' do
67
- it 'returns the class types known to the GIR' do
66
+ describe ".build_by_gtype" do
67
+ it "returns the class types known to the GIR" do
68
68
  result = GirFFI::Builder.build_by_gtype GObject::Object.gtype
69
- result.must_equal GObject::Object
69
+ _(result).must_equal GObject::Object
70
70
  end
71
71
 
72
- it 'returns the class for user-defined types' do
72
+ it "returns the class for user-defined types" do
73
73
  klass = Class.new GIMarshallingTests::OverridesObject
74
74
  Object.const_set "Derived#{Sequence.next}", klass
75
75
  gtype = GirFFI.define_type klass
76
76
 
77
77
  found_klass = GirFFI::Builder.build_by_gtype gtype
78
- found_klass.must_equal klass
78
+ _(found_klass).must_equal klass
79
79
  end
80
80
 
81
- it 'returns a valid class for boxed classes unknown to GIR' do
81
+ it "returns the class for user-defined types not derived from GObject" do
82
+ klass = Class.new Regress::TestFundamentalObject
83
+ Object.const_set "Derived#{Sequence.next}", klass
84
+ gtype = GirFFI.define_type klass
85
+
86
+ found_klass = GirFFI::Builder.build_by_gtype gtype
87
+ _(found_klass).must_equal klass
88
+ end
89
+
90
+ it "returns a valid class for boxed classes unknown to GIR" do
82
91
  object_class = GIMarshallingTests::PropertiesObject.object_class
83
- property = object_class.find_property 'some-boxed-glist'
92
+ property = object_class.find_property "some-boxed-glist"
84
93
  gtype = property.value_type
85
94
 
86
- gtype.wont_equal GObject::TYPE_NONE
95
+ _(gtype).wont_equal GObject::TYPE_NONE
87
96
 
88
97
  found_klass = GirFFI::Builder.build_by_gtype gtype
89
- found_klass.name.must_be_nil
90
- found_klass.superclass.must_equal GirFFI::BoxedBase
98
+ _(found_klass.name).must_be_nil
99
+ _(found_klass.superclass).must_equal GirFFI::BoxedBase
100
+ end
101
+
102
+ it "refuse to build classes for base types" do
103
+ _(-> { GirFFI::Builder.build_by_gtype GObject::TYPE_INT })
104
+ .must_raise RuntimeError, "Unable to handle type gint"
91
105
  end
92
106
  end
93
107
 
94
- describe '.attach_ffi_function' do
108
+ describe ".attach_ffi_function" do
95
109
  let(:lib) { Module.new }
96
110
 
97
- it 'calls attach_function with the correct types for Regress.test_callback_destroy_notify' do
98
- function_info = get_introspection_data 'Regress', 'test_callback_destroy_notify'
111
+ it "attaches regress_test_callback_destroy_notify with the correct types" do
112
+ function_info = get_introspection_data "Regress", "test_callback_destroy_notify"
99
113
 
100
- expect(lib).
101
- to receive(:attach_function).
102
- with('regress_test_callback_destroy_notify',
103
- [Regress::TestCallbackUserData, :pointer, GLib::DestroyNotify],
104
- :int32).
105
- and_return true
114
+ expect(lib)
115
+ .to receive(:attach_function)
116
+ .with("regress_test_callback_destroy_notify",
117
+ [Regress::TestCallbackUserData, :pointer, GLib::DestroyNotify],
118
+ :int32)
119
+ .and_return true
106
120
 
107
121
  GirFFI::Builder.attach_ffi_function(lib, function_info)
108
122
  end
109
123
 
110
- it 'calls attach_function with the correct types for Regress::TestObj#torture_signature_0' do
111
- info = get_method_introspection_data 'Regress', 'TestObj', 'torture_signature_0'
124
+ it "attaches regress_test_obj_torture_signature_0 with the correct types" do
125
+ info = get_method_introspection_data "Regress", "TestObj", "torture_signature_0"
112
126
 
113
- expect(lib).
114
- to receive(:attach_function).
115
- with('regress_test_obj_torture_signature_0',
116
- [:pointer, :int32, :pointer, :pointer, :pointer, :pointer, :uint32],
117
- :void).
118
- and_return true
127
+ expect(lib)
128
+ .to receive(:attach_function)
129
+ .with("regress_test_obj_torture_signature_0",
130
+ [:pointer, :int32, :pointer, :pointer, :pointer, :pointer, :uint32],
131
+ :void)
132
+ .and_return true
119
133
 
120
134
  GirFFI::Builder.attach_ffi_function(lib, info)
121
135
  end
122
136
 
123
- it 'calls attach_function with the correct types for Regress::TestObj#instance_method' do
124
- info = get_method_introspection_data 'Regress', 'TestObj', 'instance_method'
125
- expect(lib).to receive(:attach_function).
126
- with('regress_test_obj_instance_method', [:pointer], :int32).
127
- and_return true
137
+ it "attaches regress_test_obj_instance_method with the correct types" do
138
+ info = get_method_introspection_data "Regress", "TestObj", "instance_method"
139
+ expect(lib).to receive(:attach_function)
140
+ .with("regress_test_obj_instance_method", [:pointer], :int32)
141
+ .and_return true
128
142
  GirFFI::Builder.attach_ffi_function(lib, info)
129
143
  end
130
144
 
131
- it 'calls attach_function with the correct types for Regress.test_array_gint32_in' do
132
- info = get_introspection_data 'Regress', 'test_array_gint32_in'
133
- expect(lib).to receive(:attach_function).
134
- with('regress_test_array_gint32_in', [:int32, :pointer], :int32).
135
- and_return true
145
+ it "calls attach_function with the correct types for Regress.test_array_gint32_in" do
146
+ info = get_introspection_data "Regress", "test_array_gint32_in"
147
+ expect(lib).to receive(:attach_function)
148
+ .with("regress_test_array_gint32_in", [:int32, :pointer], :int32)
149
+ .and_return true
136
150
  GirFFI::Builder.attach_ffi_function(lib, info)
137
151
  end
138
152
 
139
- it 'calls attach_function with the correct types for Regress.test_enum_param' do
140
- info = get_introspection_data 'Regress', 'test_enum_param'
141
- expect(lib).to receive(:attach_function).
142
- with('regress_test_enum_param', [Regress::TestEnum], :pointer).
143
- and_return true
153
+ it "calls attach_function with the correct types for Regress.test_enum_param" do
154
+ info = get_introspection_data "Regress", "test_enum_param"
155
+ expect(lib).to receive(:attach_function)
156
+ .with("regress_test_enum_param", [Regress::TestEnum], :pointer)
157
+ .and_return true
144
158
  GirFFI::Builder.attach_ffi_function(lib, info)
145
159
  end
146
160
 
147
- it 'does not attach the function if it is already defined' do
148
- info = get_introspection_data 'Regress', 'test_array_gint32_in'
161
+ it "does not attach the function if it is already defined" do
162
+ info = get_introspection_data "Regress", "test_array_gint32_in"
149
163
  allow(lib).to receive(:method_defined?).and_return true
150
164
  expect(lib).not_to receive(:attach_function)
151
165
  GirFFI::Builder.attach_ffi_function(lib, info)
152
166
  end
153
167
  end
154
-
155
- #
156
- # NOTE: Legacy tests below.
157
- #
158
-
159
- describe 'looking at Regress.test_callback_destroy_notify' do
160
- before do
161
- save_module :GObject
162
- save_module :Regress
163
- GirFFI::Builder.build_module 'GObject'
164
- GirFFI::Builder.build_module 'Regress'
165
- @go = get_introspection_data 'Regress', 'test_callback_destroy_notify'
166
- end
167
-
168
- it 'defines ffi callback types :Callback and :ClosureNotify' do
169
- Regress.setup_method! 'test_callback_destroy_notify'
170
- tcud = Regress::Lib.find_type :TestCallbackUserData
171
- dn = GLib::Lib.find_type :DestroyNotify
172
-
173
- assert_equal FFI.find_type(:int32), tcud.result_type
174
- assert_equal FFI.find_type(:void), dn.result_type
175
- assert_equal [FFI.find_type(:pointer)], tcud.param_types
176
- assert_equal [FFI.find_type(:pointer)], dn.param_types
177
- end
178
-
179
- after do
180
- restore_module :Regress
181
- restore_module :GObject
182
- end
183
- end
184
-
185
- describe 'building Regress::TestBoxed' do
186
- before do
187
- GirFFI::Builder.build_class get_introspection_data('Regress', 'TestBoxed')
188
- end
189
-
190
- it 'sets up #wrap' do
191
- assert Regress::TestBoxed.respond_to? 'wrap'
192
- end
193
-
194
- it 'sets up #allocate' do
195
- assert Regress::TestBoxed.respond_to? 'allocate'
196
- end
197
- end
198
-
199
- describe 'built Regress module' do
200
- before do
201
- save_module :Regress
202
- GirFFI::Builder.build_module 'Regress'
203
- end
204
-
205
- it 'autocreates singleton methods' do
206
- refute_defines_singleton_method Regress, :test_uint
207
- Regress.test_uint 31
208
- assert_defines_singleton_method Regress, :test_uint
209
- end
210
-
211
- it 'autocreates the TestObj class on first access' do
212
- assert !Regress.const_defined?(:TestObj)
213
- Regress::TestObj.must_be_instance_of Class
214
- assert Regress.const_defined? :TestObj
215
- end
216
-
217
- it 'knows its own module builder' do
218
- Regress.gir_ffi_builder.must_be_instance_of GirFFI::Builders::ModuleBuilder
219
- end
220
-
221
- after do
222
- restore_module :Regress
223
- end
224
- end
225
-
226
- describe 'having built Regress::TestObj' do
227
- before do
228
- GirFFI::Builder.build_class get_introspection_data('Regress', 'TestObj')
229
- end
230
-
231
- it 'C functions for called instance methods get attached to Regress::Lib' do
232
- o = Regress::TestObj.new_from_file('foo')
233
- o.instance_method
234
- Regress::Lib.must_respond_to :regress_test_obj_instance_method
235
- end
236
-
237
- it 'the built class knows its own GIR info' do
238
- Regress::TestObj.gir_info.name.must_equal 'TestObj'
239
- end
240
-
241
- it 'the built class knows its own class builder' do
242
- Regress::TestObj.gir_ffi_builder.must_be_instance_of GirFFI::Builders::ObjectBuilder
243
- end
244
- end
245
-
246
- describe 'built Regress::TestSubObj' do
247
- it 'inherits #set_bare from its superclass' do
248
- o1 = Regress::TestSubObj.new
249
- o1.set_bare(nil)
250
- pass
251
- end
252
-
253
- it 'overrides #instance_method' do
254
- obj = Regress::TestObj.new_from_file('foo')
255
- subobj = Regress::TestSubObj.new
256
-
257
- obj.instance_method.must_equal(-1)
258
- subobj.instance_method.must_equal 0
259
- end
260
- end
261
-
262
- describe 'building Regress::TestSubObj' do
263
- before do
264
- save_module :Regress
265
- GirFFI::Builder.build_class get_introspection_data('Regress', 'TestSubObj')
266
- end
267
-
268
- it 'sets up the Regress namespace' do
269
- assert Regress.const_defined? :Lib
270
- assert Regress.respond_to? :gir_ffi_builder
271
- assert Regress.const_defined? :GIR_FFI_BUILDER
272
- end
273
-
274
- it 'creates the Regress::Lib module ready to attach functions from the shared library' do
275
- expected = [gir.shared_library('Regress')]
276
- assert_equal expected, Regress::Lib.ffi_libraries.map(&:name)
277
- end
278
-
279
- it 'builds parent classes also' do
280
- assert Regress.const_defined? :TestObj
281
- assert Object.const_defined? :GObject
282
- assert GObject.const_defined? :Object
283
- end
284
-
285
- it 'sets up the inheritance chain' do
286
- Regress::TestSubObj.registered_ancestors.
287
- must_equal [Regress::TestSubObj,
288
- Regress::TestObj,
289
- GObject::Object]
290
- end
291
-
292
- it 'creates a Regress::TestSubObj#to_ptr method' do
293
- assert Regress::TestSubObj.public_method_defined? :to_ptr
294
- end
295
-
296
- after do
297
- restore_module :Regress
298
- end
299
- end
300
168
  end