gir_ffi 0.15.1 → 0.15.6

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 (190) hide show
  1. checksums.yaml +4 -4
  2. data/Changelog.md +42 -0
  3. data/README.md +10 -10
  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 +8 -3
  8. data/lib/ffi-glib/byte_array.rb +2 -1
  9. data/lib/ffi-glib/container_class_methods.rb +1 -3
  10. data/lib/ffi-glib/destroy_notify.rb +2 -2
  11. data/lib/ffi-glib/hash_table.rb +1 -2
  12. data/lib/ffi-glib/list.rb +11 -5
  13. data/lib/ffi-glib/list_methods.rb +12 -0
  14. data/lib/ffi-glib/s_list.rb +10 -4
  15. data/lib/ffi-gobject.rb +2 -5
  16. data/lib/ffi-gobject/object.rb +102 -92
  17. data/lib/ffi-gobject/object_class.rb +1 -1
  18. data/lib/ffi-gobject/ruby_closure.rb +1 -1
  19. data/lib/ffi-gobject/value.rb +108 -117
  20. data/lib/ffi-gobject_introspection/i_base_info.rb +35 -27
  21. data/lib/ffi-gobject_introspection/lib.rb +1 -1
  22. data/lib/gir_ffi-base/gobject/lib.rb +4 -0
  23. data/lib/gir_ffi/array_element_convertor.rb +2 -3
  24. data/lib/gir_ffi/boxed_base.rb +13 -11
  25. data/lib/gir_ffi/builder.rb +3 -4
  26. data/lib/gir_ffi/builder_helper.rb +10 -2
  27. data/lib/gir_ffi/builders/base_argument_builder.rb +2 -2
  28. data/lib/gir_ffi/builders/base_method_builder.rb +1 -1
  29. data/lib/gir_ffi/builders/base_type_builder.rb +1 -1
  30. data/lib/gir_ffi/builders/callback_argument_builder.rb +2 -0
  31. data/lib/gir_ffi/builders/callback_builder.rb +25 -11
  32. data/lib/gir_ffi/builders/callback_return_value_builder.rb +4 -6
  33. data/lib/gir_ffi/builders/enum_builder.rb +9 -5
  34. data/lib/gir_ffi/builders/field_builder.rb +2 -1
  35. data/lib/gir_ffi/builders/function_builder.rb +1 -1
  36. data/lib/gir_ffi/builders/interface_builder.rb +3 -1
  37. data/lib/gir_ffi/builders/mapping_method_builder.rb +1 -1
  38. data/lib/gir_ffi/builders/marshalling_method_builder.rb +5 -2
  39. data/lib/gir_ffi/builders/method_template.rb +4 -4
  40. data/lib/gir_ffi/builders/module_builder.rb +4 -2
  41. data/lib/gir_ffi/builders/null_argument_builder.rb +0 -2
  42. data/lib/gir_ffi/builders/null_return_value_builder.rb +0 -2
  43. data/lib/gir_ffi/builders/object_builder.rb +18 -6
  44. data/lib/gir_ffi/builders/property_builder.rb +1 -2
  45. data/lib/gir_ffi/builders/signal_closure_builder.rb +3 -5
  46. data/lib/gir_ffi/builders/struct_builder.rb +34 -7
  47. data/lib/gir_ffi/builders/user_defined_builder.rb +8 -1
  48. data/lib/gir_ffi/builders/vfunc_argument_builder.rb +1 -1
  49. data/lib/gir_ffi/callback_base.rb +7 -8
  50. data/lib/gir_ffi/class_base.rb +1 -0
  51. data/lib/gir_ffi/core.rb +17 -2
  52. data/lib/gir_ffi/glib_error.rb +1 -2
  53. data/lib/gir_ffi/in_pointer.rb +7 -0
  54. data/lib/gir_ffi/object_base.rb +27 -0
  55. data/lib/gir_ffi/return_value_info.rb +1 -2
  56. data/lib/gir_ffi/struct_base.rb +1 -9
  57. data/lib/gir_ffi/struct_like_base.rb +9 -5
  58. data/lib/gir_ffi/type_map.rb +1 -0
  59. data/lib/gir_ffi/unintrospectable_type_info.rb +1 -1
  60. data/lib/gir_ffi/union_base.rb +1 -9
  61. data/lib/gir_ffi/user_defined_object_info.rb +3 -2
  62. data/lib/gir_ffi/version.rb +1 -1
  63. data/lib/gir_ffi/vfunc_implementation.rb +1 -0
  64. metadata +106 -143
  65. data/Gemfile +0 -14
  66. data/Rakefile +0 -9
  67. data/tasks/test.rake +0 -204
  68. data/test/base_test_helper.rb +0 -70
  69. data/test/ffi-glib/array_test.rb +0 -203
  70. data/test/ffi-glib/byte_array_test.rb +0 -28
  71. data/test/ffi-glib/bytes_test.rb +0 -61
  72. data/test/ffi-glib/closure_test.rb +0 -38
  73. data/test/ffi-glib/destroy_notify_test.rb +0 -18
  74. data/test/ffi-glib/hash_table_test.rb +0 -68
  75. data/test/ffi-glib/list_test.rb +0 -86
  76. data/test/ffi-glib/main_loop_test.rb +0 -53
  77. data/test/ffi-glib/ptr_array_test.rb +0 -112
  78. data/test/ffi-glib/ruby_closure_test.rb +0 -62
  79. data/test/ffi-glib/s_list_test.rb +0 -76
  80. data/test/ffi-glib/strv_test.rb +0 -60
  81. data/test/ffi-glib/variant_test.rb +0 -12
  82. data/test/ffi-gobject/gobject_test.rb +0 -76
  83. data/test/ffi-gobject/object_class_test.rb +0 -31
  84. data/test/ffi-gobject/object_test.rb +0 -122
  85. data/test/ffi-gobject/param_spec_test.rb +0 -32
  86. data/test/ffi-gobject/value_test.rb +0 -390
  87. data/test/ffi-gobject_introspection/gobject_type_init_test.rb +0 -26
  88. data/test/ffi-gobject_introspection/i_base_info_test.rb +0 -52
  89. data/test/ffi-gobject_introspection/i_constant_info_test.rb +0 -29
  90. data/test/ffi-gobject_introspection/i_enum_info_test.rb +0 -18
  91. data/test/ffi-gobject_introspection/i_function_info_test.rb +0 -6
  92. data/test/ffi-gobject_introspection/i_interface_info_test.rb +0 -23
  93. data/test/ffi-gobject_introspection/i_object_info_test.rb +0 -49
  94. data/test/ffi-gobject_introspection/i_property_info_test.rb +0 -47
  95. data/test/ffi-gobject_introspection/i_registered_type_info_test.rb +0 -27
  96. data/test/ffi-gobject_introspection/i_repository_test.rb +0 -81
  97. data/test/ffi-gobject_introspection/i_struct_info_test.rb +0 -23
  98. data/test/ffi-gobject_introspection/i_type_info_test.rb +0 -30
  99. data/test/ffi-gobject_introspection/i_union_info_test.rb +0 -17
  100. data/test/ffi-gobject_introspection/i_vfunc_info_test.rb +0 -41
  101. data/test/ffi-gobject_introspection/lib_test.rb +0 -13
  102. data/test/ffi-gobject_introspection/strv_test.rb +0 -46
  103. data/test/ffi-gobject_test.rb +0 -151
  104. data/test/gir_ffi/allocation_helper_test.rb +0 -36
  105. data/test/gir_ffi/arg_helper_test.rb +0 -139
  106. data/test/gir_ffi/boolean_test.rb +0 -43
  107. data/test/gir_ffi/boxed_base_test.rb +0 -65
  108. data/test/gir_ffi/builder_test.rb +0 -322
  109. data/test/gir_ffi/builders/argument_builder_test.rb +0 -651
  110. data/test/gir_ffi/builders/base_argument_builder_test.rb +0 -6
  111. data/test/gir_ffi/builders/callback_argument_builder_test.rb +0 -126
  112. data/test/gir_ffi/builders/callback_builder_test.rb +0 -117
  113. data/test/gir_ffi/builders/callback_return_value_builder_test.rb +0 -81
  114. data/test/gir_ffi/builders/constant_builder_test.rb +0 -6
  115. data/test/gir_ffi/builders/constructor_builder_test.rb +0 -37
  116. data/test/gir_ffi/builders/enum_builder_test.rb +0 -23
  117. data/test/gir_ffi/builders/field_builder_test.rb +0 -134
  118. data/test/gir_ffi/builders/function_builder_test.rb +0 -550
  119. data/test/gir_ffi/builders/initializer_builder_test.rb +0 -54
  120. data/test/gir_ffi/builders/interface_builder_test.rb +0 -32
  121. data/test/gir_ffi/builders/module_builder_test.rb +0 -43
  122. data/test/gir_ffi/builders/object_builder_test.rb +0 -98
  123. data/test/gir_ffi/builders/property_builder_test.rb +0 -158
  124. data/test/gir_ffi/builders/registered_type_builder_test.rb +0 -54
  125. data/test/gir_ffi/builders/return_value_builder_test.rb +0 -433
  126. data/test/gir_ffi/builders/signal_closure_builder_test.rb +0 -197
  127. data/test/gir_ffi/builders/struct_builder_test.rb +0 -93
  128. data/test/gir_ffi/builders/unintrospectable_boxed_builder_test.rb +0 -29
  129. data/test/gir_ffi/builders/unintrospectable_builder_test.rb +0 -84
  130. data/test/gir_ffi/builders/union_builder_test.rb +0 -28
  131. data/test/gir_ffi/builders/user_defined_builder_test.rb +0 -524
  132. data/test/gir_ffi/builders/vfunc_argument_builder_test.rb +0 -101
  133. data/test/gir_ffi/builders/vfunc_builder_test.rb +0 -241
  134. data/test/gir_ffi/callback_base_test.rb +0 -22
  135. data/test/gir_ffi/class_base_test.rb +0 -166
  136. data/test/gir_ffi/core_test.rb +0 -98
  137. data/test/gir_ffi/enum_base_test.rb +0 -43
  138. data/test/gir_ffi/error_type_info_test.rb +0 -50
  139. data/test/gir_ffi/ffi_ext/pointer_test.rb +0 -20
  140. data/test/gir_ffi/g_type_test.rb +0 -31
  141. data/test/gir_ffi/in_pointer_test.rb +0 -203
  142. data/test/gir_ffi/info_ext/i_callable_info_test.rb +0 -26
  143. data/test/gir_ffi/info_ext/i_callback_info_test.rb +0 -21
  144. data/test/gir_ffi/info_ext/i_field_info_test.rb +0 -37
  145. data/test/gir_ffi/info_ext/i_function_info_test.rb +0 -74
  146. data/test/gir_ffi/info_ext/i_signal_info_test.rb +0 -32
  147. data/test/gir_ffi/info_ext/i_type_info_test.rb +0 -711
  148. data/test/gir_ffi/info_ext/i_unresolved_info_test.rb +0 -19
  149. data/test/gir_ffi/info_ext/safe_constant_name_test.rb +0 -26
  150. data/test/gir_ffi/info_ext/safe_function_name_test.rb +0 -26
  151. data/test/gir_ffi/interface_base_test.rb +0 -20
  152. data/test/gir_ffi/method_stubber_test.rb +0 -65
  153. data/test/gir_ffi/object_base_test.rb +0 -64
  154. data/test/gir_ffi/object_store_test.rb +0 -41
  155. data/test/gir_ffi/receiver_argument_info_test.rb +0 -33
  156. data/test/gir_ffi/sized_array_test.rb +0 -206
  157. data/test/gir_ffi/struct_base_test.rb +0 -23
  158. data/test/gir_ffi/struct_like_base_test.rb +0 -167
  159. data/test/gir_ffi/type_map_test.rb +0 -17
  160. data/test/gir_ffi/unintrospectable_type_info_test.rb +0 -121
  161. data/test/gir_ffi/union_base_test.rb +0 -23
  162. data/test/gir_ffi/user_defined_object_info_test.rb +0 -119
  163. data/test/gir_ffi/user_defined_property_info_test.rb +0 -39
  164. data/test/gir_ffi/variable_name_generator_test.rb +0 -18
  165. data/test/gir_ffi/version_test.rb +0 -9
  166. data/test/gir_ffi/zero_terminated_test.rb +0 -108
  167. data/test/gir_ffi_test_helper.rb +0 -84
  168. data/test/integration/callback_exceptions_test.rb +0 -59
  169. data/test/integration/derived_classes_test.rb +0 -53
  170. data/test/integration/generated_everything_test.rb +0 -452
  171. data/test/integration/generated_gimarshallingtests_test.rb +0 -3096
  172. data/test/integration/generated_gio_test.rb +0 -116
  173. data/test/integration/generated_glib_test.rb +0 -10
  174. data/test/integration/generated_gobject_test.rb +0 -124
  175. data/test/integration/generated_gst_test.rb +0 -38
  176. data/test/integration/generated_gtk_source_test.rb +0 -32
  177. data/test/integration/generated_gtop_test.rb +0 -22
  178. data/test/integration/generated_pango_ft2_test.rb +0 -17
  179. data/test/integration/generated_pango_test.rb +0 -24
  180. data/test/integration/generated_regress_test.rb +0 -4038
  181. data/test/integration/generated_secret_test.rb +0 -14
  182. data/test/integration/generated_utility_test.rb +0 -174
  183. data/test/integration/generated_warnlib_test.rb +0 -43
  184. data/test/integration/method_lookup_test.rb +0 -34
  185. data/test/introspection_test_helper.rb +0 -93
  186. data/test/lib/Makefile.am +0 -110
  187. data/test/lib/autogen.sh +0 -4
  188. data/test/lib/configure.ac +0 -34
  189. data/test/lib/m4/jhflags.m4 +0 -21
  190. data/test/minitest/stats_plugin.rb +0 -30
