gir_ffi 0.14.1 → 0.15.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (281) hide show
  1. checksums.yaml +4 -4
  2. data/Changelog.md +56 -0
  3. data/README.md +12 -12
  4. data/TODO.md +14 -35
  5. data/docs/Documentation.md +6 -0
  6. data/docs/Subclassing.md +38 -0
  7. data/lib/ffi-glib.rb +26 -21
  8. data/lib/ffi-glib/array.rb +14 -4
  9. data/lib/ffi-glib/byte_array.rb +9 -3
  10. data/lib/ffi-glib/container_class_methods.rb +1 -1
  11. data/lib/ffi-glib/destroy_notify.rb +2 -2
  12. data/lib/ffi-glib/error.rb +1 -1
  13. data/lib/ffi-glib/hash_table.rb +4 -5
  14. data/lib/ffi-glib/list.rb +12 -6
  15. data/lib/ffi-glib/list_methods.rb +13 -1
  16. data/lib/ffi-glib/main_loop.rb +3 -3
  17. data/lib/ffi-glib/ptr_array.rb +30 -8
  18. data/lib/ffi-glib/s_list.rb +11 -5
  19. data/lib/ffi-glib/variant.rb +1 -1
  20. data/lib/ffi-gobject.rb +13 -16
  21. data/lib/ffi-gobject/object.rb +82 -87
  22. data/lib/ffi-gobject/object_class.rb +1 -1
  23. data/lib/ffi-gobject/param_spec.rb +1 -1
  24. data/lib/ffi-gobject/ruby_closure.rb +2 -2
  25. data/lib/ffi-gobject/value.rb +136 -126
  26. data/lib/ffi-gobject_introspection.rb +20 -20
  27. data/lib/ffi-gobject_introspection/gobject_type_init.rb +2 -2
  28. data/lib/ffi-gobject_introspection/i_arg_info.rb +2 -2
  29. data/lib/ffi-gobject_introspection/i_base_info.rb +34 -23
  30. data/lib/ffi-gobject_introspection/i_callable_info.rb +4 -4
  31. data/lib/ffi-gobject_introspection/i_constant_info.rb +2 -2
  32. data/lib/ffi-gobject_introspection/i_enum_info.rb +1 -0
  33. data/lib/ffi-gobject_introspection/i_field_info.rb +1 -1
  34. data/lib/ffi-gobject_introspection/i_function_info.rb +1 -1
  35. data/lib/ffi-gobject_introspection/i_interface_info.rb +1 -1
  36. data/lib/ffi-gobject_introspection/i_object_info.rb +2 -2
  37. data/lib/ffi-gobject_introspection/i_property_info.rb +2 -2
  38. data/lib/ffi-gobject_introspection/i_repository.rb +9 -6
  39. data/lib/ffi-gobject_introspection/i_struct_info.rb +2 -1
  40. data/lib/ffi-gobject_introspection/i_type_info.rb +13 -7
  41. data/lib/ffi-gobject_introspection/i_unresolved_info.rb +1 -1
  42. data/lib/ffi-gobject_introspection/i_vfunc_info.rb +1 -1
  43. data/lib/ffi-gobject_introspection/lib.rb +30 -19
  44. data/lib/ffi-gobject_introspection/strv.rb +1 -1
  45. data/lib/gir_ffi-base.rb +1 -1
  46. data/lib/gir_ffi-base/gobject.rb +26 -25
  47. data/lib/gir_ffi-base/gobject/lib.rb +7 -2
  48. data/lib/gir_ffi.rb +3 -3
  49. data/lib/gir_ffi/allocation_helper.rb +1 -1
  50. data/lib/gir_ffi/arg_helper.rb +4 -4
  51. data/lib/gir_ffi/{in_out_pointer.rb → array_element_convertor.rb} +16 -24
  52. data/lib/gir_ffi/boolean.rb +1 -1
  53. data/lib/gir_ffi/boxed_base.rb +2 -6
  54. data/lib/gir_ffi/builder.rb +19 -11
  55. data/lib/gir_ffi/builder_helper.rb +10 -2
  56. data/lib/gir_ffi/builders/argument_builder.rb +19 -19
  57. data/lib/gir_ffi/builders/argument_builder_collection.rb +2 -2
  58. data/lib/gir_ffi/builders/base_argument_builder.rb +2 -1
  59. data/lib/gir_ffi/builders/base_method_builder.rb +8 -8
  60. data/lib/gir_ffi/builders/base_return_value_builder.rb +1 -1
  61. data/lib/gir_ffi/builders/base_type_builder.rb +2 -2
  62. data/lib/gir_ffi/builders/c_to_ruby_convertor.rb +5 -5
  63. data/lib/gir_ffi/builders/callback_argument_builder.rb +10 -8
  64. data/lib/gir_ffi/builders/callback_builder.rb +28 -14
  65. data/lib/gir_ffi/builders/callback_return_value_builder.rb +6 -8
  66. data/lib/gir_ffi/builders/class_struct_builder.rb +24 -0
  67. data/lib/gir_ffi/builders/closure_argument_builder.rb +1 -1
  68. data/lib/gir_ffi/builders/closure_return_value_builder.rb +1 -1
  69. data/lib/gir_ffi/builders/constant_builder.rb +1 -1
  70. data/lib/gir_ffi/builders/constructor_builder.rb +9 -9
  71. data/lib/gir_ffi/builders/enum_builder.rb +11 -7
  72. data/lib/gir_ffi/builders/field_builder.rb +20 -18
  73. data/lib/gir_ffi/builders/flags_builder.rb +2 -2
  74. data/lib/gir_ffi/builders/full_c_to_ruby_convertor.rb +1 -1
  75. data/lib/gir_ffi/builders/function_builder.rb +11 -5
  76. data/lib/gir_ffi/builders/initializer_builder.rb +3 -3
  77. data/lib/gir_ffi/builders/initializer_return_value_builder.rb +2 -2
  78. data/lib/gir_ffi/builders/interface_builder.rb +5 -3
  79. data/lib/gir_ffi/builders/mapping_method_builder.rb +10 -10
  80. data/lib/gir_ffi/builders/marshalling_method_builder.rb +12 -9
  81. data/lib/gir_ffi/builders/method_template.rb +5 -5
  82. data/lib/gir_ffi/builders/module_builder.rb +7 -7
  83. data/lib/gir_ffi/builders/null_argument_builder.rb +0 -2
  84. data/lib/gir_ffi/builders/null_return_value_builder.rb +0 -2
  85. data/lib/gir_ffi/builders/object_builder.rb +22 -12
  86. data/lib/gir_ffi/builders/property_argument_builder.rb +1 -1
  87. data/lib/gir_ffi/builders/property_builder.rb +14 -14
  88. data/lib/gir_ffi/builders/property_return_value_builder.rb +1 -1
  89. data/lib/gir_ffi/builders/registered_type_builder.rb +14 -5
  90. data/lib/gir_ffi/builders/return_value_builder.rb +4 -4
  91. data/lib/gir_ffi/builders/ruby_to_c_convertor.rb +6 -6
  92. data/lib/gir_ffi/builders/signal_closure_builder.rb +5 -7
  93. data/lib/gir_ffi/builders/struct_builder.rb +8 -6
  94. data/lib/gir_ffi/builders/struct_like.rb +1 -1
  95. data/lib/gir_ffi/builders/type_builder.rb +12 -12
  96. data/lib/gir_ffi/builders/unintrospectable_boxed_builder.rb +2 -2
  97. data/lib/gir_ffi/builders/unintrospectable_builder.rb +2 -2
  98. data/lib/gir_ffi/builders/union_builder.rb +4 -4
  99. data/lib/gir_ffi/builders/user_defined_builder.rb +10 -3
  100. data/lib/gir_ffi/builders/vfunc_argument_builder.rb +2 -2
  101. data/lib/gir_ffi/builders/vfunc_builder.rb +8 -8
  102. data/lib/gir_ffi/builders/with_layout.rb +2 -2
  103. data/lib/gir_ffi/callback_base.rb +7 -9
  104. data/lib/gir_ffi/class_base.rb +6 -5
  105. data/lib/gir_ffi/core.rb +36 -22
  106. data/lib/gir_ffi/enum_base.rb +1 -1
  107. data/lib/gir_ffi/enum_like_base.rb +2 -2
  108. data/lib/gir_ffi/error_argument_info.rb +2 -2
  109. data/lib/gir_ffi/error_type_info.rb +1 -1
  110. data/lib/gir_ffi/ffi_ext.rb +1 -1
  111. data/lib/gir_ffi/ffi_ext/pointer.rb +1 -1
  112. data/lib/gir_ffi/flags_base.rb +1 -1
  113. data/lib/gir_ffi/glib_error.rb +1 -2
  114. data/lib/gir_ffi/in_pointer.rb +17 -0
  115. data/lib/gir_ffi/info_ext.rb +15 -15
  116. data/lib/gir_ffi/info_ext/full_type_name.rb +3 -3
  117. data/lib/gir_ffi/info_ext/i_arg_info.rb +1 -1
  118. data/lib/gir_ffi/info_ext/i_callable_info.rb +1 -1
  119. data/lib/gir_ffi/info_ext/i_callback_info.rb +1 -1
  120. data/lib/gir_ffi/info_ext/i_field_info.rb +1 -1
  121. data/lib/gir_ffi/info_ext/i_function_info.rb +1 -1
  122. data/lib/gir_ffi/info_ext/i_property_info.rb +2 -2
  123. data/lib/gir_ffi/info_ext/i_registered_type_info.rb +4 -5
  124. data/lib/gir_ffi/info_ext/i_signal_info.rb +7 -3
  125. data/lib/gir_ffi/info_ext/i_type_info.rb +48 -26
  126. data/lib/gir_ffi/info_ext/i_unresolved_info.rb +1 -1
  127. data/lib/gir_ffi/info_ext/i_value_info.rb +2 -2
  128. data/lib/gir_ffi/info_ext/i_vfunc_info.rb +2 -2
  129. data/lib/gir_ffi/info_ext/safe_constant_name.rb +8 -8
  130. data/lib/gir_ffi/info_ext/safe_function_name.rb +2 -2
  131. data/lib/gir_ffi/interface_base.rb +3 -3
  132. data/lib/gir_ffi/lib_c.rb +1 -1
  133. data/lib/gir_ffi/method_stubber.rb +1 -1
  134. data/lib/gir_ffi/module_base.rb +1 -1
  135. data/lib/gir_ffi/object_base.rb +30 -4
  136. data/lib/gir_ffi/receiver_argument_info.rb +1 -1
  137. data/lib/gir_ffi/receiver_type_info.rb +2 -2
  138. data/lib/gir_ffi/registered_type_base.rb +1 -1
  139. data/lib/gir_ffi/return_value_info.rb +1 -2
  140. data/lib/gir_ffi/sized_array.rb +4 -2
  141. data/lib/gir_ffi/struct.rb +1 -1
  142. data/lib/gir_ffi/struct_base.rb +2 -10
  143. data/lib/gir_ffi/struct_like_base.rb +9 -5
  144. data/lib/gir_ffi/type_map.rb +2 -23
  145. data/lib/gir_ffi/unintrospectable_boxed_info.rb +2 -2
  146. data/lib/gir_ffi/unintrospectable_type_info.rb +6 -2
  147. data/lib/gir_ffi/union.rb +1 -1
  148. data/lib/gir_ffi/union_base.rb +2 -10
  149. data/lib/gir_ffi/user_defined_object_info.rb +9 -4
  150. data/lib/gir_ffi/user_defined_property_info.rb +33 -33
  151. data/lib/gir_ffi/version.rb +1 -1
  152. data/lib/gir_ffi/vfunc_implementation.rb +1 -0
  153. metadata +102 -155
  154. data/Gemfile +0 -12
  155. data/Rakefile +0 -9
  156. data/lib/ffi-glib/array_methods.rb +0 -16
  157. data/tasks/test.rake +0 -203
  158. data/test/base_test_helper.rb +0 -63
  159. data/test/ffi-glib/array_test.rb +0 -188
  160. data/test/ffi-glib/byte_array_test.rb +0 -22
  161. data/test/ffi-glib/bytes_test.rb +0 -56
  162. data/test/ffi-glib/closure_test.rb +0 -38
  163. data/test/ffi-glib/destroy_notify_test.rb +0 -18
  164. data/test/ffi-glib/hash_table_test.rb +0 -68
  165. data/test/ffi-glib/list_test.rb +0 -86
  166. data/test/ffi-glib/main_loop_test.rb +0 -53
  167. data/test/ffi-glib/ptr_array_test.rb +0 -112
  168. data/test/ffi-glib/ruby_closure_test.rb +0 -62
  169. data/test/ffi-glib/s_list_test.rb +0 -76
  170. data/test/ffi-glib/strv_test.rb +0 -60
  171. data/test/ffi-glib/variant_test.rb +0 -12
  172. data/test/ffi-gobject/gobject_test.rb +0 -72
  173. data/test/ffi-gobject/object_class_test.rb +0 -31
  174. data/test/ffi-gobject/object_test.rb +0 -140
  175. data/test/ffi-gobject/param_spec_test.rb +0 -32
  176. data/test/ffi-gobject/value_test.rb +0 -370
  177. data/test/ffi-gobject_introspection/gobject_type_init_test.rb +0 -26
  178. data/test/ffi-gobject_introspection/i_base_info_test.rb +0 -53
  179. data/test/ffi-gobject_introspection/i_constant_info_test.rb +0 -33
  180. data/test/ffi-gobject_introspection/i_enum_info_test.rb +0 -18
  181. data/test/ffi-gobject_introspection/i_function_info_test.rb +0 -6
  182. data/test/ffi-gobject_introspection/i_interface_info_test.rb +0 -23
  183. data/test/ffi-gobject_introspection/i_object_info_test.rb +0 -49
  184. data/test/ffi-gobject_introspection/i_property_info_test.rb +0 -47
  185. data/test/ffi-gobject_introspection/i_registered_type_info_test.rb +0 -27
  186. data/test/ffi-gobject_introspection/i_repository_test.rb +0 -81
  187. data/test/ffi-gobject_introspection/i_struct_info_test.rb +0 -23
  188. data/test/ffi-gobject_introspection/i_type_info_test.rb +0 -33
  189. data/test/ffi-gobject_introspection/i_union_info_test.rb +0 -17
  190. data/test/ffi-gobject_introspection/i_vfunc_info_test.rb +0 -41
  191. data/test/ffi-gobject_introspection/lib_test.rb +0 -13
  192. data/test/ffi-gobject_introspection/strv_test.rb +0 -46
  193. data/test/ffi-gobject_test.rb +0 -151
  194. data/test/gir_ffi/allocation_helper_test.rb +0 -36
  195. data/test/gir_ffi/arg_helper_test.rb +0 -140
  196. data/test/gir_ffi/boolean_test.rb +0 -43
  197. data/test/gir_ffi/boxed_base_test.rb +0 -65
  198. data/test/gir_ffi/builder_test.rb +0 -300
  199. data/test/gir_ffi/builders/argument_builder_test.rb +0 -657
  200. data/test/gir_ffi/builders/base_argument_builder_test.rb +0 -6
  201. data/test/gir_ffi/builders/callback_argument_builder_test.rb +0 -129
  202. data/test/gir_ffi/builders/callback_builder_test.rb +0 -118
  203. data/test/gir_ffi/builders/callback_return_value_builder_test.rb +0 -85
  204. data/test/gir_ffi/builders/constant_builder_test.rb +0 -6
  205. data/test/gir_ffi/builders/constructor_builder_test.rb +0 -37
  206. data/test/gir_ffi/builders/enum_builder_test.rb +0 -23
  207. data/test/gir_ffi/builders/field_builder_test.rb +0 -134
  208. data/test/gir_ffi/builders/function_builder_test.rb +0 -538
  209. data/test/gir_ffi/builders/initializer_builder_test.rb +0 -54
  210. data/test/gir_ffi/builders/interface_builder_test.rb +0 -32
  211. data/test/gir_ffi/builders/module_builder_test.rb +0 -43
  212. data/test/gir_ffi/builders/object_builder_test.rb +0 -98
  213. data/test/gir_ffi/builders/property_builder_test.rb +0 -161
  214. data/test/gir_ffi/builders/registered_type_builder_test.rb +0 -30
  215. data/test/gir_ffi/builders/return_value_builder_test.rb +0 -440
  216. data/test/gir_ffi/builders/signal_closure_builder_test.rb +0 -188
  217. data/test/gir_ffi/builders/struct_builder_test.rb +0 -93
  218. data/test/gir_ffi/builders/unintrospectable_boxed_builder_test.rb +0 -35
  219. data/test/gir_ffi/builders/unintrospectable_builder_test.rb +0 -73
  220. data/test/gir_ffi/builders/union_builder_test.rb +0 -31
  221. data/test/gir_ffi/builders/user_defined_builder_test.rb +0 -524
  222. data/test/gir_ffi/builders/vfunc_argument_builder_test.rb +0 -101
  223. data/test/gir_ffi/builders/vfunc_builder_test.rb +0 -253
  224. data/test/gir_ffi/callback_base_test.rb +0 -22
  225. data/test/gir_ffi/class_base_test.rb +0 -168
  226. data/test/gir_ffi/core_test.rb +0 -98
  227. data/test/gir_ffi/enum_base_test.rb +0 -43
  228. data/test/gir_ffi/error_type_info_test.rb +0 -50
  229. data/test/gir_ffi/ffi_ext/pointer_test.rb +0 -20
  230. data/test/gir_ffi/g_type_test.rb +0 -31
  231. data/test/gir_ffi/in_out_pointer_test.rb +0 -56
  232. data/test/gir_ffi/in_pointer_test.rb +0 -183
  233. data/test/gir_ffi/info_ext/i_callable_info_test.rb +0 -26
  234. data/test/gir_ffi/info_ext/i_callback_info_test.rb +0 -21
  235. data/test/gir_ffi/info_ext/i_field_info_test.rb +0 -37
  236. data/test/gir_ffi/info_ext/i_function_info_test.rb +0 -74
  237. data/test/gir_ffi/info_ext/i_signal_info_test.rb +0 -32
  238. data/test/gir_ffi/info_ext/i_type_info_test.rb +0 -697
  239. data/test/gir_ffi/info_ext/i_unresolved_info_test.rb +0 -19
  240. data/test/gir_ffi/info_ext/safe_constant_name_test.rb +0 -26
  241. data/test/gir_ffi/info_ext/safe_function_name_test.rb +0 -26
  242. data/test/gir_ffi/interface_base_test.rb +0 -20
  243. data/test/gir_ffi/method_stubber_test.rb +0 -65
  244. data/test/gir_ffi/object_base_test.rb +0 -64
  245. data/test/gir_ffi/object_store_test.rb +0 -41
  246. data/test/gir_ffi/receiver_argument_info_test.rb +0 -33
  247. data/test/gir_ffi/sized_array_test.rb +0 -206
  248. data/test/gir_ffi/struct_base_test.rb +0 -23
  249. data/test/gir_ffi/struct_like_base_test.rb +0 -167
  250. data/test/gir_ffi/type_map_test.rb +0 -17
  251. data/test/gir_ffi/unintrospectable_type_info_test.rb +0 -121
  252. data/test/gir_ffi/union_base_test.rb +0 -23
  253. data/test/gir_ffi/user_defined_object_info_test.rb +0 -119
  254. data/test/gir_ffi/user_defined_property_info_test.rb +0 -39
  255. data/test/gir_ffi/variable_name_generator_test.rb +0 -18
  256. data/test/gir_ffi/version_test.rb +0 -9
  257. data/test/gir_ffi/zero_terminated_test.rb +0 -108
  258. data/test/gir_ffi_test_helper.rb +0 -84
  259. data/test/integration/callback_exceptions_test.rb +0 -63
  260. data/test/integration/derived_classes_test.rb +0 -53
  261. data/test/integration/generated_everything_test.rb +0 -452
  262. data/test/integration/generated_gimarshallingtests_test.rb +0 -2995
  263. data/test/integration/generated_gio_test.rb +0 -116
  264. data/test/integration/generated_glib_test.rb +0 -12
  265. data/test/integration/generated_gobject_test.rb +0 -116
  266. data/test/integration/generated_gst_test.rb +0 -34
  267. data/test/integration/generated_gtk_source_test.rb +0 -27
  268. data/test/integration/generated_gtop_test.rb +0 -29
  269. data/test/integration/generated_pango_ft2_test.rb +0 -17
  270. data/test/integration/generated_pango_test.rb +0 -24
  271. data/test/integration/generated_regress_test.rb +0 -3850
  272. data/test/integration/generated_secret_test.rb +0 -17
  273. data/test/integration/generated_utility_test.rb +0 -174
  274. data/test/integration/generated_warnlib_test.rb +0 -49
  275. data/test/integration/method_lookup_test.rb +0 -34
  276. data/test/introspection_test_helper.rb +0 -52
  277. data/test/lib/Makefile.am +0 -110
  278. data/test/lib/autogen.sh +0 -4
  279. data/test/lib/configure.ac +0 -34
  280. data/test/lib/m4/jhflags.m4 +0 -21
  281. data/test/minitest/stats_plugin.rb +0 -30
