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,33 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'introspection_test_helper'
4
-
5
- describe GObjectIntrospection::IConstantInfo do
6
- describe 'for GLib::USEC_PER_SEC, a constant of type :gint32' do
7
- let(:constant_info) { get_introspection_data 'GLib', 'USEC_PER_SEC' }
8
-
9
- it 'returns :gint32 as its type' do
10
- assert_equal :gint32, constant_info.constant_type.tag
11
- end
12
-
13
- it 'returns 1_000_000 as its value' do
14
- assert_equal 1_000_000, constant_info.value
15
- end
16
- end
17
-
18
- describe 'for GLib::SOURCE_CONTINUE, a constant of type :gboolean' do
19
- let(:constant_info) { get_introspection_data 'GLib', 'SOURCE_CONTINUE' }
20
-
21
- before do
22
- skip unless constant_info
23
- end
24
-
25
- it 'returns :gboolean as its type' do
26
- assert_equal :gboolean, constant_info.constant_type.tag
27
- end
28
-
29
- it 'returns true as its value' do
30
- assert_equal true, constant_info.value
31
- end
32
- end
33
- end
@@ -1,18 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'introspection_test_helper'
4
-
5
- describe GObjectIntrospection::IEnumInfo do
6
- describe '#find_method' do
7
- before do
8
- gir = GObjectIntrospection::IRepository.default
9
- gir.require 'Regress', nil
10
- @info = gir.find_by_name 'Regress', 'TestEnum'
11
- end
12
-
13
- it 'finds a method by name' do
14
- result = @info.find_method('param')
15
- result.name.must_equal 'param'
16
- end
17
- end
18
- end
@@ -1,6 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'introspection_test_helper'
4
-
5
- describe GObjectIntrospection::IFunctionInfo do
6
- end
@@ -1,23 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'introspection_test_helper'
4
-
5
- describe GObjectIntrospection::IInterfaceInfo do
6
- let(:object_info) { get_introspection_data('GObject', 'TypePlugin') }
7
-
8
- describe '#find_method' do
9
- it 'finds a method by name string' do
10
- object_info.find_method('complete_interface_info').wont_be_nil
11
- end
12
-
13
- it 'finds a method by name symbol' do
14
- object_info.find_method(:complete_interface_info).wont_be_nil
15
- end
16
- end
17
-
18
- describe '#type_name' do
19
- it 'returns the correct name' do
20
- object_info.type_name.must_equal 'GTypePlugin'
21
- end
22
- end
23
- end
@@ -1,49 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'introspection_test_helper'
4
-
5
- describe GObjectIntrospection::IObjectInfo do
6
- let(:object_info) { get_introspection_data('GObject', 'Object') }
7
-
8
- describe '#find_vfunc' do
9
- it 'finds a vfunc by name string' do
10
- object_info.find_vfunc('finalize').wont_be_nil
11
- end
12
-
13
- it 'finds a vfunc by name symbol' do
14
- object_info.find_vfunc(:finalize).wont_be_nil
15
- end
16
- end
17
-
18
- describe '#find_method' do
19
- it 'finds a method by name string' do
20
- object_info.find_method('bind_property').wont_be_nil
21
- end
22
-
23
- it 'finds a method by name symbol' do
24
- object_info.find_method(:bind_property).wont_be_nil
25
- end
26
- end
27
-
28
- describe '#find_property' do
29
- let(:object_info) { get_introspection_data('GObject', 'Binding') }
30
-
31
- it 'finds a property by name string' do
32
- object_info.find_property('source-property').wont_be_nil
33
- end
34
-
35
- it 'finds a property by snake case string' do
36
- object_info.find_property('source_property').wont_be_nil
37
- end
38
-
39
- it 'finds a property by name symbol' do
40
- object_info.find_property(:source).wont_be_nil
41
- end
42
- end
43
-
44
- describe '#type_name' do
45
- it 'returns the correct name' do
46
- object_info.type_name.must_equal 'GObject'
47
- end
48
- end
49
- end
@@ -1,47 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'introspection_test_helper'
4
-
5
- describe GObjectIntrospection::IPropertyInfo do
6
- describe "for Regress::TestObj's 'double' property" do
7
- let(:property_info) { get_property_introspection_data 'Regress', 'TestObj', 'double' }
8
-
9
- it 'returns :gdouble as its type' do
10
- property_info.property_type.tag.must_equal :gdouble
11
- end
12
-
13
- it 'flags the property as readable' do
14
- property_info.readable?.must_equal true
15
- end
16
-
17
- it 'flags the property as writeable' do
18
- property_info.writeable?.must_equal true
19
- end
20
-
21
- it 'flags the property as not construct-only' do
22
- property_info.construct_only?.must_equal false
23
- end
24
- end
25
-
26
- describe "for GObject::Binding's 'target-property' property" do
27
- let(:property_info) do
28
- get_property_introspection_data 'GObject', 'Binding', 'target-property'
29
- end
30
-
31
- it 'returns :utf8 as its type' do
32
- property_info.property_type.tag.must_equal :utf8
33
- end
34
-
35
- it 'flags the property as readable' do
36
- property_info.readable?.must_equal true
37
- end
38
-
39
- it 'flags the property as writeable' do
40
- property_info.writeable?.must_equal true
41
- end
42
-
43
- it 'flags the property as construct-only' do
44
- property_info.construct_only?.must_equal true
45
- end
46
- end
47
- end
@@ -1,27 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'introspection_test_helper'
4
-
5
- describe GObjectIntrospection::IRegisteredTypeInfo do
6
- describe '#get_type_name' do
7
- describe 'for an interface' do
8
- let(:registered_type_info) do
9
- get_introspection_data('GIMarshallingTests', 'Interface')
10
- end
11
-
12
- it 'returns interface name' do
13
- registered_type_info.type_name.must_equal 'GIMarshallingTestsInterface'
14
- end
15
- end
16
-
17
- describe 'for a type that is not an interface' do
18
- let(:registered_type_info) do
19
- get_introspection_data('GIMarshallingTests', 'Enum')
20
- end
21
-
22
- it 'returns nil' do
23
- registered_type_info.type_name.must_be_nil
24
- end
25
- end
26
- end
27
- end
@@ -1,81 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'introspection_test_helper'
4
-
5
- describe GObjectIntrospection::IRepository do
6
- let(:gir) { GObjectIntrospection::IRepository.default }
7
-
8
- describe 'an instance' do
9
- it 'is not created by calling new()' do
10
- assert_raises NoMethodError do
11
- GObjectIntrospection::IRepository.new
12
- end
13
- end
14
-
15
- it 'is created by calling default()' do
16
- assert_kind_of GObjectIntrospection::IRepository, gir
17
- end
18
-
19
- it 'is a singleton' do
20
- gir2 = GObjectIntrospection::IRepository.default
21
- assert_equal gir, gir2
22
- end
23
- end
24
-
25
- describe '#require' do
26
- it "raises an error if the namespace doesn't exist" do
27
- assert_raises RuntimeError do
28
- gir.require 'VeryUnlikelyGObjectNamespaceName', nil
29
- end
30
- end
31
-
32
- it 'allows version to be nil' do
33
- gir.require 'GObject', nil
34
- pass
35
- end
36
-
37
- it 'allows version to be left out' do
38
- gir.require 'GObject'
39
- pass
40
- end
41
- end
42
-
43
- describe '#find_by_gtype' do
44
- it 'raises an error if 0 is passed as the gtype' do
45
- proc { gir.find_by_gtype 0 }.must_raise ArgumentError
46
- end
47
- end
48
-
49
- describe '#n_infos' do
50
- it 'yields more than one object for the GObject namespace' do
51
- gir.require 'GObject', '2.0'
52
- assert_operator gir.n_infos('GObject'), :>, 0
53
- end
54
- end
55
-
56
- describe '#info' do
57
- it 'yields IBaseInfo objects' do
58
- gir.require 'GObject', '2.0'
59
- assert_kind_of GObjectIntrospection::IBaseInfo, gir.info('GObject', 0)
60
- end
61
- end
62
-
63
- describe '#dependencies' do
64
- it 'returns a list of dependencies of the given namespace' do
65
- gir.require 'GObject', '2.0'
66
- result = gir.dependencies('GObject')
67
- result.must_equal ['GLib-2.0']
68
- end
69
-
70
- it 'passes its struct pointer to the c function just in case' do
71
- gir.require 'GObject', '2.0'
72
- allow(GObjectIntrospection::Lib).to receive(:g_irepository_get_dependencies).
73
- and_call_original
74
-
75
- gir.dependencies('GObject')
76
-
77
- expect(GObjectIntrospection::Lib).to have_received(:g_irepository_get_dependencies).
78
- with(gir, 'GObject')
79
- end
80
- end
81
- end
@@ -1,23 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'introspection_test_helper'
4
-
5
- describe GObjectIntrospection::IStructInfo do
6
- let(:object_info) { get_introspection_data('GObject', 'Closure') }
7
-
8
- describe '#find_method' do
9
- it 'finds a method by name string' do
10
- object_info.find_method('new_simple').wont_be_nil
11
- end
12
-
13
- it 'finds a method by name symbol' do
14
- object_info.find_method(:new_simple).wont_be_nil
15
- end
16
- end
17
-
18
- describe '#type_name' do
19
- it 'returns the correct name' do
20
- object_info.type_name.must_equal 'GClosure'
21
- end
22
- end
23
- end
@@ -1,33 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'introspection_test_helper'
4
-
5
- describe GObjectIntrospection::ITypeInfo do
6
- describe '#name?' do
7
- let(:object_info) { get_introspection_data('GIMarshallingTests', 'Object') }
8
- let(:vfunc_info) { object_info.find_vfunc('vfunc_array_out_parameter') }
9
- let(:arg_info) { vfunc_info.args[0] }
10
- let(:type_info) { arg_info.argument_type }
11
-
12
- it 'raises an error' do
13
- skip unless vfunc_info
14
- proc do
15
- type_info.name
16
- end.must_raise RuntimeError
17
- end
18
- end
19
-
20
- describe '#interface' do
21
- describe 'for unresolvable interface types' do
22
- let(:function_info) { get_introspection_data 'GObject', 'signal_set_va_marshaller' }
23
- let(:argument_info) { function_info.args.last }
24
- let(:type_info) { argument_info.argument_type }
25
-
26
- it 'returns an IUnresolvableInfo object' do
27
- result = type_info.interface
28
- result.info_type.must_equal :unresolved
29
- result.must_be_kind_of GObjectIntrospection::IUnresolvedInfo
30
- end
31
- end
32
- end
33
- end
@@ -1,17 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'introspection_test_helper'
4
-
5
- describe GObjectIntrospection::IUnionInfo do
6
- let(:object_info) { get_introspection_data('GLib', 'Mutex') }
7
-
8
- describe '#find_method' do
9
- it 'finds a method by name string' do
10
- object_info.find_method('clear').wont_be_nil
11
- end
12
-
13
- it 'finds a method by name symbol' do
14
- object_info.find_method(:clear).wont_be_nil
15
- end
16
- end
17
- end
@@ -1,41 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'introspection_test_helper'
4
-
5
- describe GObjectIntrospection::IVFuncInfo do
6
- let(:vfunc_info) do
7
- get_vfunc_introspection_data 'GIMarshallingTests', 'Object', 'method_int8_in'
8
- end
9
-
10
- let(:throwing_vfunc_info) do
11
- get_vfunc_introspection_data 'GIMarshallingTests', 'Object', 'vfunc_meth_with_err'
12
- end
13
-
14
- let(:vfunc_info_with_different_invoker) do
15
- get_vfunc_introspection_data 'Regress', 'TestObj', 'matrix'
16
- end
17
-
18
- describe '#throws?' do
19
- it 'returns false if there is no error argument' do
20
- vfunc_info.wont_be :throws?
21
- end
22
-
23
- it 'returns true if there is and error argument' do
24
- throwing_vfunc_info.must_be :throws?
25
- end
26
- end
27
-
28
- describe '#invoker' do
29
- it 'returns nil if no invoker method is present' do
30
- throwing_vfunc_info.invoker.must_be_nil
31
- end
32
-
33
- it 'returns info for the invoker method if present' do
34
- vfunc_info.invoker.name.must_equal 'method_int8_in'
35
- end
36
-
37
- it 'returns the correct invoker even if named differently' do
38
- vfunc_info_with_different_invoker.invoker.name.must_equal 'do_matrix'
39
- end
40
- end
41
- end
@@ -1,13 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'introspection_test_helper'
4
-
5
- describe GObjectIntrospection::Lib::GIArgument do
6
- describe 'its member :v_ssize' do
7
- it 'is signed' do
8
- gia = GObjectIntrospection::Lib::GIArgument.new
9
- gia[:v_int64] = -1
10
- assert_equal(-1, gia[:v_ssize])
11
- end
12
- end
13
- end
@@ -1,46 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'base_test_helper'
4
-
5
- describe GObjectIntrospection::Strv do
6
- it 'wraps a pointer' do
7
- strv = GObjectIntrospection::Strv.new :some_pointer
8
- assert_equal :some_pointer, strv.to_ptr
9
- end
10
-
11
- describe '::wrap' do
12
- it 'takes a pointer and returns a GObjectIntrospection::Strv wrapping it' do
13
- strv = GObjectIntrospection::Strv.wrap :some_pointer
14
- assert_instance_of GObjectIntrospection::Strv, strv
15
- assert_equal :some_pointer, strv.to_ptr
16
- end
17
- end
18
-
19
- describe '#each' do
20
- it 'yields each string element' do
21
- ary = %w(one two three)
22
- ptrs = ary.map { |a| FFI::MemoryPointer.from_string(a) }
23
- ptrs << nil
24
- block = FFI::MemoryPointer.new(:pointer, ptrs.length)
25
- block.write_array_of_pointer ptrs
26
-
27
- strv = GObjectIntrospection::Strv.new block
28
- arr = []
29
- strv.each do |str|
30
- arr << str
31
- end
32
- assert_equal %w(one two three), arr
33
- end
34
-
35
- it 'yields zero times for a Strv wrapping a null pointer' do
36
- strv = GObjectIntrospection::Strv.new FFI::Pointer.new(0)
37
- strv.each do |_str|
38
- flunk
39
- end
40
- end
41
- end
42
-
43
- it 'includes Enumerable' do
44
- GObjectIntrospection::Strv.must_include Enumerable
45
- end
46
- end