@@ -1,28 +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
-
23
- it "can be created from a string" do
24
- str = "cdba"
25
- ba = GLib::ByteArray.from str
26
- _(ba.to_string).must_equal str
27
- end
28
- end
@@ -1,61 +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 #size as an alias for #get_size" do
17
- bytes = GLib::Bytes.new [1, 2, 3]
18
- _(bytes.size).must_equal 3
19
- end
20
-
21
- it "has a working #get_data method" do
22
- bytes = GLib::Bytes.new [1, 2, 3]
23
- _(bytes.get_data.to_a).must_equal [1, 2, 3]
24
- end
25
-
26
- it "has a working #each method" do
27
- a = []
28
- bytes = GLib::Bytes.new [1, 2, 3]
29
- bytes.each do |v|
30
- a.unshift v
31
- end
32
- _(a).must_equal [3, 2, 1]
33
- end
34
-
35
- it "has a working #to_a method" do
36
- bytes = GLib::Bytes.new [1, 2, 3]
37
- _(bytes.to_a).must_equal [1, 2, 3]
38
- end
39
-
40
- describe ".from" do
41
- it "creates a GLib::Bytes object form an array of small integers" do
42
- bytes = GLib::Bytes.from [1, 2, 3]
43
- _(bytes).must_be_instance_of GLib::Bytes
44
- _(bytes.to_a).must_equal [1, 2, 3]
45
- end
46
-
47
- it "returns its argument if given a GLib::Bytes object" do
48
- bytes = GLib::Bytes.new [1, 2, 3]
49
- result = GLib::Bytes.from bytes
50
- assert result.equal?(bytes)
51
- end
52
-
53
- it "wraps its argument if given a pointer" do
54
- bytes = GLib::Bytes.new [1, 2, 3]
55
- ptr = bytes.to_ptr
56
- result = GLib::Bytes.from ptr
57
- _(result.to_a).must_equal [1, 2, 3]
58
- _(result.to_ptr).must_equal ptr
59
- end
60
- end
61
- 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