@@ -1,22 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'gir_ffi_test_helper'
4
-
5
- describe GLib::ByteArray do
6
- it 'can succesfully be created with GLib::ByteArray.new' do
7
- ba = GLib::ByteArray.new
8
- assert_instance_of GLib::ByteArray, ba
9
- end
10
-
11
- it 'allows strings to be appended to it' do
12
- ba = GLib::ByteArray.new
13
- ba.append 'abdc'
14
- pass
15
- end
16
-
17
- it 'has a working #to_string method' do
18
- ba = GLib::ByteArray.new
19
- ba = ba.append 'abdc'
20
- assert_equal 'abdc', ba.to_string
21
- end
22
- end
@@ -1,56 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'gir_ffi_test_helper'
4
-
5
- describe GLib::Bytes do
6
- it 'can succesfully be created with GLib::Bytes.new' do
7
- bytes = GLib::Bytes.new [1, 2, 3]
8
- bytes.must_be_instance_of GLib::Bytes
9
- end
10
-
11
- it 'has a working #get_size method' do
12
- bytes = GLib::Bytes.new [1, 2, 3]
13
- bytes.get_size.must_equal 3
14
- end
15
-
16
- it 'has a working #get_data method' do
17
- bytes = GLib::Bytes.new [1, 2, 3]
18
- bytes.get_data.to_a.must_equal [1, 2, 3]
19
- end
20
-
21
- it 'has a working #each method' do
22
- a = []
23
- bytes = GLib::Bytes.new [1, 2, 3]
24
- bytes.each do |v|
25
- a.unshift v
26
- end
27
- a.must_equal [3, 2, 1]
28
- end
29
-
30
- it 'has a working #to_a method' do
31
- bytes = GLib::Bytes.new [1, 2, 3]
32
- bytes.to_a.must_equal [1, 2, 3]
33
- end
34
-
35
- describe '.from' do
36
- it 'creates a GLib::Bytes object form an array of small integers' do
37
- bytes = GLib::Bytes.from [1, 2, 3]
38
- bytes.must_be_instance_of GLib::Bytes
39
- bytes.to_a.must_equal [1, 2, 3]
40
- end
41
-
42
- it 'returns its argument if given a GLib::Bytes object' do
43
- bytes = GLib::Bytes.new [1, 2, 3]
44
- result = GLib::Bytes.from bytes
45
- assert result.equal?(bytes)
46
- end
47
-
48
- it 'wraps its argument if given a pointer' do
49
- bytes = GLib::Bytes.new [1, 2, 3]
50
- ptr = bytes.to_ptr
51
- result = GLib::Bytes.from ptr
52
- result.to_a.must_equal [1, 2, 3]
53
- result.to_ptr.must_equal ptr
54
- end
55
- end
56
- end
@@ -1,38 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'gir_ffi_test_helper'
4
-
5
- describe GObject::Closure do
6
- describe '.new' do
7
- it 'updates the ref_count of the created object' do
8
- # Tested on a subclass ...
9
- c = GObject::RubyClosure.new {}
10
- c.ref_count.must_equal 1
11
- end
12
- end
13
-
14
- describe '#invoke' do
15
- it 'invokes the closure' do
16
- a = 0
17
- c = GObject::RubyClosure.new { a = 2 }
18
- c2 = GObject::Closure.wrap(c.to_ptr)
19
- c2.invoke nil, []
20
- a.must_equal 2
21
- end
22
-
23
- it 'returns the closure result' do
24
- c = GObject::RubyClosure.new { 3 }
25
- c2 = GObject::Closure.wrap(c.to_ptr)
26
- result = c2.invoke GObject::Value.for_gtype(GObject::TYPE_INT), []
27
- result.must_equal 3
28
- end
29
-
30
- it 'passes arguments' do
31
- a = 0
32
- c = GObject::RubyClosure.new { |val| a = val }
33
- c2 = GObject::Closure.wrap(c.to_ptr)
34
- c2.invoke nil, [5]
35
- a.must_equal 5
36
- end
37
- end
38
- end
@@ -1,18 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'gir_ffi_test_helper'
4
-
5
- describe GLib::DestroyNotify do
6
- describe '.default' do
7
- it 'removes the passed-in key from the callback store' do
8
- dummy_proc = 'some-callback'
9
- GirFFI::CallbackBase.store_callback dummy_proc
10
- GirFFI::CallbackBase::CALLBACKS[dummy_proc.object_id].wont_be_nil
11
-
12
- user_data = GirFFI::ArgHelper.store dummy_proc
13
- GLib::DestroyNotify.default.call user_data
14
-
15
- GirFFI::CallbackBase::CALLBACKS[dummy_proc.object_id].must_be_nil
16
- end
17
- end
18
- end
@@ -1,68 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'gir_ffi_test_helper'
4
-
5
- describe GLib::HashTable do
6
- it 'knows its key and value types' do
7
- hsh = GLib::HashTable.new :gint32, :utf8
8
- assert_equal :gint32, hsh.key_type
9
- assert_equal :utf8, hsh.value_type
10
- end
11
-
12
- describe '::from' do
13
- it 'creates a GHashTable from a Ruby hash' do
14
- hsh = GLib::HashTable.from [:utf8, :gint32],
15
- 'foo' => 23, 'bar' => 32
16
- assert_equal({ 'foo' => 23, 'bar' => 32 }, hsh.to_hash)
17
- end
18
-
19
- it 'return its argument if given a GHashTable' do
20
- hsh = GLib::HashTable.from [:utf8, :gint32], 'foo' => 23, 'bar' => 32
21
- hsh2 = GLib::HashTable.from [:utf8, :gint32], hsh
22
- assert hsh2.equal? hsh
23
- end
24
-
25
- it 'wraps its argument if given a pointer' do
26
- hsh = GLib::HashTable.from [:utf8, :gint32], 'foo' => 23, 'bar' => 32
27
- pointer = hsh.to_ptr
28
- assert_instance_of FFI::Pointer, pointer
29
- hsh2 = GLib::HashTable.from [:utf8, :gint32], pointer
30
- assert_instance_of GLib::HashTable, hsh2
31
- refute hsh2.equal? hsh
32
- hsh2.to_hash.must_equal hsh.to_hash
33
- end
34
- end
35
-
36
- it 'allows key-value pairs to be inserted' do
37
- h = GLib::HashTable.new :utf8, :utf8
38
- h.insert 'foo', 'bar'
39
- h.to_hash.must_equal 'foo' => 'bar'
40
- end
41
-
42
- it 'includes Enumerable' do
43
- GLib::HashTable.must_include Enumerable
44
- end
45
-
46
- describe 'a HashTable provided by the system' do
47
- before do
48
- GirFFI.setup :Regress
49
- @hash = Regress.test_ghash_container_return
50
- end
51
-
52
- it 'has a working #each method' do
53
- a = {}
54
- @hash.each { |k, v| a[k] = v }
55
- a.must_be :==,
56
- 'foo' => 'bar',
57
- 'baz' => 'bat',
58
- 'qux' => 'quux'
59
- end
60
-
61
- it 'has a working #to_hash method' do
62
- @hash.to_hash.must_be :==,
63
- 'foo' => 'bar',
64
- 'baz' => 'bat',
65
- 'qux' => 'quux'
66
- end
67
- end
68
- end
@@ -1,86 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'gir_ffi_test_helper'
4
-
5
- describe GLib::List do
6
- it 'knows its element type' do
7
- arr = GLib::List.new :gint32
8
- assert_equal :gint32, arr.element_type
9
- end
10
-
11
- describe '#append' do
12
- it 'appends integer values' do
13
- lst = GLib::List.new :gint32
14
- res = lst.append 1
15
- assert_equal 1, res.data
16
- end
17
-
18
- it 'appends string values' do
19
- lst = GLib::List.new :utf8
20
- res = lst.append 'bla'
21
- assert_equal 'bla', res.data
22
- end
23
-
24
- it 'appends multiple values into a single list' do
25
- lst = GLib::List.new :gint32
26
-
27
- lst = lst.append 1
28
- lst = lst.append 2
29
-
30
- assert_equal 1, lst.data
31
- nxt = lst.next
32
- assert_equal 2, nxt.data
33
- end
34
- end
35
-
36
- describe '::from' do
37
- it 'creates a GList from a Ruby array' do
38
- lst = GLib::List.from :gint32, [3, 2, 1]
39
- assert_equal [3, 2, 1], lst.to_a
40
- end
41
-
42
- it 'return its argument if given a GList' do
43
- lst = GLib::List.from :gint32, [3, 2, 1]
44
- lst2 = GLib::List.from :gint32, lst
45
- assert lst2.equal? lst
46
- end
47
-
48
- it 'wraps its argument if given a pointer' do
49
- lst = GLib::List.from :gint32, [3, 2, 1]
50
- pointer = lst.to_ptr
51
- assert_instance_of FFI::Pointer, pointer
52
- lst2 = GLib::List.from :gint32, pointer
53
- assert_instance_of GLib::List, lst2
54
- refute lst2.equal? lst
55
- lst2.to_a.must_equal lst.to_a
56
- end
57
- end
58
-
59
- describe '#==' do
60
- it 'returns true when comparing to an array with the same elements' do
61
- list = GLib::List.from :gint32, [1, 2, 3]
62
-
63
- list.must_be :==, [1, 2, 3]
64
- end
65
-
66
- it 'returns false when comparing to an array with different elements' do
67
- list = GLib::List.from :gint32, [1, 2, 3]
68
-
69
- list.wont_be :==, [1, 2]
70
- end
71
-
72
- it 'returns true when comparing to a list with the same elements' do
73
- list = GLib::List.from :gint32, [1, 2, 3]
74
- other = GLib::List.from :gint32, [1, 2, 3]
75
-
76
- list.must_be :==, other
77
- end
78
-
79
- it 'returns false when comparing to a list with different elements' do
80
- list = GLib::List.from :gint32, [1, 2, 3]
81
- other = GLib::List.from :gint32, [1, 2]
82
-
83
- list.wont_be :==, other
84
- end
85
- end
86
- end
@@ -1,53 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'gir_ffi_test_helper'
4
-
5
- class MainLoopTestException < RuntimeError; end
6
-
7
- describe GLib::MainLoop do
8
- describe '#run' do
9
- it 'allows other threads to run' do
10
- main_loop = GLib::MainLoop.new nil, false
11
-
12
- a = []
13
- GLib.timeout_add GLib::PRIORITY_DEFAULT, 150 do
14
- main_loop.quit
15
- end
16
-
17
- slow_thread = Thread.new do
18
- sleep 0.001
19
- a << 'During run'
20
- end
21
-
22
- a << 'Before run'
23
- main_loop.run
24
- a << 'After run'
25
-
26
- slow_thread.join
27
-
28
- a.must_equal ['Before run', 'During run', 'After run']
29
- end
30
-
31
- it 'raises and quits on exceptions in callbacks' do
32
- main_loop = GLib::MainLoop.new nil, false
33
-
34
- a = 'expected'
35
-
36
- # This timeout shouldn't get called
37
- guard = GLib.timeout_add GLib::PRIORITY_DEFAULT, 150 do
38
- a = 'unexpected'
39
- main_loop.quit
40
- end
41
-
42
- GLib.timeout_add GLib::PRIORITY_DEFAULT, 10 do
43
- raise MainLoopTestException
44
- end
45
-
46
- -> { main_loop.run }.must_raise MainLoopTestException
47
- a.must_equal 'expected'
48
-
49
- # Clean up uncalled timeout
50
- GLib.source_remove guard
51
- end
52
- end
53
- end
@@ -1,112 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'gir_ffi_test_helper'
4
-
5
- describe GLib::PtrArray do
6
- it 'knows its element type' do
7
- arr = GLib::PtrArray.new :utf8
8
- assert_equal :utf8, arr.element_type
9
- end
10
-
11
- describe '::add' do
12
- it 'correctly takes the type into account' do
13
- arr = GLib::PtrArray.new :utf8
14
- str = 'test'
15
- GLib::PtrArray.add arr, str
16
-
17
- assert_equal str, arr.pdata.read_pointer.read_string
18
- end
19
- end
20
-
21
- describe '#each' do
22
- it 'works normally' do
23
- arr = GLib::PtrArray.new :utf8
24
-
25
- GLib::PtrArray.add arr, 'test1'
26
- GLib::PtrArray.add arr, 'test2'
27
- GLib::PtrArray.add arr, 'test3'
28
-
29
- a = []
30
- arr.each { |v| a << v }
31
-
32
- assert_equal %w(test1 test2 test3), a
33
- end
34
-
35
- it 'works when exiting the loop prematurely' do
36
- arr = GLib::PtrArray.new :utf8
37
-
38
- GLib::PtrArray.add arr, 'test1'
39
- GLib::PtrArray.add arr, 'test2'
40
- GLib::PtrArray.add arr, 'test3'
41
-
42
- a = []
43
- arr.each do |v|
44
- a << v
45
- break if v == 'test2'
46
- end
47
-
48
- assert_equal %w(test1 test2), a
49
- end
50
- end
51
-
52
- it 'includes Enumerable' do
53
- GLib::PtrArray.must_include Enumerable
54
- end
55
-
56
- it 'has a working #to_a method' do
57
- arr = GLib::PtrArray.new :utf8
58
-
59
- GLib::PtrArray.add arr, 'test1'
60
- GLib::PtrArray.add arr, 'test2'
61
- GLib::PtrArray.add arr, 'test3'
62
-
63
- assert_equal %w(test1 test2 test3), arr.to_a
64
- end
65
-
66
- it 'has #add as an instance method too' do
67
- arr = GLib::PtrArray.new :utf8
68
- arr.add 'test1'
69
- assert_equal ['test1'], arr.to_a
70
- end
71
-
72
- describe '#==' do
73
- it 'returns true when comparing to an array with the same elements' do
74
- arr = GLib::PtrArray.from :utf8, %w(1 2 3)
75
-
76
- arr.must_be :==, %w(1 2 3)
77
- end
78
-
79
- it 'returns false when comparing to an array with different elements' do
80
- arr = GLib::PtrArray.from :utf8, %w(1 2 3)
81
-
82
- arr.wont_be :==, %w(1 2)
83
- end
84
-
85
- it 'returns true when comparing to a GPtrArray with the same elements' do
86
- arr = GLib::PtrArray.from :utf8, %w(1 2 3)
87
- other = GLib::PtrArray.from :utf8, %w(1 2 3)
88
-
89
- arr.must_be :==, other
90
- end
91
-
92
- it 'returns false when comparing to a GPtrArray with different elements' do
93
- arr = GLib::PtrArray.from :utf8, %w(1 2 3)
94
- other = GLib::PtrArray.from :utf8, %w(1 2)
95
-
96
- arr.wont_be :==, other
97
- end
98
- end
99
-
100
- describe '#index' do
101
- it 'returns the correct element' do
102
- arr = GLib::PtrArray.from :utf8, %w(1 2 3)
103
- arr.index(1).must_equal '2'
104
- end
105
-
106
- it 'raises an error if the index is out of bounds' do
107
- arr = GLib::PtrArray.from :utf8, %w(1 2 3)
108
- proc { arr.index(16) }.must_raise IndexError
109
- proc { arr.index(-1) }.must_raise IndexError
110
- end
111
- end
112
- end