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,17 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'gir_ffi_test_helper'
4
-
5
- describe 'The generated Secret module' do
6
- describe 'Secret::Schema' do
7
- it 'has a working constructor' do
8
- begin
9
- GirFFI.setup :Secret
10
- rescue RuntimeError
11
- skip 'No GIR data for Secret available'
12
- end
13
- instance = Secret::Schema.new('foo', :none, 'bar' => :string)
14
- instance.must_be_instance_of Secret::Schema
15
- end
16
- end
17
- end
@@ -1,174 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'gir_ffi_test_helper'
4
-
5
- GirFFI.setup :Utility
6
-
7
- describe Utility do
8
- describe 'Utility::Buffer' do
9
- let(:instance) { Utility::Buffer.new }
10
-
11
- it 'has a writable field data' do
12
- instance.data.must_equal FFI::Pointer::NULL
13
- instance.data = FFI::Pointer.new 54_321
14
- instance.data.must_equal FFI::Pointer.new 54_321
15
- end
16
-
17
- it 'has a writable field length' do
18
- instance.length.must_equal 0
19
- instance.length = 42
20
- instance.length.must_equal 42
21
- end
22
- end
23
-
24
- describe 'Utility::Byte' do
25
- let(:instance) { Utility::Byte.new }
26
-
27
- it 'has a writable field value' do
28
- instance.value.must_equal 0
29
- instance.value = 42
30
- instance.value.must_equal 42
31
- end
32
-
33
- it 'has a writable field first_nibble' do
34
- skip 'This field is not exposed in the GIR'
35
- instance.value = 0xAB
36
- instance.first_nibble.must_equal 0xA
37
- instance.first_nibble = 0x4
38
- instance.value.must_equal 0x4B
39
- end
40
-
41
- it 'has a writable field second_nibble' do
42
- skip 'This field is not exposed in the GIR'
43
- instance.value = 0xAB
44
- instance.second_nibble.must_equal 0xB
45
- instance.second_nibble = 0x4
46
- instance.value.must_equal 0xA4
47
- end
48
- end
49
-
50
- describe 'Utility::EnumType' do
51
- it 'has the member :a' do
52
- Utility::EnumType[:a].must_equal 0
53
- end
54
-
55
- it 'has the member :b' do
56
- Utility::EnumType[:b].must_equal 1
57
- end
58
-
59
- it 'has the member :c' do
60
- Utility::EnumType[:c].must_equal 2
61
- end
62
- end
63
-
64
- describe 'Utility::FlagType' do
65
- it 'has the member :a' do
66
- Utility::FlagType[:a].must_equal 1
67
- end
68
-
69
- it 'has the member :b' do
70
- Utility::FlagType[:b].must_equal 2
71
- end
72
-
73
- it 'has the member :c' do
74
- Utility::FlagType[:c].must_equal 4
75
- end
76
- end
77
-
78
- describe 'Utility::Object' do
79
- let(:instance) { Utility::Object.new }
80
-
81
- it 'has a working method #watch_dir' do
82
- # This method doesn't actually do anything
83
- instance.watch_dir('/') {}
84
- pass
85
- end
86
- end
87
-
88
- describe 'Utility::Struct' do
89
- let(:instance) { Utility::Struct.new }
90
-
91
- it 'has a writable field field' do
92
- instance.field.must_equal 0
93
- instance.field = 42
94
- instance.field.must_equal 42
95
- end
96
-
97
- it 'has a writable field bitfield1' do
98
- skip 'Bitfield bit width is not implemented yet'
99
- instance.bitfield1.must_equal 0
100
- instance.bitfield1 = 15
101
- instance.bitfield1.must_equal 7
102
- end
103
-
104
- it 'has a writable field bitfield2' do
105
- skip 'Bitfield bit width is not implemented yet'
106
- instance.bitfield2.must_equal 0
107
- instance.bitfield2 = 15
108
- instance.bitfield2.must_equal 3
109
- end
110
-
111
- it 'has a writable field data' do
112
- instance.data.to_a.must_equal [0] * 16
113
- end
114
- end
115
-
116
- describe 'Utility::TaggedValue' do
117
- let(:instance) { Utility::TaggedValue.new }
118
-
119
- it 'has a writable field tag' do
120
- instance.tag.must_equal 0
121
- instance.tag = 42
122
- instance.tag.must_equal 42
123
- end
124
-
125
- it 'has a writable field v_pointer' do
126
- skip 'This field is not exposed in the GIR'
127
- instance.v_pointer.must_equal FFI::Pointer::NULL
128
- instance.v_pointer = FFI::Pointer.new(4321)
129
- instance.v_pointer.must_equal FFI::Pointer.new(4321)
130
- end
131
-
132
- it 'has a writable field v_real' do
133
- skip 'This field is not exposed in the GIR'
134
- instance.v_real.must_equal 0.0
135
- instance.v_real = 42.23
136
- instance.v_real.must_equal 42.23
137
- end
138
-
139
- it 'has a writable field v_integer' do
140
- skip 'This field is not exposed in the GIR'
141
- instance.v_integer.must_equal 0
142
- instance.v_integer = 42
143
- instance.v_integer.must_equal 42
144
- end
145
- end
146
-
147
- describe 'Utility::Union' do
148
- let(:instance) { Utility::Union.new }
149
-
150
- it 'has a writable field pointer' do
151
- instance.pointer.must_be_nil
152
- instance.pointer = 'hello 42'
153
- instance.pointer.must_equal 'hello 42'
154
- end
155
-
156
- it 'has a writable field integer' do
157
- instance.integer.must_equal 0
158
- instance.integer = 42
159
- instance.integer.must_equal 42
160
- end
161
-
162
- it 'has a writable field real' do
163
- instance.real.must_equal 0.0
164
- instance.real = 42.23
165
- instance.real.must_equal 42.23
166
- end
167
- end
168
-
169
- it 'has a working function #dir_foreach' do
170
- # This method doesn't actually do anything
171
- result = Utility.dir_foreach('/') {}
172
- result.must_be_nil
173
- end
174
- end
@@ -1,49 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'gir_ffi_test_helper'
4
-
5
- describe 'The generated WarnLib module' do
6
- before do
7
- begin
8
- GirFFI.setup :WarnLib
9
- rescue RuntimeError
10
- skip 'WarnLib GIR not available'
11
- end
12
- end
13
-
14
- describe 'WarnLib::Whatever' do
15
- let(:derived_klass) do
16
- Object.const_set("DerivedClass#{Sequence.next}", Class.new(GObject::Object))
17
- end
18
-
19
- before do
20
- @result = nil
21
- derived_klass.class_eval { include WarnLib::Whatever }
22
- GirFFI.define_type derived_klass do |info|
23
- info.install_vfunc_implementation :do_boo, proc { |_obj, x, _y| @result = "boo#{x}" }
24
- info.install_vfunc_implementation :do_moo, proc { |_obj, x, _y| @result = "moo#{x}" }
25
- end
26
- end
27
-
28
- let(:instance) { derived_klass.new }
29
-
30
- it 'has a working method #do_boo' do
31
- instance.do_boo 42, nil
32
- @result.must_equal 'boo42'
33
- end
34
-
35
- it 'has a working method #do_moo' do
36
- instance.do_moo 23, nil
37
- @result.must_equal 'moo23'
38
- end
39
- end
40
-
41
- it 'has a working function #throw_unpaired' do
42
- proc { WarnLib.throw_unpaired }.must_raise GirFFI::GLibError
43
- end
44
-
45
- it 'has a working function #unpaired_error_quark' do
46
- result = WarnLib.unpaired_error_quark
47
- GLib.quark_to_string(result).must_equal 'warnlib-unpaired-error'
48
- end
49
- end
@@ -1,34 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'gir_ffi_test_helper'
4
-
5
- # Tests how methods are looked up and generated on first use.
6
- describe 'Looking up methods' do
7
- before do
8
- save_module :Regress
9
- GirFFI.setup :Regress
10
- end
11
-
12
- describe 'an instance method' do
13
- it 'is found from a subclass' do
14
- assert_defines_instance_method Regress::TestObj, :forced_method
15
- refute_defines_instance_method Regress::TestSubObj, :forced_method
16
-
17
- sub_object = Regress::TestSubObj.new
18
- sub_object.forced_method
19
- end
20
- end
21
-
22
- describe 'a class method' do
23
- it 'is found from a subclass' do
24
- assert_defines_singleton_method Regress::TestObj, :static_method
25
- refute_defines_singleton_method Regress::TestSubObj, :static_method
26
-
27
- Regress::TestSubObj.static_method 42
28
- end
29
- end
30
-
31
- after do
32
- restore_module :Regress
33
- end
34
- end
@@ -1,52 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'base_test_helper'
4
-
5
- require 'ffi-gobject_introspection'
6
-
7
- GObjectIntrospection::IRepository.prepend_search_path File.join(File.dirname(__FILE__), 'lib')
8
-
9
- module LocalSharedLibrary
10
- def shared_library(namespace)
11
- case namespace
12
- when 'Everything', 'GIMarshallingTests', 'Regress', 'Utility', 'WarnLib'
13
- File.join(File.dirname(__FILE__), 'lib', "lib#{namespace.downcase}.so")
14
- else
15
- super
16
- end
17
- end
18
- end
19
-
20
- GObjectIntrospection::IRepository.prepend LocalSharedLibrary
21
-
22
- module IntrospectionTestExtensions
23
- module_function
24
-
25
- def get_introspection_data(namespace, name)
26
- gir = GObjectIntrospection::IRepository.default
27
- gir.require namespace, nil
28
- gir.find_by_name namespace, name
29
- end
30
-
31
- def get_field_introspection_data(namespace, klass, name)
32
- get_introspection_data(namespace, klass).find_field name
33
- end
34
-
35
- def get_method_introspection_data(namespace, klass, name)
36
- get_introspection_data(namespace, klass).find_method name
37
- end
38
-
39
- def get_property_introspection_data(namespace, klass, name)
40
- get_introspection_data(namespace, klass).find_property name
41
- end
42
-
43
- def get_signal_introspection_data(namespace, klass, name)
44
- get_introspection_data(namespace, klass).find_signal name
45
- end
46
-
47
- def get_vfunc_introspection_data(namespace, klass, name)
48
- get_introspection_data(namespace, klass).find_vfunc name
49
- end
50
- end
51
-
52
- Minitest::Test.send :include, IntrospectionTestExtensions
@@ -1,110 +0,0 @@
1
- ACLOCAL_AMFLAGS = -I m4
2
- AUTOMAKE_OPTIONS = 1.7
3
-
4
- # We need to build a shared library, which can be dlopened
5
- # it does not work with noinst_LTLIBRARIES
6
- testlib_LTLIBRARIES = \
7
- libeverything.la \
8
- libgimarshallingtests.la libregress.la libutility.la libwarnlib.la
9
-
10
- testlibdir = $(prefix)/unused
11
- GI_TESTDIR = $(GI_DATADIR)/tests
12
- install-testlibLTLIBRARIES: # prevent it from being installed
13
-
14
- libeverything_la_SOURCES = $(GI_DATADIR)/tests/everything.c $(GI_DATADIR)/tests/everything.h
15
- libeverything_la_CFLAGS = $(GLIB_CFLAGS)
16
- libeverything_la_LDFLAGS = -module -avoid-version
17
-
18
- libgimarshallingtests_la_SOURCES = $(GI_DATADIR)/tests/gimarshallingtests.c $(GI_DATADIR)/tests/gimarshallingtests.h
19
- libgimarshallingtests_la_CFLAGS = $(GIO_CFLAGS)
20
- libgimarshallingtests_la_LDFLAGS = -module -avoid-version
21
-
22
- libregress_la_SOURCES = $(GI_TESTDIR)/regress.c $(GI_TESTDIR)/regress.h
23
-
24
- if HAVE_EXTRA_TEST_FILES
25
- libregress_la_SOURCES += \
26
- $(GI_TESTDIR)/annotation.c $(GI_TESTDIR)/annotation.h \
27
- $(GI_TESTDIR)/foo.c $(GI_TESTDIR)/foo.h \
28
- $(GI_TESTDIR)/drawable.c $(GI_TESTDIR)/drawable.h
29
- endif
30
-
31
- libregress_la_CFLAGS = $(GIO_CFLAGS) $(CAIRO_CFLAGS)
32
- libregress_la_LDFLAGS = -module -avoid-version $(GIO_LIBS) $(CAIRO_LIBS)
33
-
34
- if HAVE_EXTRA_TEST_FILES
35
- libutility_la_SOURCES = $(GI_DATADIR)/tests/utility.c $(GI_DATADIR)/tests/utility.h
36
- libutility_la_CFLAGS = $(GLIB_CFLAGS)
37
- libutility_la_LDFLAGS = -module -avoid-version
38
-
39
- libwarnlib_la_SOURCES = $(GI_DATADIR)/tests/warnlib.c $(GI_DATADIR)/tests/warnlib.h
40
- libwarnlib_la_CFLAGS = $(GIO_CFLAGS)
41
- libwarnlib_la_LDFLAGS = -module -avoid-version
42
- endif
43
-
44
- GIRS = Everything-1.0.gir GIMarshallingTests-1.0.gir Regress-1.0.gir
45
-
46
- Everything-1.0.gir: libeverything.la
47
- $(AM_V_GEN) g-ir-scanner --include=GLib-2.0 \
48
- --namespace=$(@:-1.0.gir=) --nsversion=1.0 \
49
- --warn-all --warn-error \
50
- --library=$< --libtool="$(top_builddir)/libtool" \
51
- --output $@ $(libeverything_la_SOURCES)
52
- Everything-1.0.typelib: Everything-1.0.gir
53
- $(AM_V_GEN) g-ir-compiler $< -o $@
54
-
55
- GIMarshallingTests-1.0.gir: libgimarshallingtests.la
56
- $(AM_V_GEN) g-ir-scanner --include=Gio-2.0 \
57
- --namespace=GIMarshallingTests --nsversion=1.0 \
58
- --symbol-prefix=gi_marshalling_tests \
59
- --warn-all --warn-error \
60
- --library=libgimarshallingtests.la \
61
- --libtool="$(top_builddir)/libtool" \
62
- --output $@ \
63
- $(libgimarshallingtests_la_SOURCES)
64
- GIMarshallingTests-1.0.typelib: GIMarshallingTests-1.0.gir
65
- $(AM_V_GEN) g-ir-compiler $< -o $@
66
-
67
- regress_SCANNER_INCLUDES= --include=cairo-1.0 --include=Gio-2.0
68
-
69
- Regress-1.0.gir: libregress.la
70
- $(AM_V_GEN) g-ir-scanner $(regress_SCANNER_INCLUDES) \
71
- --namespace=Regress --nsversion=1.0 --pkg=cairo-gobject \
72
- --warn-all --warn-error \
73
- --library=libregress.la \
74
- --libtool="$(top_builddir)/libtool" \
75
- --output $@ \
76
- $(libregress_la_SOURCES)
77
- Regress-1.0.typelib: Regress-1.0.gir
78
- $(AM_V_GEN) g-ir-compiler --includedir=. $< -o $@
79
-
80
- if HAVE_EXTRA_TEST_FILES
81
-
82
- GIRS += Utility-1.0.gir WarnLib-1.0.gir
83
- Regress-1.0.gir: Utility-1.0.gir
84
- regress_SCANNER_INCLUDES += --include-uninstalled=Utility-1.0.gir
85
-
86
- Utility-1.0.gir: libutility.la
87
- $(AM_V_GEN) g-ir-scanner --include=GLib-2.0 --include=GObject-2.0 \
88
- --namespace=$(@:-1.0.gir=) --nsversion=1.0 \
89
- --warn-all --warn-error \
90
- --library=$< --libtool="$(top_builddir)/libtool" \
91
- --output $@ $(libutility_la_SOURCES)
92
- Utility-1.0.typelib: Utility-1.0.gir
93
- $(AM_V_GEN) g-ir-compiler $< -o $@
94
-
95
- WarnLib-1.0.gir: libwarnlib.la
96
- $(AM_V_GEN) g-ir-scanner --include=Gio-2.0 \
97
- --namespace=$(@:-1.0.gir=) --nsversion=1.0 \
98
- --symbol-prefix=warnlib \
99
- --warn-all \
100
- --library=$< --libtool="$(top_builddir)/libtool" \
101
- --output $@ $(libwarnlib_la_SOURCES)
102
- WarnLib-1.0.typelib: WarnLib-1.0.gir
103
- $(AM_V_GEN) g-ir-compiler $< -o $@
104
-
105
- endif
106
-
107
- .la.so:
108
- test -L $@ || $(LN_S) .libs/$@ $@
109
-
110
- all: $(testlib_LTLIBRARIES:.la=.so) $(GIRS:.gir=.typelib)
@@ -1,4 +0,0 @@
1
- #!/bin/sh
2
- # Run this to generate all the initial makefiles, etc.
3
-
4
- autoreconf -ivf