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,62 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'gir_ffi_test_helper'
4
-
5
- describe GObject::RubyClosure do
6
- describe '.new' do
7
- it 'takes a mandatory block argument' do
8
- assert_raises ArgumentError do
9
- GObject::RubyClosure.new
10
- end
11
- end
12
-
13
- it 'returns a kind of Closure' do
14
- c = GObject::RubyClosure.new {}
15
- assert_kind_of GObject::Closure, c
16
- end
17
- end
18
-
19
- describe '.wrap' do
20
- it 'returns a fully functional object that can invoke the original block' do
21
- a = 0
22
- c = GObject::RubyClosure.new { a = 2 }
23
- c2 = GObject::RubyClosure.wrap(c.to_ptr)
24
- c2.invoke_block
25
- assert_equal 2, a
26
- end
27
- end
28
-
29
- describe '.marshaller' do
30
- it "invokes its closure argument's block" do
31
- a = 0
32
- c = GObject::RubyClosure.new { a = 2 }
33
- GObject::RubyClosure.marshaller(c, nil, nil, nil, nil)
34
- assert_equal 2, a
35
- end
36
-
37
- it 'works when its closure argument is a GObject::Closure' do
38
- a = 0
39
- c = GObject::RubyClosure.new { a = 2 }
40
- c2 = GObject::Closure.wrap(c.to_ptr)
41
- GObject::RubyClosure.marshaller(c2, nil, nil, nil, nil)
42
- assert_equal 2, a
43
- end
44
-
45
- it "stores the closure's return value in the proper gvalue" do
46
- c = GObject::RubyClosure.new { 2 }
47
- gv = GObject::Value.new.init GObject::TYPE_INT
48
- GObject::RubyClosure.marshaller(c, gv, nil, nil, nil)
49
- assert_equal 2, gv.get_value
50
- end
51
- end
52
-
53
- describe '#invoke' do
54
- it 'invokes the ruby block' do
55
- a = 0
56
- c = GObject::RubyClosure.new { a = 2 }
57
- c2 = GObject::Closure.wrap(c.to_ptr)
58
- c2.invoke nil, []
59
- assert_equal 2, a
60
- end
61
- end
62
- end
@@ -1,76 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'gir_ffi_test_helper'
4
-
5
- describe GLib::SList do
6
- it 'knows its element type' do
7
- arr = GLib::SList.new :gint32
8
- assert_equal :gint32, arr.element_type
9
- end
10
-
11
- describe '#prepend' do
12
- it 'prepends integer values' do
13
- lst = GLib::SList.new :gint32
14
- res = lst.prepend 1
15
- assert_equal 1, res.data
16
- end
17
-
18
- it 'prepends string values' do
19
- lst = GLib::SList.new :utf8
20
- res = lst.prepend 'bla'
21
- assert_equal 'bla', res.data
22
- end
23
-
24
- it 'prepends multiple values into a single list' do
25
- lst = GLib::SList.new :gint32
26
-
27
- res = lst.prepend 1
28
- res2 = res.prepend 2
29
-
30
- assert_equal 2, res2.data
31
- assert_equal 1, res.data
32
- assert_equal res.to_ptr, res2.next.to_ptr
33
- end
34
- end
35
-
36
- describe '::from' do
37
- it 'creates a GSList from a Ruby array' do
38
- lst = GLib::SList.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 GSList' do
43
- lst = GLib::SList.from :gint32, [3, 2, 1]
44
- lst2 = GLib::SList.from :gint32, lst
45
- assert_equal lst, lst2
46
- end
47
- end
48
-
49
- describe '#==' do
50
- it 'returns true when comparing to an array with the same elements' do
51
- list = GLib::SList.from :gint32, [1, 2, 3]
52
-
53
- list.must_be :==, [1, 2, 3]
54
- end
55
-
56
- it 'returns false when comparing to an array with different elements' do
57
- list = GLib::SList.from :gint32, [1, 2, 3]
58
-
59
- list.wont_be :==, [1, 2]
60
- end
61
-
62
- it 'returns true when comparing to a list with the same elements' do
63
- list = GLib::SList.from :gint32, [1, 2, 3]
64
- other = GLib::SList.from :gint32, [1, 2, 3]
65
-
66
- list.must_be :==, other
67
- end
68
-
69
- it 'returns false when comparing to a list with different elements' do
70
- list = GLib::SList.from :gint32, [1, 2, 3]
71
- other = GLib::SList.from :gint32, [1, 2]
72
-
73
- list.wont_be :==, other
74
- end
75
- end
76
- end
@@ -1,60 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'base_test_helper'
4
-
5
- describe GLib::Strv do
6
- describe '::from' do
7
- it 'creates a Strv from a Ruby array' do
8
- strv = GLib::Strv.from %w(1 2 3)
9
- strv.must_be_instance_of GLib::Strv
10
- strv.to_a.must_equal %w(1 2 3)
11
- end
12
-
13
- it 'return its argument if given a Strv' do
14
- strv = GLib::Strv.from %w(1 2 3)
15
- strv2 = GLib::Strv.from strv
16
- assert strv2.equal? strv
17
- end
18
-
19
- it 'wraps its argument if given a pointer' do
20
- strv = GLib::Strv.from %w(1 2 3)
21
-
22
- pointer = strv.to_ptr
23
- pointer.must_be_kind_of FFI::Pointer
24
-
25
- strv2 = GLib::Strv.from pointer
26
-
27
- strv2.must_be_kind_of GLib::Strv
28
- refute strv2.equal? strv
29
- strv2.to_a.must_equal strv.to_a
30
- end
31
- end
32
-
33
- describe '#==' do
34
- it 'returns true when comparing to an array with the same elements' do
35
- strv = GLib::Strv.from %w(1 2 3)
36
-
37
- strv.must_be :==, %w(1 2 3)
38
- end
39
-
40
- it 'returns false when comparing to an array with different elements' do
41
- strv = GLib::Strv.from %w(1 2 3)
42
-
43
- strv.wont_be :==, %w(1 2)
44
- end
45
-
46
- it 'returns true when comparing to a strv with the same elements' do
47
- strv = GLib::Strv.from %w(1 2 3)
48
- other = GLib::Strv.from %w(1 2 3)
49
-
50
- strv.must_be :==, other
51
- end
52
-
53
- it 'returns false when comparing to a strv with different elements' do
54
- strv = GLib::Strv.from %w(1 2 3)
55
- other = GLib::Strv.from %w(1 2)
56
-
57
- strv.wont_be :==, other
58
- end
59
- end
60
- end
@@ -1,12 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'gir_ffi_test_helper'
4
-
5
- describe GLib::Variant do
6
- describe '#get_string' do
7
- it 'returns just the contained string' do
8
- var = GLib::Variant.new_string('Foo')
9
- var.get_string.must_equal 'Foo'
10
- end
11
- end
12
- end
@@ -1,72 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'gir_ffi_test_helper'
4
-
5
- require 'ffi-gobject'
6
-
7
- GirFFI.setup :GIMarshallingTests
8
-
9
- describe GObject do
10
- describe '.type_init' do
11
- it 'does not raise an error' do
12
- GObject.type_init
13
- pass
14
- end
15
- end
16
-
17
- it 'has constants for the fundamental GTypes' do
18
- GObject::TYPE_INVALID.must_equal GObject.type_from_name('invalid')
19
- GObject.type_name(GObject::TYPE_INVALID).must_be_nil
20
-
21
- GObject.type_name(GObject::TYPE_NONE).must_equal 'void'
22
- GObject.type_name(GObject::TYPE_INTERFACE).must_equal 'GInterface'
23
- GObject.type_name(GObject::TYPE_CHAR).must_equal 'gchar'
24
- GObject.type_name(GObject::TYPE_UCHAR).must_equal 'guchar'
25
- GObject.type_name(GObject::TYPE_BOOLEAN).must_equal 'gboolean'
26
- GObject.type_name(GObject::TYPE_INT).must_equal 'gint'
27
- GObject.type_name(GObject::TYPE_UINT).must_equal 'guint'
28
- GObject.type_name(GObject::TYPE_LONG).must_equal 'glong'
29
- GObject.type_name(GObject::TYPE_ULONG).must_equal 'gulong'
30
- GObject.type_name(GObject::TYPE_INT64).must_equal 'gint64'
31
- GObject.type_name(GObject::TYPE_UINT64).must_equal 'guint64'
32
- GObject.type_name(GObject::TYPE_ENUM).must_equal 'GEnum'
33
- GObject.type_name(GObject::TYPE_FLAGS).must_equal 'GFlags'
34
- GObject.type_name(GObject::TYPE_FLOAT).must_equal 'gfloat'
35
- GObject.type_name(GObject::TYPE_DOUBLE).must_equal 'gdouble'
36
- GObject.type_name(GObject::TYPE_STRING).must_equal 'gchararray'
37
- GObject.type_name(GObject::TYPE_POINTER).must_equal 'gpointer'
38
- GObject.type_name(GObject::TYPE_BOXED).must_equal 'GBoxed'
39
- GObject.type_name(GObject::TYPE_PARAM).must_equal 'GParam'
40
- GObject.type_name(GObject::TYPE_OBJECT).must_equal 'GObject'
41
- GObject.type_name(GObject::TYPE_GTYPE).must_equal 'GType'
42
- GObject.type_name(GObject::TYPE_VARIANT).must_equal 'GVariant'
43
- GObject.type_name(GObject::TYPE_STRV).must_equal 'GStrv'
44
- GObject.type_name(GObject::TYPE_HASH_TABLE).must_equal 'GHashTable'
45
- end
46
-
47
- describe '::object_class_from_instance' do
48
- it 'returns a GObject::ObjectClass with the correct GType' do
49
- obj = GIMarshallingTests::OverridesObject.new
50
- object_class = GObject.object_class_from_instance obj
51
- gtype = object_class.g_type_class.g_type
52
-
53
- object_class.must_be_instance_of GObject::ObjectClass
54
- gtype.must_equal GIMarshallingTests::OverridesObject.gtype
55
- end
56
- end
57
-
58
- describe 'creating ParamSpecs' do
59
- describe '#param_spec_int' do
60
- it 'creates a GObject::ParamSpecInt' do
61
- spec = GObject.param_spec_int('foo', 'foo bar',
62
- 'The Foo Bar Property',
63
- 10, 20, 15,
64
- 3)
65
- spec.must_be_instance_of GObject::ParamSpecInt
66
- spec.struct[:minimum].must_equal 10
67
- spec.struct[:maximum].must_equal 20
68
- spec.get_default_value.must_equal 15
69
- end
70
- end
71
- end
72
- end
@@ -1,31 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'gir_ffi_test_helper'
4
-
5
- require 'ffi-gobject'
6
-
7
- describe GObject::ObjectClass do
8
- describe '#list_properties' do
9
- it "returns GIMarshallingTests::OverridesObject's properties" do
10
- obj = GIMarshallingTests::OverridesObject.new
11
- object_class = GObject.object_class_from_instance obj
12
-
13
- info = get_introspection_data 'GIMarshallingTests', 'OverridesObject'
14
- expected_props = info.properties.map(&:name)
15
- expected_props += info.parent.properties.map(&:name)
16
-
17
- props = object_class.list_properties
18
- prop_names = props.map(&:get_name)
19
-
20
- prop_names.sort.must_equal expected_props.sort
21
- end
22
- end
23
-
24
- describe '#gtype' do
25
- it 'returns the correct GType' do
26
- obj = GIMarshallingTests::OverridesObject.new
27
- object_class = GObject.object_class_from_instance obj
28
- object_class.gtype.must_equal GIMarshallingTests::OverridesObject.gtype
29
- end
30
- end
31
- end
@@ -1,140 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'gir_ffi_test_helper'
4
-
5
- require 'ffi-gobject'
6
- GirFFI.setup :GIMarshallingTests
7
-
8
- describe GObject::Object do
9
- describe '.new' do
10
- it 'is overridden to take only one argument' do
11
- GObject::Object.new({}).must_be_instance_of GObject::Object
12
- end
13
-
14
- it 'can be used to create objects with properties' do
15
- obj = GIMarshallingTests::SubObject.new(int: 13)
16
- obj.int.must_equal 13
17
- end
18
-
19
- it 'allows omission of the first argument' do
20
- GObject::Object.new.must_be_instance_of GObject::Object
21
- end
22
-
23
- it 'raises an error for properties that do not exist' do
24
- proc { GObject::Object.new(dog: 'bark') }.must_raise GirFFI::PropertyNotFoundError
25
- end
26
- end
27
-
28
- describe '#get_property' do
29
- it 'is overridden to have arity 1' do
30
- GObject::Object.instance_method('get_property').arity.must_equal 1
31
- end
32
-
33
- it 'raises an error for a property that does not exist' do
34
- instance = GObject::Object.new
35
- proc { instance.get_property 'foo-bar' }.must_raise GirFFI::PropertyNotFoundError
36
- end
37
- end
38
-
39
- describe '#get_property_extended' do
40
- it 'raises an error for a property that does not exist' do
41
- instance = GObject::Object.new
42
- proc { instance.get_property_extended 'foo-bar' }.
43
- must_raise GirFFI::PropertyNotFoundError
44
- end
45
- end
46
-
47
- describe '#set_property' do
48
- it 'raises an error for a property that does not exist' do
49
- instance = GObject::Object.new
50
- proc { instance.set_property 'foo-bar', 123 }.must_raise GirFFI::PropertyNotFoundError
51
- end
52
- end
53
-
54
- describe '#set_property_extended' do
55
- it 'raises an error for a property that does not exist' do
56
- instance = GObject::Object.new
57
- proc { instance.set_property_extended 'foo-bar', 123 }.
58
- must_raise GirFFI::PropertyNotFoundError
59
- end
60
- end
61
-
62
- describe 'automatic accessor methods' do
63
- class AccessorTest < GObject::Object
64
- def get_x
65
- @x
66
- end
67
-
68
- def set_x(val)
69
- @x = val
70
- end
71
- end
72
-
73
- subject { AccessorTest.new }
74
-
75
- it 'reads x by calling get_x' do
76
- subject.set_x(1)
77
- assert_equal 1, subject.x
78
- end
79
-
80
- it 'writes x by calling set_x' do
81
- subject.x = 2
82
- assert_equal 2, subject.x
83
- end
84
- end
85
-
86
- describe '#signal_connect' do
87
- subject { GObject::Object.new }
88
-
89
- it 'delegates to GObject' do
90
- expect(GObject).to receive(:signal_connect).with(subject, 'some-event', nil)
91
- subject.signal_connect('some-event') do
92
- nothing
93
- end
94
- end
95
-
96
- it 'delegates to GObject if an optional data argument is passed' do
97
- expect(GObject).to receive(:signal_connect).with(subject, 'some-event', 'data')
98
- subject.signal_connect('some-event', 'data') do
99
- nothing
100
- end
101
- end
102
- end
103
-
104
- describe '#signal_connect_after' do
105
- subject { GObject::Object.new }
106
-
107
- it 'delegates to GObject' do
108
- expect(GObject).to receive(:signal_connect_after).with(subject, 'some-event', nil)
109
- subject.signal_connect_after('some-event') do
110
- nothing
111
- end
112
- end
113
-
114
- it 'delegates to GObject if an optional data argument is passed' do
115
- expect(GObject).to receive(:signal_connect_after).with(subject, 'some-event', 'data')
116
- subject.signal_connect_after('some-event', 'data') do
117
- nothing
118
- end
119
- end
120
- end
121
-
122
- describe 'upon garbage collection' do
123
- it 'lowers the reference count' do
124
- skip 'cannot be reliably tested on JRuby and Rubinius' if jruby? || rubinius?
125
-
126
- ptr = GObject::Object.new.to_ptr
127
- object_ref_count(ptr).must_equal 1
128
-
129
- GC.start
130
- # Creating a new object is sometimes needed to trigger enough garbage collection.
131
- GObject::Object.new
132
- sleep 1
133
-
134
- GC.start
135
- GC.start
136
-
137
- object_ref_count(ptr).must_equal 0
138
- end
139
- end
140
- end