gir_ffi 0.15.3 → 0.15.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (183) hide show
  1. checksums.yaml +4 -4
  2. data/Changelog.md +15 -0
  3. data/README.md +5 -6
  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/destroy_notify.rb +2 -2
  10. data/lib/ffi-glib/hash_table.rb +1 -2
  11. data/lib/ffi-glib/list.rb +11 -5
  12. data/lib/ffi-glib/list_methods.rb +12 -0
  13. data/lib/ffi-glib/s_list.rb +10 -4
  14. data/lib/ffi-gobject.rb +0 -3
  15. data/lib/ffi-gobject/object.rb +77 -73
  16. data/lib/ffi-gobject/object_class.rb +1 -1
  17. data/lib/ffi-gobject/value.rb +107 -108
  18. data/lib/ffi-gobject_introspection/i_base_info.rb +20 -19
  19. data/lib/gir_ffi-base/gobject/lib.rb +4 -0
  20. data/lib/gir_ffi/array_element_convertor.rb +1 -2
  21. data/lib/gir_ffi/boxed_base.rb +1 -5
  22. data/lib/gir_ffi/builder.rb +1 -1
  23. data/lib/gir_ffi/builder_helper.rb +7 -4
  24. data/lib/gir_ffi/builders/base_argument_builder.rb +2 -2
  25. data/lib/gir_ffi/builders/base_method_builder.rb +1 -1
  26. data/lib/gir_ffi/builders/base_type_builder.rb +1 -1
  27. data/lib/gir_ffi/builders/callback_argument_builder.rb +2 -0
  28. data/lib/gir_ffi/builders/callback_builder.rb +14 -12
  29. data/lib/gir_ffi/builders/callback_return_value_builder.rb +4 -6
  30. data/lib/gir_ffi/builders/class_struct_builder.rb +24 -0
  31. data/lib/gir_ffi/builders/enum_builder.rb +3 -3
  32. data/lib/gir_ffi/builders/interface_builder.rb +3 -1
  33. data/lib/gir_ffi/builders/mapping_method_builder.rb +1 -1
  34. data/lib/gir_ffi/builders/marshalling_method_builder.rb +5 -2
  35. data/lib/gir_ffi/builders/method_template.rb +4 -4
  36. data/lib/gir_ffi/builders/null_argument_builder.rb +0 -2
  37. data/lib/gir_ffi/builders/null_return_value_builder.rb +0 -2
  38. data/lib/gir_ffi/builders/object_builder.rb +16 -6
  39. data/lib/gir_ffi/builders/property_builder.rb +1 -2
  40. data/lib/gir_ffi/builders/signal_closure_builder.rb +3 -5
  41. data/lib/gir_ffi/builders/struct_builder.rb +5 -5
  42. data/lib/gir_ffi/builders/user_defined_builder.rb +8 -1
  43. data/lib/gir_ffi/builders/vfunc_argument_builder.rb +1 -1
  44. data/lib/gir_ffi/callback_base.rb +3 -3
  45. data/lib/gir_ffi/core.rb +17 -2
  46. data/lib/gir_ffi/glib_error.rb +1 -2
  47. data/lib/gir_ffi/in_pointer.rb +7 -0
  48. data/lib/gir_ffi/object_base.rb +27 -0
  49. data/lib/gir_ffi/return_value_info.rb +1 -2
  50. data/lib/gir_ffi/struct_base.rb +1 -9
  51. data/lib/gir_ffi/struct_like_base.rb +9 -5
  52. data/lib/gir_ffi/unintrospectable_type_info.rb +1 -1
  53. data/lib/gir_ffi/union_base.rb +1 -9
  54. data/lib/gir_ffi/user_defined_object_info.rb +3 -2
  55. data/lib/gir_ffi/version.rb +1 -1
  56. data/lib/gir_ffi/vfunc_implementation.rb +1 -0
  57. metadata +86 -136
  58. data/Gemfile +0 -14
  59. data/Rakefile +0 -9
  60. data/tasks/test.rake +0 -204
  61. data/test/base_test_helper.rb +0 -70
  62. data/test/ffi-glib/array_test.rb +0 -203
  63. data/test/ffi-glib/byte_array_test.rb +0 -28
  64. data/test/ffi-glib/bytes_test.rb +0 -61
  65. data/test/ffi-glib/closure_test.rb +0 -38
  66. data/test/ffi-glib/destroy_notify_test.rb +0 -18
  67. data/test/ffi-glib/hash_table_test.rb +0 -68
  68. data/test/ffi-glib/list_test.rb +0 -86
  69. data/test/ffi-glib/main_loop_test.rb +0 -53
  70. data/test/ffi-glib/ptr_array_test.rb +0 -112
  71. data/test/ffi-glib/ruby_closure_test.rb +0 -62
  72. data/test/ffi-glib/s_list_test.rb +0 -76
  73. data/test/ffi-glib/strv_test.rb +0 -60
  74. data/test/ffi-glib/variant_test.rb +0 -12
  75. data/test/ffi-gobject/gobject_test.rb +0 -76
  76. data/test/ffi-gobject/object_class_test.rb +0 -31
  77. data/test/ffi-gobject/object_test.rb +0 -123
  78. data/test/ffi-gobject/param_spec_test.rb +0 -32
  79. data/test/ffi-gobject/value_test.rb +0 -390
  80. data/test/ffi-gobject_introspection/gobject_type_init_test.rb +0 -26
  81. data/test/ffi-gobject_introspection/i_base_info_test.rb +0 -52
  82. data/test/ffi-gobject_introspection/i_constant_info_test.rb +0 -29
  83. data/test/ffi-gobject_introspection/i_enum_info_test.rb +0 -18
  84. data/test/ffi-gobject_introspection/i_function_info_test.rb +0 -6
  85. data/test/ffi-gobject_introspection/i_interface_info_test.rb +0 -23
  86. data/test/ffi-gobject_introspection/i_object_info_test.rb +0 -49
  87. data/test/ffi-gobject_introspection/i_property_info_test.rb +0 -47
  88. data/test/ffi-gobject_introspection/i_registered_type_info_test.rb +0 -27
  89. data/test/ffi-gobject_introspection/i_repository_test.rb +0 -81
  90. data/test/ffi-gobject_introspection/i_struct_info_test.rb +0 -23
  91. data/test/ffi-gobject_introspection/i_type_info_test.rb +0 -30
  92. data/test/ffi-gobject_introspection/i_union_info_test.rb +0 -17
  93. data/test/ffi-gobject_introspection/i_vfunc_info_test.rb +0 -41
  94. data/test/ffi-gobject_introspection/lib_test.rb +0 -13
  95. data/test/ffi-gobject_introspection/strv_test.rb +0 -46
  96. data/test/ffi-gobject_test.rb +0 -153
  97. data/test/gir_ffi/allocation_helper_test.rb +0 -36
  98. data/test/gir_ffi/arg_helper_test.rb +0 -146
  99. data/test/gir_ffi/boolean_test.rb +0 -43
  100. data/test/gir_ffi/boxed_base_test.rb +0 -65
  101. data/test/gir_ffi/builder_test.rb +0 -168
  102. data/test/gir_ffi/builders/argument_builder_test.rb +0 -691
  103. data/test/gir_ffi/builders/base_argument_builder_test.rb +0 -6
  104. data/test/gir_ffi/builders/callback_argument_builder_test.rb +0 -130
  105. data/test/gir_ffi/builders/callback_builder_test.rb +0 -117
  106. data/test/gir_ffi/builders/callback_return_value_builder_test.rb +0 -84
  107. data/test/gir_ffi/builders/constant_builder_test.rb +0 -6
  108. data/test/gir_ffi/builders/constructor_builder_test.rb +0 -39
  109. data/test/gir_ffi/builders/enum_builder_test.rb +0 -23
  110. data/test/gir_ffi/builders/field_builder_test.rb +0 -140
  111. data/test/gir_ffi/builders/function_builder_test.rb +0 -570
  112. data/test/gir_ffi/builders/initializer_builder_test.rb +0 -56
  113. data/test/gir_ffi/builders/interface_builder_test.rb +0 -32
  114. data/test/gir_ffi/builders/module_builder_test.rb +0 -43
  115. data/test/gir_ffi/builders/object_builder_test.rb +0 -98
  116. data/test/gir_ffi/builders/property_builder_test.rb +0 -161
  117. data/test/gir_ffi/builders/registered_type_builder_test.rb +0 -54
  118. data/test/gir_ffi/builders/return_value_builder_test.rb +0 -444
  119. data/test/gir_ffi/builders/signal_closure_builder_test.rb +0 -199
  120. data/test/gir_ffi/builders/struct_builder_test.rb +0 -96
  121. data/test/gir_ffi/builders/unintrospectable_boxed_builder_test.rb +0 -29
  122. data/test/gir_ffi/builders/unintrospectable_builder_test.rb +0 -84
  123. data/test/gir_ffi/builders/union_builder_test.rb +0 -28
  124. data/test/gir_ffi/builders/user_defined_builder_test.rb +0 -528
  125. data/test/gir_ffi/builders/vfunc_argument_builder_test.rb +0 -107
  126. data/test/gir_ffi/builders/vfunc_builder_test.rb +0 -245
  127. data/test/gir_ffi/callback_base_test.rb +0 -22
  128. data/test/gir_ffi/class_base_test.rb +0 -171
  129. data/test/gir_ffi/core_test.rb +0 -99
  130. data/test/gir_ffi/enum_base_test.rb +0 -43
  131. data/test/gir_ffi/error_type_info_test.rb +0 -50
  132. data/test/gir_ffi/ffi_ext/pointer_test.rb +0 -22
  133. data/test/gir_ffi/g_type_test.rb +0 -31
  134. data/test/gir_ffi/in_pointer_test.rb +0 -203
  135. data/test/gir_ffi/info_ext/i_callable_info_test.rb +0 -26
  136. data/test/gir_ffi/info_ext/i_callback_info_test.rb +0 -22
  137. data/test/gir_ffi/info_ext/i_field_info_test.rb +0 -37
  138. data/test/gir_ffi/info_ext/i_function_info_test.rb +0 -74
  139. data/test/gir_ffi/info_ext/i_signal_info_test.rb +0 -32
  140. data/test/gir_ffi/info_ext/i_type_info_test.rb +0 -712
  141. data/test/gir_ffi/info_ext/i_unresolved_info_test.rb +0 -19
  142. data/test/gir_ffi/info_ext/safe_constant_name_test.rb +0 -26
  143. data/test/gir_ffi/info_ext/safe_function_name_test.rb +0 -26
  144. data/test/gir_ffi/interface_base_test.rb +0 -20
  145. data/test/gir_ffi/method_stubber_test.rb +0 -67
  146. data/test/gir_ffi/object_base_test.rb +0 -64
  147. data/test/gir_ffi/object_store_test.rb +0 -41
  148. data/test/gir_ffi/receiver_argument_info_test.rb +0 -33
  149. data/test/gir_ffi/sized_array_test.rb +0 -206
  150. data/test/gir_ffi/struct_base_test.rb +0 -23
  151. data/test/gir_ffi/struct_like_base_test.rb +0 -167
  152. data/test/gir_ffi/type_map_test.rb +0 -17
  153. data/test/gir_ffi/unintrospectable_type_info_test.rb +0 -121
  154. data/test/gir_ffi/union_base_test.rb +0 -23
  155. data/test/gir_ffi/user_defined_object_info_test.rb +0 -119
  156. data/test/gir_ffi/user_defined_property_info_test.rb +0 -39
  157. data/test/gir_ffi/variable_name_generator_test.rb +0 -18
  158. data/test/gir_ffi/version_test.rb +0 -9
  159. data/test/gir_ffi/zero_terminated_test.rb +0 -108
  160. data/test/gir_ffi_test_helper.rb +0 -84
  161. data/test/integration/callback_exceptions_test.rb +0 -59
  162. data/test/integration/derived_classes_test.rb +0 -54
  163. data/test/integration/generated_everything_test.rb +0 -453
  164. data/test/integration/generated_gimarshallingtests_test.rb +0 -3109
  165. data/test/integration/generated_gio_test.rb +0 -116
  166. data/test/integration/generated_glib_test.rb +0 -10
  167. data/test/integration/generated_gobject_test.rb +0 -124
  168. data/test/integration/generated_gst_test.rb +0 -38
  169. data/test/integration/generated_gtk_source_test.rb +0 -21
  170. data/test/integration/generated_gtop_test.rb +0 -22
  171. data/test/integration/generated_pango_ft2_test.rb +0 -17
  172. data/test/integration/generated_pango_test.rb +0 -24
  173. data/test/integration/generated_regress_test.rb +0 -4076
  174. data/test/integration/generated_secret_test.rb +0 -14
  175. data/test/integration/generated_utility_test.rb +0 -174
  176. data/test/integration/generated_warnlib_test.rb +0 -45
  177. data/test/integration/method_lookup_test.rb +0 -34
  178. data/test/introspection_test_helper.rb +0 -94
  179. data/test/lib/Makefile.am +0 -110
  180. data/test/lib/autogen.sh +0 -4
  181. data/test/lib/configure.ac +0 -34
  182. data/test/lib/m4/jhflags.m4 +0 -21
  183. data/test/minitest/stats_plugin.rb +0 -30
@@ -1,3109 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "gir_ffi_test_helper"
4
-
5
- require "gir_ffi"
6
-
7
- GirFFI.setup :GIMarshallingTests
8
-
9
- # Tests generated methods and functions in the GIMarshallingTests namespace.
10
- describe GIMarshallingTests do
11
- let(:derived_klass) do
12
- Object.const_set("DerivedClass#{Sequence.next}",
13
- Class.new(GIMarshallingTests::Object))
14
- end
15
-
16
- def make_derived_instance
17
- GirFFI.define_type derived_klass do |info|
18
- yield info if block_given?
19
- end
20
- derived_klass.new
21
- end
22
-
23
- describe "GIMarshallingTests::BoxedStruct" do
24
- let(:instance) { GIMarshallingTests::BoxedStruct.new }
25
-
26
- it "has a writable field long_" do
27
- instance.long_ = 42
28
- assert_equal 42, instance.long_
29
- instance.long_ = 43
30
- assert_equal 43, instance.long_
31
- end
32
-
33
- it "has a writable field string_" do
34
- instance.string_ = "foobar"
35
- _(instance.string_).must_equal "foobar"
36
- end
37
-
38
- it "has a writable field g_strv" do
39
- _(instance.g_strv).must_be :==, []
40
- instance.g_strv = %w(foo bar)
41
- _(instance.g_strv).must_be :==, %w(foo bar)
42
- end
43
-
44
- it "creates an instance using #new" do
45
- bx = GIMarshallingTests::BoxedStruct.new
46
- assert_instance_of GIMarshallingTests::BoxedStruct, bx
47
- _(bx.struct).must_be :owned?
48
- end
49
-
50
- it "has a working method #inv" do
51
- instance.long_ = 42
52
- instance.inv
53
- pass
54
- end
55
-
56
- it "has a working function #inout" do
57
- bx = GIMarshallingTests::BoxedStruct.new
58
- bx.long_ = 42
59
- _(bx.struct).must_be :owned?
60
-
61
- res = GIMarshallingTests::BoxedStruct.inout bx
62
- _(bx.struct).must_be :owned?
63
- _(res.struct).must_be :owned?
64
-
65
- assert_equal 0, res.long_
66
- end
67
-
68
- it "has a working function #out" do
69
- res = GIMarshallingTests::BoxedStruct.out
70
- _(res.struct).must_be :owned?
71
- assert_equal 42, res.long_
72
- end
73
-
74
- it "has a working function #returnv" do
75
- res = GIMarshallingTests::BoxedStruct.returnv
76
- _(res.struct).must_be :owned?
77
- assert_equal 42, res.long_
78
- _(res.g_strv).must_be :==, %w(0 1 2)
79
- end
80
- end
81
-
82
- it "has the constant CONSTANT_GERROR_CODE" do
83
- assert_equal 5, GIMarshallingTests::CONSTANT_GERROR_CODE
84
- end
85
-
86
- it "has the constant CONSTANT_GERROR_DEBUG_MESSAGE" do
87
- _(GIMarshallingTests::CONSTANT_GERROR_DEBUG_MESSAGE).must_equal(
88
- "we got an error, life is shit")
89
- end
90
-
91
- it "has the constant CONSTANT_GERROR_DOMAIN" do
92
- assert_equal "gi-marshalling-tests-gerror-domain",
93
- GIMarshallingTests::CONSTANT_GERROR_DOMAIN
94
- end
95
-
96
- it "has the constant CONSTANT_GERROR_MESSAGE" do
97
- assert_equal "gi-marshalling-tests-gerror-message",
98
- GIMarshallingTests::CONSTANT_GERROR_MESSAGE
99
- end
100
-
101
- it "has the constant CONSTANT_NUMBER" do
102
- assert_equal 42, GIMarshallingTests::CONSTANT_NUMBER
103
- end
104
-
105
- it "has the constant CONSTANT_UTF8" do
106
- assert_equal "const ♥ utf8", GIMarshallingTests::CONSTANT_UTF8
107
- end
108
-
109
- describe "GIMarshallingTests::Enum" do
110
- it "has the member :value1" do
111
- assert_equal 0, GIMarshallingTests::Enum[:value1]
112
- end
113
-
114
- it "has the member :value2" do
115
- assert_equal 1, GIMarshallingTests::Enum[:value2]
116
- end
117
-
118
- it "has the member :value3" do
119
- assert_equal 42, GIMarshallingTests::Enum[:value3]
120
- end
121
- end
122
-
123
- describe "GIMarshallingTests::Flags" do
124
- it "has the member :value1" do
125
- assert_equal 1, GIMarshallingTests::Flags[:value1]
126
- end
127
-
128
- it "has the member :value2" do
129
- assert_equal 2, GIMarshallingTests::Flags[:value2]
130
- end
131
-
132
- it "has the member :value3" do
133
- assert_equal 4, GIMarshallingTests::Flags[:value3]
134
- end
135
-
136
- it "has the member :mask" do
137
- assert_equal 3, GIMarshallingTests::Flags[:mask]
138
- end
139
-
140
- it "has the member :mask2" do
141
- assert_equal 3, GIMarshallingTests::Flags[:mask2]
142
- end
143
-
144
- it "has a working function #in" do
145
- GIMarshallingTests::Flags.in value2: true
146
- end
147
-
148
- it "has a working function #in_zero" do
149
- GIMarshallingTests::Flags.in_zero 0
150
- end
151
-
152
- it "has a working function #inout" do
153
- result = GIMarshallingTests::Flags.inout value2: true
154
- _(result).must_equal(value1: true)
155
- end
156
-
157
- it "has a working function #out" do
158
- result = GIMarshallingTests::Flags.out
159
- _(result).must_equal(value2: true)
160
- end
161
-
162
- it "has a working function #returnv" do
163
- result = GIMarshallingTests::Flags.returnv
164
- _(result).must_equal(value2: true)
165
- end
166
- end
167
-
168
- describe "GIMarshallingTests::GEnum" do
169
- it "has the member :value1" do
170
- assert_equal 0, GIMarshallingTests::GEnum[:value1]
171
- end
172
-
173
- it "has the member :value2" do
174
- assert_equal 1, GIMarshallingTests::GEnum[:value2]
175
- end
176
-
177
- it "has the member :value3" do
178
- assert_equal 42, GIMarshallingTests::GEnum[:value3]
179
- end
180
-
181
- it "has a working function #in" do
182
- GIMarshallingTests::GEnum.in :value3
183
- end
184
-
185
- it "has a working function #inout" do
186
- result = GIMarshallingTests::GEnum.inout :value3
187
- _(result).must_equal :value1
188
- end
189
-
190
- it "has a working function #out" do
191
- result = GIMarshallingTests::GEnum.out
192
- _(result).must_equal :value3
193
- end
194
-
195
- it "has a working function #returnv" do
196
- result = GIMarshallingTests::GEnum.returnv
197
- _(result).must_equal :value3
198
- end
199
- end
200
-
201
- describe "GIMarshallingTests::Interface" do
202
- it "has a working method #test_int8_in" do
203
- derived_klass.class_eval { include GIMarshallingTests::Interface }
204
- derived_instance = make_derived_instance do |info|
205
- info.install_vfunc_implementation :test_int8_in, proc { |obj, in_| obj.int = in_ }
206
- end
207
- derived_instance.test_int8_in 8
208
- _(derived_instance.int).must_equal 8
209
- end
210
- end
211
-
212
- describe "GIMarshallingTests::Interface2" do
213
- it "must be tested for clashes with Interface" do
214
- skip "Needs more work to determine desired behavior"
215
- end
216
- end
217
-
218
- describe "GIMarshallingTests::Interface3" do
219
- it "has a working method #test_variant_array_in" do
220
- derived_klass.class_eval { include GIMarshallingTests::Interface3 }
221
- derived_instance = make_derived_instance do |info|
222
- info.install_vfunc_implementation :test_variant_array_in, proc { |obj, in_|
223
- obj.int = in_.to_a.first.get_byte
224
- }
225
- end
226
- derived_instance.test_variant_array_in [GLib::Variant.new_byte(42)]
227
- _(derived_instance.int).must_equal 42
228
- end
229
- end
230
-
231
- describe "GIMarshallingTests::InterfaceImpl" do
232
- it "has a working method #get_as_interface" do
233
- obj = GIMarshallingTests::InterfaceImpl.new []
234
- result = obj.get_as_interface
235
- _(result).must_be_kind_of GIMarshallingTests::Interface
236
- end
237
- end
238
-
239
- describe "GIMarshallingTests::NestedStruct" do
240
- let(:instance) { GIMarshallingTests::NestedStruct.new }
241
- it "has a writable field simple_struct" do
242
- assert_instance_of GIMarshallingTests::SimpleStruct,
243
- instance.simple_struct
244
- new_struct = GIMarshallingTests::SimpleStruct.new
245
- new_struct.int8 = 42
246
- instance.simple_struct = new_struct
247
- _(instance.simple_struct.int8).must_equal 42
248
- end
249
- end
250
-
251
- describe "GIMarshallingTests::NoTypeFlags" do
252
- it "has the member :value1" do
253
- assert_equal 1, GIMarshallingTests::NoTypeFlags[:value1]
254
- end
255
- it "has the member :value2" do
256
- assert_equal 2, GIMarshallingTests::NoTypeFlags[:value2]
257
- end
258
- it "has the member :value3" do
259
- assert_equal 4, GIMarshallingTests::NoTypeFlags[:value3]
260
- end
261
- it "has the member :mask" do
262
- assert_equal 3, GIMarshallingTests::NoTypeFlags[:mask]
263
- end
264
- it "has the member :mask2" do
265
- assert_equal 3, GIMarshallingTests::NoTypeFlags[:mask2]
266
- end
267
- end
268
-
269
- describe "GIMarshallingTests::NotSimpleStruct" do
270
- let(:instance) { GIMarshallingTests::NotSimpleStruct.new }
271
-
272
- it "has a writable field pointer" do
273
- _(instance.pointer).must_be_nil
274
- nested = GIMarshallingTests::NestedStruct.new
275
- nested.simple_struct.int8 = 23
276
- instance.pointer = nested
277
- _(instance.pointer.simple_struct.int8).must_equal 23
278
- end
279
- end
280
-
281
- it "has the constant OVERRIDES_CONSTANT" do
282
- assert_equal 42, GIMarshallingTests::OVERRIDES_CONSTANT
283
- end
284
-
285
- describe "GIMarshallingTests::Object" do
286
- it "creates an instance using #new" do
287
- ob = GIMarshallingTests::Object.new 42
288
- assert_instance_of GIMarshallingTests::Object, ob
289
- assert_equal 42, ob.int
290
- end
291
-
292
- it "fails to create an instance using #new_fail" do
293
- _(proc { GIMarshallingTests::Object.new_fail 42 }).must_raise GirFFI::GLibError
294
- end
295
-
296
- it "has a working function #full_inout" do
297
- ob = GIMarshallingTests::Object.new 42
298
- _(object_ref_count(ob)).must_equal 1
299
-
300
- res = GIMarshallingTests::Object.full_inout ob
301
-
302
- _(object_ref_count(ob)).must_equal 1
303
- _(object_ref_count(res)).must_equal 1
304
-
305
- _(res).must_be_instance_of GIMarshallingTests::Object
306
- _(res.int).must_equal 0
307
- end
308
-
309
- it "has a working function #full_out" do
310
- res = GIMarshallingTests::Object.full_out
311
- _(res).must_be_instance_of GIMarshallingTests::Object
312
- _(object_ref_count(res)).must_equal 1
313
- end
314
-
315
- it "has a working function #full_return" do
316
- res = GIMarshallingTests::Object.full_return
317
- _(res).must_be_instance_of GIMarshallingTests::Object
318
- _(object_ref_count(res)).must_equal 1
319
- end
320
-
321
- it "has a working function #none_inout" do
322
- ob = GIMarshallingTests::Object.new 42
323
- _(object_ref_count(ob)).must_equal 1
324
-
325
- res = GIMarshallingTests::Object.none_inout ob
326
-
327
- _(object_ref_count(ob)).must_equal 1
328
- _(object_ref_count(res)).must_equal 2
329
-
330
- _(res).must_be_instance_of GIMarshallingTests::Object
331
- _(ob.int).must_equal 42
332
- _(res.int).must_equal 0
333
- end
334
-
335
- it "has a working function #none_out" do
336
- res = GIMarshallingTests::Object.none_out
337
- _(res).must_be_instance_of GIMarshallingTests::Object
338
- _(object_ref_count(res)).must_equal 2
339
- end
340
-
341
- it "has a working function #none_return" do
342
- res = GIMarshallingTests::Object.none_return
343
- _(res).must_be_instance_of GIMarshallingTests::Object
344
- _(object_ref_count(res)).must_equal 2
345
- end
346
-
347
- it "has a working function #static_method" do
348
- GIMarshallingTests::Object.static_method
349
- pass
350
- end
351
-
352
- let(:instance) { GIMarshallingTests::Object.new 42 }
353
-
354
- it "has a working method #call_vfunc_with_callback" do
355
- cb = nil
356
- user_data = nil
357
- result = nil
358
-
359
- derived_instance = make_derived_instance do |info|
360
- info.install_vfunc_implementation(
361
- :vfunc_with_callback,
362
- proc { |_obj, callback, callback_data|
363
- cb = callback
364
- user_data = callback_data.address
365
- result = callback.call(42, callback_data)
366
- })
367
- end
368
- derived_instance.call_vfunc_with_callback
369
-
370
- _(user_data).must_equal 0xdeadbeef
371
- # TODO: Change implementation of CallbackBase so that this becomes an
372
- # instance of GIMarshallingTests::CallbackIntInt
373
- _(cb).must_be_instance_of FFI::Function
374
- _(result).must_equal 42
375
- end
376
-
377
- it "has a working method #full_in" do
378
- skip "This function is defined in the header but not implemented"
379
- end
380
-
381
- it "has a working method #get_ref_info_for_vfunc_in_object_transfer_full" do
382
- obj = nil
383
- derived_instance = make_derived_instance do |info|
384
- info.install_vfunc_implementation(
385
- :vfunc_in_object_transfer_full,
386
- proc { |_this, object|
387
- obj = object
388
- })
389
- end
390
- result = derived_instance
391
- .get_ref_info_for_vfunc_in_object_transfer_full GIMarshallingTests::Object.gtype
392
- _(result).must_equal [1, false]
393
- _(obj).must_be_instance_of GIMarshallingTests::Object
394
- end
395
-
396
- it "has a working method #get_ref_info_for_vfunc_in_object_transfer_none" do
397
- obj = nil
398
- derived_instance = make_derived_instance do |info|
399
- info.install_vfunc_implementation(
400
- :vfunc_in_object_transfer_none,
401
- proc { |_this, object|
402
- obj = object
403
- })
404
- end
405
- result = derived_instance
406
- .get_ref_info_for_vfunc_in_object_transfer_none GIMarshallingTests::Object.gtype
407
- _(object_ref_count(obj)).must_be :>, 0
408
- _(result).must_equal [2, false]
409
- _(obj).must_be_instance_of GIMarshallingTests::Object
410
- end
411
-
412
- it "has a working method #get_ref_info_for_vfunc_out_object_transfer_full" do
413
- obj = nil
414
- derived_instance = make_derived_instance do |info|
415
- info.install_vfunc_implementation :vfunc_out_object_transfer_full, proc { |_obj|
416
- obj = GIMarshallingTests::Object.new(42)
417
- }
418
- end
419
- result = derived_instance.get_ref_info_for_vfunc_out_object_transfer_full
420
- _(object_ref_count(obj)).must_be :>, 0
421
- # TODO: Check desired result
422
- _(result).must_equal [2, false]
423
- end
424
-
425
- it "has a working method #get_ref_info_for_vfunc_out_object_transfer_none" do
426
- derived_instance = make_derived_instance do |info|
427
- info.install_vfunc_implementation :vfunc_out_object_transfer_none, proc { |_obj|
428
- GIMarshallingTests::Object.new 42
429
- }
430
- end
431
- result = derived_instance.get_ref_info_for_vfunc_out_object_transfer_none
432
- _(result).must_equal [1, false]
433
- end
434
-
435
- it "has a working method #get_ref_info_for_vfunc_return_object_transfer_full" do
436
- derived_instance = make_derived_instance do |info|
437
- info.install_vfunc_implementation :vfunc_return_object_transfer_full, proc { |_obj|
438
- GIMarshallingTests::Object.new 42
439
- }
440
- end
441
- result = derived_instance.get_ref_info_for_vfunc_return_object_transfer_full
442
- _(result).must_equal [2, false]
443
- end
444
-
445
- it "has a working method #get_ref_info_for_vfunc_return_object_transfer_none" do
446
- derived_instance = make_derived_instance do |info|
447
- info.install_vfunc_implementation :vfunc_return_object_transfer_none, proc { |_obj|
448
- GIMarshallingTests::Object.new 42
449
- }
450
- end
451
- result = derived_instance.get_ref_info_for_vfunc_return_object_transfer_none
452
- _(result).must_equal [1, false]
453
- end
454
-
455
- it "has a working method #int8_in" do
456
- derived_instance = make_derived_instance do |info|
457
- info.install_vfunc_implementation :method_int8_in, proc { |obj, in_| obj.int = in_ }
458
- end
459
- derived_instance.int8_in 23
460
- _(derived_instance.int).must_equal 23
461
- end
462
-
463
- it "has a working method #int8_out" do
464
- derived_instance = make_derived_instance do |info|
465
- info.install_vfunc_implementation :method_int8_out, proc { |_obj| 42 }
466
- end
467
-
468
- _(derived_instance.int8_out).must_equal 42
469
- end
470
-
471
- it "has a working method #method" do
472
- instance.method
473
- pass
474
- end
475
-
476
- it "has a working method #method_array_in" do
477
- instance.method_array_in [-1, 0, 1, 2]
478
- pass
479
- end
480
-
481
- it "has a working method #method_array_inout" do
482
- res = instance.method_array_inout [-1, 0, 1, 2]
483
- _(res).must_be :==, [-2, -1, 0, 1, 2]
484
- end
485
-
486
- it "has a working method #method_array_out" do
487
- res = instance.method_array_out
488
- _(res).must_be :==, [-1, 0, 1, 2]
489
- end
490
-
491
- it "has a working method #method_array_return" do
492
- res = instance.method_array_return
493
- _(res).must_be :==, [-1, 0, 1, 2]
494
- end
495
-
496
- it "has a working method #method_int8_arg_and_out_callee" do
497
- derived_instance = make_derived_instance do |info|
498
- info.install_vfunc_implementation(
499
- :method_int8_arg_and_out_callee,
500
- proc { |_obj, arg|
501
- 2 * arg
502
- })
503
- end
504
- result = derived_instance.method_int8_arg_and_out_callee 32
505
- _(result).must_equal 64
506
- end
507
-
508
- it "has a working method #method_int8_arg_and_out_caller" do
509
- derived_instance = make_derived_instance do |info|
510
- info.install_vfunc_implementation(
511
- :method_int8_arg_and_out_caller,
512
- proc { |_obj, arg|
513
- 2 * arg
514
- })
515
- end
516
- result = derived_instance.method_int8_arg_and_out_caller 32
517
- _(result).must_equal 64
518
- end
519
-
520
- it "has a working method #method_int8_in" do
521
- derived_instance = make_derived_instance do |info|
522
- info.install_vfunc_implementation :method_int8_in, proc { |obj, in_| obj.int = in_ }
523
- end
524
- derived_instance.method_int8_in 108
525
- _(derived_instance.int).must_equal 108
526
- end
527
-
528
- it "has a working method #method_int8_out" do
529
- derived_instance = make_derived_instance do |info|
530
- info.install_vfunc_implementation :method_int8_out, proc { |_obj| 42 }
531
- end
532
- _(derived_instance.method_int8_out).must_equal 42
533
- end
534
-
535
- it "has a working method #method_str_arg_out_ret" do
536
- derived_instance = make_derived_instance do |info|
537
- info.install_vfunc_implementation(:method_str_arg_out_ret,
538
- proc { |_obj, arg| [arg, 42] })
539
- end
540
- _(derived_instance.method_str_arg_out_ret("foo")).must_equal ["foo", 42]
541
- end
542
-
543
- it "has a working method #method_variant_array_in" do
544
- skip "This function is defined in the header but not implemented"
545
- end
546
-
547
- it "has a working method #method_with_default_implementation" do
548
- instance.method_with_default_implementation 104
549
- assert_equal 104, instance.int
550
- end
551
-
552
- it "has a working method #none_in" do
553
- instance.none_in
554
- pass
555
- end
556
-
557
- it "has a working method #overridden_method" do
558
- instance.set_property("int", 0)
559
- instance.overridden_method
560
- pass
561
- end
562
-
563
- it "has a working method #vfunc_array_out_parameter" do
564
- derived_instance = make_derived_instance do |info|
565
- info.install_vfunc_implementation :vfunc_array_out_parameter, proc { |_obj|
566
- [1.1, 2.2, 3.3]
567
- }
568
- end
569
- result = derived_instance.vfunc_array_out_parameter
570
- arr = result.to_a
571
- _(arr.length).must_equal 3
572
- _(arr[0]).must_be_close_to 1.1
573
- _(arr[1]).must_be_close_to 2.2
574
- _(arr[2]).must_be_close_to 3.3
575
- end
576
-
577
- it "has a working method #vfunc_caller_allocated_out_parameter" do
578
- derived_instance = make_derived_instance do |info|
579
- info.install_vfunc_implementation(
580
- :vfunc_caller_allocated_out_parameter,
581
- proc { |_obj|
582
- "Hello!"
583
- })
584
- end
585
- result = derived_instance.vfunc_caller_allocated_out_parameter
586
- _(result).must_equal "Hello!"
587
- end
588
-
589
- it "has a working method #vfunc_meth_with_error" do
590
- derived_instance = make_derived_instance do |info|
591
- info.install_vfunc_implementation :vfunc_meth_with_err, proc { |_object, x|
592
- raise "This is not the answer!" unless x == 42
593
-
594
- true
595
- }
596
- end
597
- result = derived_instance.vfunc_meth_with_error 42
598
- _(result).must_equal true
599
-
600
- err = _(proc { derived_instance.vfunc_meth_with_error(21) })
601
- .must_raise GirFFI::GLibError
602
- _(err.message).must_equal "This is not the answer!"
603
- _(err.domain).must_equal "gir_ffi"
604
- _(err.code).must_equal 0
605
- end
606
-
607
- it "has a working method #vfunc_multiple_out_parameters" do
608
- derived_instance = make_derived_instance do |info|
609
- info.install_vfunc_implementation(
610
- :vfunc_multiple_out_parameters,
611
- proc { |*_args| [42.1, -142.3] })
612
- end
613
- result = derived_instance.vfunc_multiple_out_parameters
614
- _(result[0]).must_be_close_to 42.1
615
- _(result[1]).must_be_close_to(-142.3)
616
- end
617
-
618
- it "has a working method #vfunc_one_out_parameter" do
619
- derived_instance = make_derived_instance do |info|
620
- info.install_vfunc_implementation(
621
- :vfunc_one_out_parameter,
622
- proc { |*_args| 23.4 })
623
- end
624
- _(derived_instance.vfunc_one_out_parameter)
625
- .must_be_within_epsilon 23.4
626
- end
627
-
628
- it "has a working method #vfunc_out_enum" do
629
- derived_instance = make_derived_instance do |info|
630
- info.install_vfunc_implementation :vfunc_out_enum, proc { |_obj| :value2 }
631
- end
632
- _(derived_instance.vfunc_out_enum).must_equal :value2
633
- end
634
-
635
- it "has a working method #vfunc_return_enum" do
636
- derived_instance = make_derived_instance do |info|
637
- info.install_vfunc_implementation :vfunc_return_enum, proc { |_obj| :value2 }
638
- end
639
- _(derived_instance.vfunc_return_enum).must_equal :value2
640
- end
641
-
642
- it "has a working method #vfunc_return_value_and_multiple_out_parameters" do
643
- derived_instance = make_derived_instance do |info|
644
- info.install_vfunc_implementation(
645
- :vfunc_return_value_and_multiple_out_parameters,
646
- proc { |*_args| [42, -142, 3] })
647
- end
648
- _(derived_instance.vfunc_return_value_and_multiple_out_parameters)
649
- .must_equal [42, -142, 3]
650
- end
651
-
652
- it "has a working method #vfunc_return_value_and_one_out_parameter" do
653
- derived_instance = make_derived_instance do |info|
654
- info.install_vfunc_implementation(
655
- :vfunc_return_value_and_one_out_parameter,
656
- proc { |*_args| [42, -142] })
657
- end
658
- _(derived_instance.vfunc_return_value_and_one_out_parameter)
659
- .must_equal [42, -142]
660
- end
661
-
662
- it "has a working method #vfunc_return_value_only" do
663
- derived_instance = make_derived_instance do |info|
664
- info.install_vfunc_implementation(:vfunc_return_value_only,
665
- proc { |_obj| 0x1234_5678 })
666
- end
667
- result = derived_instance.vfunc_return_value_only
668
- _(result).must_equal 0x1234_5678
669
- end
670
-
671
- it "has a working method #vfunc_with_callback" do
672
- result = 1
673
-
674
- derived_instance = make_derived_instance do |info|
675
- info.install_vfunc_implementation(
676
- :vfunc_with_callback,
677
- proc { |_obj, callback, callback_data|
678
- callback.call(42, callback_data)
679
- })
680
- end
681
-
682
- derived_instance.vfunc_with_callback { |val, user_data| result = val + user_data }
683
-
684
- # The current implementation of the vfunc_with_callback method currently
685
- # doesn't actually call the virtual function vfunc_with_callback.
686
- _(result).must_equal 1
687
- _(result).wont_equal 42 + 23
688
- end
689
-
690
- describe "its 'int' property" do
691
- it "can be retrieved with #get_property" do
692
- assert_equal 42, instance.get_property("int")
693
- end
694
- it "can be retrieved with #int" do
695
- assert_equal 42, instance.int
696
- end
697
- it "can be set with #set_property" do
698
- instance.set_property("int", 13)
699
- assert_equal 13, instance.get_property("int")
700
- end
701
- it "can be set with #int=" do
702
- instance.int = 1
703
- assert_equal 1, instance.int
704
- end
705
- end
706
- end
707
-
708
- describe "GIMarshallingTests::OverridesObject" do
709
- it "creates an instance using #new" do
710
- ob = GIMarshallingTests::OverridesObject.new
711
- assert_instance_of GIMarshallingTests::OverridesObject, ob
712
- end
713
-
714
- it "has a working function #returnv" do
715
- ob = GIMarshallingTests::OverridesObject.returnv
716
- assert_instance_of GIMarshallingTests::OverridesObject, ob
717
- end
718
-
719
- let(:instance) { GIMarshallingTests::OverridesObject.new }
720
-
721
- it "has a working method #method" do
722
- result = instance.method
723
- _(result).must_equal 42
724
- end
725
-
726
- it "does not have accessors for its parent instance" do
727
- _(instance).wont_respond_to :parent_instance
728
- _(instance).wont_respond_to :parent_instance=
729
- end
730
- end
731
-
732
- describe "GIMarshallingTests::OverridesStruct" do
733
- let(:instance) { GIMarshallingTests::OverridesStruct.new }
734
-
735
- it "has a writable field long_" do
736
- instance.long_ = 43
737
- _(instance.long_).must_equal 43
738
- end
739
-
740
- it "creates an instance using #new" do
741
- ob = GIMarshallingTests::OverridesStruct.new
742
- assert_instance_of GIMarshallingTests::OverridesStruct, ob
743
- end
744
-
745
- it "has a working method #method" do
746
- _(instance.method).must_equal 42
747
- end
748
-
749
- it "has a working function #returnv" do
750
- ob = GIMarshallingTests::OverridesStruct.returnv
751
- assert_instance_of GIMarshallingTests::OverridesStruct, ob
752
- end
753
- end
754
-
755
- describe "GIMarshallingTests::PointerStruct" do
756
- it "creates an instance using #new" do
757
- ps = GIMarshallingTests::PointerStruct.new
758
- assert_instance_of GIMarshallingTests::PointerStruct, ps
759
- end
760
-
761
- let(:instance) { GIMarshallingTests::PointerStruct.new }
762
-
763
- it "has a writable field long_" do
764
- assert_equal 0, instance.long_
765
- instance.long_ = 1056
766
- assert_equal 1056, instance.long_
767
- end
768
-
769
- it "has a working method #inv" do
770
- instance.long_ = 42
771
- instance.inv
772
- pass
773
- end
774
-
775
- it "has a working function #returnv" do
776
- ob = GIMarshallingTests::PointerStruct.returnv
777
- assert_instance_of GIMarshallingTests::PointerStruct, ob
778
- end
779
- end
780
-
781
- describe "GIMarshallingTests::PropertiesObject" do
782
- it "creates an instance using #new" do
783
- ob = GIMarshallingTests::PropertiesObject.new
784
- assert_instance_of GIMarshallingTests::PropertiesObject, ob
785
- end
786
-
787
- let(:instance) { GIMarshallingTests::PropertiesObject.new }
788
-
789
- describe "its 'some-boolean' property" do
790
- it "can be retrieved with #get_property" do
791
- _(instance.get_property("some-boolean")).must_equal false
792
- end
793
-
794
- it "can be retrieved with #some_boolean" do
795
- _(instance.some_boolean).must_equal false
796
- end
797
-
798
- it "can be set with #set_property" do
799
- instance.set_property("some-boolean", true)
800
- _(instance.get_property("some-boolean")).must_equal true
801
- end
802
-
803
- it "can be set with #some_boolean=" do
804
- instance.some_boolean = true
805
- _(instance.get_property("some-boolean")).must_equal true
806
- end
807
- end
808
-
809
- describe "its 'some-boxed-glist' property" do
810
- it "can be retrieved with #get_property" do
811
- _(instance.get_property("some-boxed-glist")).must_be_nil
812
- end
813
-
814
- it "can be retrieved with #some_boxed_glist" do
815
- _(instance.some_boxed_glist).must_be_nil
816
- end
817
-
818
- it "can be set with #set_property" do
819
- instance.set_property("some-boxed-glist", [1, 2, 3])
820
- _(instance.some_boxed_glist.to_a).must_equal [1, 2, 3]
821
- end
822
-
823
- it "can be set with #some_boxed_glist=" do
824
- instance.some_boxed_glist = [1, 2, 3]
825
- _(instance.some_boxed_glist.to_a).must_equal [1, 2, 3]
826
- _(instance.get_property("some-boxed-glist").to_a).must_equal [1, 2, 3]
827
- end
828
- end
829
-
830
- describe "its 'some-boxed-struct' property" do
831
- it "can be retrieved with #get_property" do
832
- _(instance.get_property("some-boxed-struct")).must_be_nil
833
- end
834
-
835
- it "can be retrieved with #some_boxed_struct" do
836
- _(instance.some_boxed_struct).must_be_nil
837
- end
838
-
839
- it "can be set with #set_property" do
840
- boxed = GIMarshallingTests::BoxedStruct.new
841
- boxed.long_ = 42
842
- instance.set_property("some-boxed-struct", boxed)
843
- _(instance.get_property("some-boxed-struct").long_).must_equal 42
844
- end
845
-
846
- it "can be set with #some_boxed_struct=" do
847
- boxed = GIMarshallingTests::BoxedStruct.new
848
- boxed.long_ = 43
849
- instance.some_boxed_struct = boxed
850
- _(instance.some_boxed_struct.long_).must_equal 43
851
- end
852
- end
853
-
854
- describe "its 'some-byte-array' property" do
855
- before { skip_below("1.57.2") }
856
-
857
- it "can be retrieved with #get_property" do
858
- _(instance.get_property("some-byte-array")).must_be_nil
859
- end
860
-
861
- it "can be retrieved with #some_byte_array" do
862
- _(instance.some_byte_array).must_be_nil
863
- end
864
-
865
- it "can be set with #set_property" do
866
- instance.set_property "some-byte-array", "some bytes"
867
- _(instance.get_property("some-byte-array").to_string).must_equal "some bytes"
868
- end
869
-
870
- it "can be set with #some_byte_array=" do
871
- instance.some_byte_array = "some bytes"
872
- _(instance.some_byte_array.to_string).must_equal "some bytes"
873
- end
874
- end
875
-
876
- describe "its 'some-char' property" do
877
- it "can be retrieved with #get_property" do
878
- _(instance.get_property("some-char")).must_equal 0
879
- end
880
-
881
- it "can be retrieved with #some_char" do
882
- _(instance.some_char).must_equal 0
883
- end
884
-
885
- it "can be set with #set_property" do
886
- instance.set_property "some-char", 42
887
- _(instance.get_property("some-char")).must_equal 42
888
- end
889
-
890
- it "can be set with #some_char=" do
891
- instance.some_char = 43
892
- _(instance.some_char).must_equal 43
893
- end
894
- end
895
-
896
- describe "its 'some-double' property" do
897
- it "can be retrieved with #get_property" do
898
- _(instance.get_property("some-double")).must_equal 0.0
899
- end
900
-
901
- it "can be retrieved with #some_double" do
902
- _(instance.some_double).must_equal 0.0
903
- end
904
-
905
- it "can be set with #set_property" do
906
- instance.set_property("some-double", 3.14)
907
- _(instance.get_property("some-double")).must_equal 3.14
908
- end
909
-
910
- it "can be set with #some_double=" do
911
- instance.some_double = 3.14
912
- _(instance.some_double).must_equal 3.14
913
- end
914
- end
915
-
916
- describe "its 'some-enum' property" do
917
- before { skip_below("1.52.1") }
918
-
919
- it "can be retrieved with #get_property" do
920
- _(instance.get_property("some-enum")).must_equal :value1
921
- end
922
-
923
- it "can be retrieved with #some_enum" do
924
- _(instance.some_enum).must_equal :value1
925
- end
926
-
927
- it "can be set with #set_property" do
928
- instance.set_property("some-enum", :value3)
929
- _(instance.get_property("some-enum")).must_equal :value3
930
- end
931
-
932
- it "can be set with #some_enum=" do
933
- instance.some_enum = :value3
934
- _(instance.some_enum).must_equal :value3
935
- _(instance.get_property("some-enum")).must_equal :value3
936
- end
937
- end
938
-
939
- describe "its 'some-flags' property" do
940
- before { skip_below("1.52.1") }
941
-
942
- it "can be retrieved with #get_property" do
943
- _(instance.get_property("some-flags")).must_equal value1: true
944
- end
945
-
946
- it "can be retrieved with #some_flags" do
947
- _(instance.some_flags).must_equal value1: true
948
- end
949
-
950
- it "can be set with #set_property" do
951
- instance.set_property("some-flags", value3: true)
952
- _(instance.get_property("some-flags")).must_equal value3: true
953
- end
954
-
955
- it "can be set with #some_flags=" do
956
- instance.some_flags = :value3
957
- _(instance.some_flags).must_equal(value3: true)
958
- _(instance.get_property("some-flags")).must_equal(value3: true)
959
- end
960
- end
961
-
962
- describe "its 'some-float' property" do
963
- it "can be retrieved with #get_property" do
964
- _(instance.get_property("some-float")).must_equal 0.0
965
- end
966
-
967
- it "can be retrieved with #some_float" do
968
- _(instance.some_float).must_equal 0.0
969
- end
970
-
971
- it "can be set with #set_property" do
972
- instance.set_property("some-float", 3.14)
973
- _(instance.get_property("some-float")).must_be_close_to 3.14
974
- end
975
-
976
- it "can be set with #some_float=" do
977
- instance.some_float = 3.14
978
- _(instance.some_float).must_be_close_to 3.14
979
- end
980
- end
981
-
982
- describe "its 'some-gvalue' property" do
983
- before { skip_below "1.52.1" }
984
-
985
- it "can be retrieved with #get_property" do
986
- _(instance.get_property("some-gvalue")).must_be_nil
987
- end
988
-
989
- it "can be retrieved with #some_gvalue" do
990
- _(instance.some_gvalue).must_be_nil
991
- end
992
-
993
- it "can be set with #set_property" do
994
- value = GObject::Value.from 42
995
- instance.set_property("some-gvalue", value)
996
- _(instance.get_property("some-gvalue").get_value).must_equal 42
997
- end
998
-
999
- it "can be set with #some_gvalue=" do
1000
- value = GObject::Value.from 42
1001
- instance.some_gvalue = value
1002
- _(instance.some_gvalue.get_value).must_equal 42
1003
- _(instance.get_property("some-gvalue").get_value).must_equal 42
1004
- end
1005
- end
1006
-
1007
- describe "its 'some-int' property" do
1008
- it "can be retrieved with #get_property" do
1009
- _(instance.get_property("some-int")).must_equal 0
1010
- end
1011
-
1012
- it "can be retrieved with #some_int" do
1013
- _(instance.some_int).must_equal 0
1014
- end
1015
-
1016
- it "can be set with #set_property" do
1017
- instance.set_property "some-int", 4242
1018
- _(instance.get_property("some-int")).must_equal 4242
1019
- end
1020
-
1021
- it "can be set with #some_int=" do
1022
- instance.some_int = 4243
1023
- _(instance.some_int).must_equal 4243
1024
- end
1025
- end
1026
-
1027
- describe "its 'some-int64' property" do
1028
- it "can be retrieved with #get_property" do
1029
- _(instance.get_property("some-int64")).must_equal 0
1030
- end
1031
-
1032
- it "can be retrieved with #some_int64" do
1033
- _(instance.some_int64).must_equal 0
1034
- end
1035
-
1036
- it "can be set with #set_property" do
1037
- instance.set_property "some-int64", 42_000_000_000_000
1038
- _(instance.get_property("some-int64")).must_equal 42_000_000_000_000
1039
- end
1040
-
1041
- it "can be set with #some_int64=" do
1042
- instance.some_int64 = 43_000_000_000_000
1043
- _(instance.some_int64).must_equal 43_000_000_000_000
1044
- end
1045
- end
1046
-
1047
- describe "its 'some-long' property" do
1048
- it "can be retrieved with #get_property" do
1049
- _(instance.get_property("some-long")).must_equal 0
1050
- end
1051
-
1052
- it "can be retrieved with #some_long" do
1053
- _(instance.some_long).must_equal 0
1054
- end
1055
-
1056
- it "can be set with #set_property" do
1057
- instance.set_property "some-long", 4242
1058
- _(instance.get_property("some-long")).must_equal 4242
1059
- end
1060
-
1061
- it "can be set with #some_long=" do
1062
- instance.some_long = 4243
1063
- _(instance.some_long).must_equal 4243
1064
- end
1065
- end
1066
-
1067
- describe "its 'some-object' property" do
1068
- it "can be retrieved with #get_property" do
1069
- _(instance.get_property("some-object")).must_be_nil
1070
- end
1071
-
1072
- it "can be retrieved with #some_object" do
1073
- _(instance.some_object).must_be_nil
1074
- end
1075
-
1076
- it "can be set with #set_property" do
1077
- ob = GIMarshallingTests::Object.new 42
1078
- instance.set_property "some-object", ob
1079
- _(instance.get_property("some-object")).must_equal ob
1080
- end
1081
-
1082
- it "can be set with #some_object=" do
1083
- ob = GIMarshallingTests::Object.new 42
1084
- instance.some_object = ob
1085
- _(instance.some_object).must_equal ob
1086
- end
1087
- end
1088
-
1089
- describe "its 'some-readonly' property" do
1090
- before { skip_below("1.57.2") }
1091
-
1092
- it "can be retrieved with #get_property" do
1093
- _(instance.get_property("some-readonly")).must_equal 42
1094
- end
1095
-
1096
- it "can be retrieved with #some_readonly" do
1097
- _(instance.some_readonly).must_equal 42
1098
- end
1099
- end
1100
-
1101
- describe "its 'some-strv' property" do
1102
- it "can be retrieved with #get_property" do
1103
- _(instance.get_property("some-strv")).must_be :==, []
1104
- end
1105
-
1106
- it "can be retrieved with #some_strv" do
1107
- _(instance.some_strv).must_be :==, []
1108
- end
1109
-
1110
- it "can be set with #set_property" do
1111
- instance.set_property("some-strv", %w(foo bar))
1112
- _(instance.get_property("some-strv")).must_be :==, %w(foo bar)
1113
- end
1114
-
1115
- it "can be set with #some_strv=" do
1116
- instance.some_strv = %w(foo bar)
1117
- _(instance.some_strv).must_be :==, %w(foo bar)
1118
- end
1119
- end
1120
-
1121
- describe "its 'some-uchar' property" do
1122
- it "can be retrieved with #get_property" do
1123
- _(instance.get_property("some-uchar")).must_equal 0
1124
- end
1125
-
1126
- it "can be retrieved with #some_uchar" do
1127
- _(instance.some_uchar).must_equal 0
1128
- end
1129
-
1130
- it "can be set with #set_property" do
1131
- instance.set_property "some-uchar", 42
1132
- _(instance.get_property("some-uchar")).must_equal 42
1133
- end
1134
-
1135
- it "can be set with #some_uchar=" do
1136
- instance.some_uchar = 43
1137
- _(instance.some_uchar).must_equal 43
1138
- end
1139
- end
1140
-
1141
- describe "its 'some-uint' property" do
1142
- it "can be retrieved with #get_property" do
1143
- _(instance.get_property("some-uint")).must_equal 0
1144
- end
1145
-
1146
- it "can be retrieved with #some_uint" do
1147
- _(instance.some_uint).must_equal 0
1148
- end
1149
-
1150
- it "can be set with #set_property" do
1151
- instance.set_property "some-uint", 4242
1152
- _(instance.get_property("some-uint")).must_equal 4242
1153
- end
1154
-
1155
- it "can be set with #some_uint=" do
1156
- instance.some_uint = 4243
1157
- _(instance.some_uint).must_equal 4243
1158
- end
1159
- end
1160
-
1161
- describe "its 'some-uint64' property" do
1162
- it "can be retrieved with #get_property" do
1163
- _(instance.get_property("some-uint64")).must_equal 0
1164
- end
1165
-
1166
- it "can be retrieved with #some_uint64" do
1167
- _(instance.some_uint64).must_equal 0
1168
- end
1169
-
1170
- it "can be set with #set_property" do
1171
- instance.set_property "some-uint64", 42_000_000_000_000
1172
- _(instance.get_property("some-uint64")).must_equal 42_000_000_000_000
1173
- end
1174
-
1175
- it "can be set with #some_uint64=" do
1176
- instance.some_uint64 = 43_000_000_000_000
1177
- _(instance.some_uint64).must_equal 43_000_000_000_000
1178
- end
1179
- end
1180
-
1181
- describe "its 'some-ulong' property" do
1182
- it "can be retrieved with #get_property" do
1183
- _(instance.get_property("some-ulong")).must_equal 0
1184
- end
1185
-
1186
- it "can be retrieved with #some_ulong" do
1187
- _(instance.some_ulong).must_equal 0
1188
- end
1189
-
1190
- it "can be set with #set_property" do
1191
- instance.set_property "some-ulong", 4242
1192
- _(instance.get_property("some-ulong")).must_equal 4242
1193
- end
1194
-
1195
- it "can be set with #some_ulong=" do
1196
- instance.some_ulong = 4243
1197
- _(instance.some_ulong).must_equal 4243
1198
- end
1199
- end
1200
-
1201
- describe "its 'some-variant' property" do
1202
- it "can be retrieved with #get_property" do
1203
- _(instance.get_property("some-variant")).must_be_nil
1204
- end
1205
-
1206
- it "can be retrieved with #some_variant" do
1207
- _(instance.some_variant).must_be_nil
1208
- end
1209
-
1210
- it "can be set with #set_property" do
1211
- value = GLib::Variant.new_string("Foo")
1212
- instance.set_property "some-variant", value
1213
- _(instance.get_property("some-variant")).must_equal value
1214
- end
1215
-
1216
- it "can be set with #some_variant=" do
1217
- value = GLib::Variant.new_string("Foo")
1218
- instance.some_variant = value
1219
- _(instance.some_variant).must_equal value
1220
- end
1221
- end
1222
- end
1223
-
1224
- describe "GIMarshallingTests::SecondEnum" do
1225
- it "has the member :secondvalue1" do
1226
- assert_equal 0, GIMarshallingTests::SecondEnum[:secondvalue1]
1227
- end
1228
- it "has the member :secondvalue2" do
1229
- assert_equal 1, GIMarshallingTests::SecondEnum[:secondvalue2]
1230
- end
1231
- end
1232
-
1233
- describe "GIMarshallingTests::SimpleStruct" do
1234
- it "creates an instance using #new" do
1235
- ss = GIMarshallingTests::SimpleStruct.new
1236
- assert_instance_of GIMarshallingTests::SimpleStruct, ss
1237
- end
1238
-
1239
- let(:instance) { GIMarshallingTests::SimpleStruct.new }
1240
-
1241
- it "has a writable field long_" do
1242
- _(instance.long_).must_equal 0
1243
- instance.long_ = 1056
1244
- _(instance.long_).must_equal 1056
1245
- end
1246
-
1247
- it "has a writable field int8" do
1248
- _(instance.int8).must_equal 0
1249
- instance.int8 = -43
1250
- _(instance.int8).must_equal(-43)
1251
- end
1252
-
1253
- it "has a working method #inv" do
1254
- instance.long_ = 6
1255
- instance.int8 = 7
1256
- instance.inv
1257
- pass
1258
- end
1259
-
1260
- it "has a working method #method" do
1261
- instance.long_ = 6
1262
- instance.int8 = 7
1263
- instance.method
1264
- pass
1265
- end
1266
-
1267
- it "has a working function #returnv" do
1268
- ss = GIMarshallingTests::SimpleStruct.returnv
1269
- assert_instance_of GIMarshallingTests::SimpleStruct, ss
1270
- end
1271
- end
1272
-
1273
- describe "GIMarshallingTests::SubObject" do
1274
- it "creates an instance using #new" do
1275
- so = GIMarshallingTests::SubObject.new
1276
- _(so).must_be_instance_of GIMarshallingTests::SubObject
1277
- _(GObject.type_name_from_instance(so))
1278
- .must_equal "GIMarshallingTestsSubObject"
1279
- end
1280
-
1281
- let(:instance) { GIMarshallingTests::SubObject.new }
1282
-
1283
- it "has a working method #overwritten_method" do
1284
- instance.overwritten_method
1285
- pass
1286
- end
1287
-
1288
- it "has a working method #sub_method" do
1289
- instance.sub_method
1290
- pass
1291
- end
1292
-
1293
- it "does not have accessors for its parent instance" do
1294
- _(instance).wont_respond_to :parent_instance
1295
- _(instance).wont_respond_to :parent_instance=
1296
- end
1297
- end
1298
-
1299
- describe "GIMarshallingTests::SubSubObject" do
1300
- it "creates an instance using #new" do
1301
- so = GIMarshallingTests::SubSubObject.new
1302
- assert_instance_of GIMarshallingTests::SubSubObject, so
1303
- _(GObject.type_name_from_instance(so))
1304
- .must_equal "GIMarshallingTestsSubSubObject"
1305
- end
1306
-
1307
- let(:instance) { GIMarshallingTests::SubSubObject.new }
1308
-
1309
- it "does not have accessors for its parent instance" do
1310
- _(instance).wont_respond_to :parent_instance
1311
- _(instance).wont_respond_to :parent_instance=
1312
- end
1313
- end
1314
-
1315
- describe "GIMarshallingTests::Union" do
1316
- it "creates an instance with #new" do
1317
- u = GIMarshallingTests::Union.new
1318
- assert_instance_of GIMarshallingTests::Union, u
1319
- end
1320
-
1321
- let(:instance) { GIMarshallingTests::Union.new }
1322
-
1323
- it "has a writable field long_" do
1324
- assert_equal 0, instance.long_
1325
- instance.long_ = 1056
1326
- assert_equal 1056, instance.long_
1327
- end
1328
-
1329
- it "has a working method #inv" do
1330
- instance.long_ = 42
1331
- instance.inv
1332
- pass
1333
- end
1334
-
1335
- it "has a working method #method" do
1336
- instance.long_ = 42
1337
- instance.method
1338
- pass
1339
- end
1340
-
1341
- it "has a working function #inout" do
1342
- skip "This function is defined in the header but not implemented"
1343
- end
1344
-
1345
- it "has a working function #out" do
1346
- skip "This function is defined in the header but not implemented"
1347
- end
1348
-
1349
- it "has a working function #returnv" do
1350
- u = GIMarshallingTests::Union.returnv
1351
- assert_instance_of GIMarshallingTests::Union, u
1352
- end
1353
- end
1354
-
1355
- it "has a working function #array_bool_in" do
1356
- skip_below "1.51.1"
1357
- GIMarshallingTests.array_bool_in [true, false, true, true]
1358
- end
1359
-
1360
- it "has a working function #array_bool_out" do
1361
- skip_below "1.51.1"
1362
- result = GIMarshallingTests.array_bool_out
1363
- _(result.to_a).must_equal [true, false, true, true]
1364
- end
1365
-
1366
- it "has a working function #array_enum_in" do
1367
- GIMarshallingTests.array_enum_in [:value1, :value2, :value3]
1368
- end
1369
-
1370
- it "has a working function #array_fixed_inout" do
1371
- res = GIMarshallingTests.array_fixed_inout [-1, 0, 1, 2]
1372
- _(res).must_be :==, [2, 1, 0, -1]
1373
- end
1374
-
1375
- it "has a working function #array_fixed_int_in" do
1376
- GIMarshallingTests.array_fixed_int_in [-1, 0, 1, 2]
1377
- pass
1378
- end
1379
-
1380
- it "has a working function #array_fixed_int_return" do
1381
- res = GIMarshallingTests.array_fixed_int_return
1382
- _(res).must_be :==, [-1, 0, 1, 2]
1383
- end
1384
-
1385
- it "has a working function #array_fixed_out" do
1386
- res = GIMarshallingTests.array_fixed_out
1387
- _(res).must_be :==, [-1, 0, 1, 2]
1388
- end
1389
-
1390
- it "has a working function #array_fixed_out_struct" do
1391
- res = GIMarshallingTests.array_fixed_out_struct
1392
- assert_equal [[7, 6], [6, 7]], res.map { |s| [s.long_, s.int8] }
1393
- end
1394
-
1395
- it "has a working function #array_fixed_short_in" do
1396
- GIMarshallingTests.array_fixed_short_in [-1, 0, 1, 2]
1397
- pass
1398
- end
1399
-
1400
- it "has a working function #array_fixed_short_return" do
1401
- res = GIMarshallingTests.array_fixed_short_return
1402
- _(res).must_be :==, [-1, 0, 1, 2]
1403
- end
1404
-
1405
- it "has a working function #array_gvariant_container_in" do
1406
- v1 = GLib::Variant.new_int32(27)
1407
- v2 = GLib::Variant.new_string("Hello")
1408
- result = GIMarshallingTests.array_gvariant_container_in [v1, v2]
1409
- arr = result.to_a
1410
- _(arr.size).must_equal 2
1411
- _(arr[0].get_int32).must_equal 27
1412
- _(arr[1].get_string).must_equal "Hello"
1413
- end
1414
-
1415
- it "has a working function #array_gvariant_full_in" do
1416
- v1 = GLib::Variant.new_int32(27)
1417
- v2 = GLib::Variant.new_string("Hello")
1418
- result = GIMarshallingTests.array_gvariant_full_in [v1, v2]
1419
- arr = result.to_a
1420
- _(arr.size).must_equal 2
1421
- _(arr[0].get_int32).must_equal 27
1422
- _(arr[1].get_string).must_equal "Hello"
1423
- end
1424
-
1425
- it "has a working function #array_gvariant_none_in" do
1426
- v1 = GLib::Variant.new_int32(27)
1427
- v2 = GLib::Variant.new_string("Hello")
1428
- result = GIMarshallingTests.array_gvariant_none_in [v1, v2]
1429
- arr = result.to_a
1430
- _(arr.size).must_equal 2
1431
- _(arr[0].get_int32).must_equal 27
1432
- _(arr[1].get_string).must_equal "Hello"
1433
- end
1434
-
1435
- it "has a working function #array_in" do
1436
- GIMarshallingTests.array_in [-1, 0, 1, 2]
1437
- pass
1438
- end
1439
-
1440
- it "has a working function #array_in_guint64_len" do
1441
- GIMarshallingTests.array_in_guint64_len [-1, 0, 1, 2]
1442
- pass
1443
- end
1444
-
1445
- it "has a working function #array_in_guint8_len" do
1446
- GIMarshallingTests.array_in_guint8_len [-1, 0, 1, 2]
1447
- pass
1448
- end
1449
-
1450
- it "has a working function #array_in_len_before" do
1451
- GIMarshallingTests.array_in_len_before [-1, 0, 1, 2]
1452
- pass
1453
- end
1454
-
1455
- it "has a working function #array_in_len_zero_terminated" do
1456
- GIMarshallingTests.array_in_len_zero_terminated [-1, 0, 1, 2]
1457
- pass
1458
- end
1459
-
1460
- it "has a working function #array_in_nonzero_nonlen" do
1461
- GIMarshallingTests.array_in_nonzero_nonlen 1, "abcd".bytes.to_a
1462
- pass
1463
- end
1464
-
1465
- it "has a working function #array_in_utf8_two_in" do
1466
- GIMarshallingTests.array_in_utf8_two_in [-1, 0, 1, 2], "1", "2"
1467
- pass
1468
- end
1469
-
1470
- it "has a working function #array_in_utf8_two_in_out_of_order" do
1471
- GIMarshallingTests.array_in_utf8_two_in_out_of_order "1", [-1, 0, 1, 2], "2"
1472
- pass
1473
- end
1474
-
1475
- it "has a working function #array_inout" do
1476
- res = GIMarshallingTests.array_inout [-1, 0, 1, 2]
1477
- _(res).must_be :==, [-2, -1, 0, 1, 2]
1478
- end
1479
-
1480
- it "has a working function #array_inout_etc" do
1481
- arr, sum = GIMarshallingTests.array_inout_etc 42, [-1, 0, 1, 2], 24
1482
- _(arr).must_be :==, [42, -1, 0, 1, 24]
1483
- _(sum).must_equal 42 + 24
1484
- end
1485
-
1486
- it "has a working function #array_int64_in" do
1487
- skip_below "1.51.1"
1488
- GIMarshallingTests.array_int64_in [-1, 0, 1, 2]
1489
- end
1490
-
1491
- it "has a working function #array_out" do
1492
- res = GIMarshallingTests.array_out
1493
- _(res).must_be :==, [-1, 0, 1, 2]
1494
- end
1495
-
1496
- it "has a working function #array_out_etc" do
1497
- arr, sum = GIMarshallingTests.array_out_etc 42, 24
1498
- _(arr).must_be :==, [42, 0, 1, 24]
1499
- _(sum).must_equal 42 + 24
1500
- end
1501
-
1502
- it "has a working function #array_return" do
1503
- res = GIMarshallingTests.array_return
1504
- _(res).must_be :==, [-1, 0, 1, 2]
1505
- end
1506
-
1507
- it "has a working function #array_return_etc" do
1508
- arr, sum = GIMarshallingTests.array_return_etc 42, 24
1509
- _(arr).must_be :==, [42, 0, 1, 24]
1510
- _(sum).must_equal 42 + 24
1511
- end
1512
-
1513
- it "has a working function #array_simple_struct_in" do
1514
- arr = [1, 2, 3].map do |val|
1515
- GIMarshallingTests::SimpleStruct.new.tap { |struct| struct.long_ = val }
1516
- end
1517
- GIMarshallingTests.array_simple_struct_in arr
1518
- end
1519
-
1520
- it "has a working function #array_string_in" do
1521
- GIMarshallingTests.array_string_in %w(foo bar)
1522
- pass
1523
- end
1524
-
1525
- it "has a working function #array_struct_in" do
1526
- arr = [1, 2, 3].map do |val|
1527
- GIMarshallingTests::BoxedStruct.new.tap { |struct| struct.long_ = val }
1528
- end
1529
- GIMarshallingTests.array_struct_in arr
1530
- end
1531
-
1532
- it "has a working function #array_struct_take_in" do
1533
- arr = [1, 2, 3].map do |val|
1534
- GIMarshallingTests::BoxedStruct.new.tap { |struct| struct.long_ = val }
1535
- end
1536
- # NOTE: This copies values so arr's elements stay valid
1537
- GIMarshallingTests.array_struct_take_in arr
1538
-
1539
- _(arr.map(&:long_)).must_equal [1, 2, 3]
1540
- end
1541
-
1542
- it "has a working function #array_struct_value_in" do
1543
- arr = [1, 2, 3].map do |val|
1544
- GIMarshallingTests::BoxedStruct.new.tap { |struct| struct.long_ = val }
1545
- end
1546
- GIMarshallingTests.array_struct_value_in arr
1547
- end
1548
-
1549
- it "has a working function #array_uint64_in" do
1550
- skip_below "1.51.1"
1551
- GIMarshallingTests.array_uint64_in [-1, 0, 1, 2]
1552
- end
1553
-
1554
- it "has a working function #array_uint8_in" do
1555
- arr = "abcd".bytes.to_a
1556
- GIMarshallingTests.array_uint8_in arr
1557
- pass
1558
- end
1559
-
1560
- it "has a working function #array_unichar_in" do
1561
- skip_below "1.51.1"
1562
- arr = [0x63, 0x6f, 0x6e, 0x73, 0x74,
1563
- 0x20, 0x2665, 0x20, 0x75, 0x74,
1564
- 0x66, 0x38]
1565
- GIMarshallingTests.array_unichar_in arr
1566
- end
1567
-
1568
- it "has a working function #array_unichar_out" do
1569
- skip_below "1.51.1"
1570
- result = GIMarshallingTests.array_unichar_out
1571
- _(result.to_a).must_equal [0x63, 0x6f, 0x6e, 0x73, 0x74,
1572
- 0x20, 0x2665, 0x20, 0x75, 0x74,
1573
- 0x66, 0x38]
1574
- end
1575
-
1576
- it "has a working function #array_zero_terminated_in" do
1577
- GIMarshallingTests.array_zero_terminated_in %w(0 1 2)
1578
- pass
1579
- end
1580
-
1581
- it "has a working function #array_zero_terminated_inout" do
1582
- res = GIMarshallingTests.array_zero_terminated_inout %w(0 1 2)
1583
- _(res).must_be :==, ["-1", "0", "1", "2"]
1584
- end
1585
-
1586
- it "has a working function #array_zero_terminated_out" do
1587
- res = GIMarshallingTests.array_zero_terminated_out
1588
- _(res).must_be :==, %w(0 1 2)
1589
- end
1590
-
1591
- it "has a working function #array_zero_terminated_return" do
1592
- res = GIMarshallingTests.array_zero_terminated_return
1593
- _(res).must_be :==, %w(0 1 2)
1594
- end
1595
-
1596
- it "has a working function #array_zero_terminated_return_null" do
1597
- res = GIMarshallingTests.array_zero_terminated_return_null
1598
- _(res).must_be :==, []
1599
- end
1600
-
1601
- it "has a working function #array_zero_terminated_return_struct" do
1602
- res = GIMarshallingTests.array_zero_terminated_return_struct
1603
- _(res.to_a.map(&:long_)).must_equal [42, 43, 44]
1604
- end
1605
-
1606
- it "has a working function #array_zero_terminated_return_unichar" do
1607
- skip_below "1.51.1"
1608
- res = GIMarshallingTests.array_zero_terminated_return_unichar
1609
- _(res.to_a).must_equal [0x63, 0x6f, 0x6e, 0x73, 0x74,
1610
- 0x20, 0x2665, 0x20, 0x75, 0x74,
1611
- 0x66, 0x38]
1612
- end
1613
-
1614
- it "has a working function #boolean_in_false" do
1615
- GIMarshallingTests.boolean_in_false false
1616
- pass
1617
- end
1618
-
1619
- it "has a working function #boolean_in_true" do
1620
- GIMarshallingTests.boolean_in_true true
1621
- pass
1622
- end
1623
-
1624
- it "has a working function #boolean_inout_false_true" do
1625
- res = GIMarshallingTests.boolean_inout_false_true false
1626
- _(res).must_equal true
1627
- end
1628
-
1629
- it "has a working function #boolean_inout_true_false" do
1630
- res = GIMarshallingTests.boolean_inout_true_false true
1631
- _(res).must_equal false
1632
- end
1633
-
1634
- it "has a working function #boolean_out_false" do
1635
- res = GIMarshallingTests.boolean_out_false
1636
- _(res).must_equal false
1637
- end
1638
-
1639
- it "has a working function #boolean_out_true" do
1640
- res = GIMarshallingTests.boolean_out_true
1641
- _(res).must_equal true
1642
- end
1643
-
1644
- it "has a working function #boolean_return_false" do
1645
- res = GIMarshallingTests.boolean_return_false
1646
- _(res).must_equal false
1647
- end
1648
-
1649
- it "has a working function #boolean_return_true" do
1650
- res = GIMarshallingTests.boolean_return_true
1651
- _(res).must_equal true
1652
- end
1653
-
1654
- it "has a working function #boxed_struct_inout" do
1655
- bx = GIMarshallingTests::BoxedStruct.new
1656
- bx.long_ = 42
1657
- res = GIMarshallingTests.boxed_struct_inout bx
1658
- _(res.long_).must_equal 0
1659
- end
1660
-
1661
- it "has a working function #boxed_struct_out" do
1662
- res = GIMarshallingTests.boxed_struct_out
1663
- _(res.long_).must_equal 42
1664
- end
1665
-
1666
- it "has a working function #boxed_struct_returnv" do
1667
- res = GIMarshallingTests.boxed_struct_returnv
1668
- _(res.long_).must_equal 42
1669
- _(res.g_strv).must_be :==, %w(0 1 2)
1670
- end
1671
-
1672
- it "has a working function #bytearray_full_return" do
1673
- ret = GIMarshallingTests.bytearray_full_return
1674
- assert_instance_of GLib::ByteArray, ret
1675
- assert_includes(
1676
- ["0123".bytes.to_a, "\x001\xFF3".bytes.to_a],
1677
- ret.to_string.bytes.to_a)
1678
- end
1679
-
1680
- it "has a working function #bytearray_none_in" do
1681
- val = GIMarshallingTests.bytearray_full_return.to_string
1682
- ba = GLib::ByteArray.new
1683
- ba = ba.append val
1684
- GIMarshallingTests.bytearray_none_in ba
1685
- pass
1686
- end
1687
-
1688
- it "has a working function #callback_multiple_out_parameters" do
1689
- result = GIMarshallingTests.callback_multiple_out_parameters do |*_args|
1690
- [12.0, 13.0]
1691
- end
1692
- _(result).must_equal [12.0, 13.0]
1693
- end
1694
-
1695
- it "has a working function #callback_one_out_parameter" do
1696
- result = GIMarshallingTests.callback_one_out_parameter { 42.0 }
1697
- _(result).must_equal 42.0
1698
- end
1699
-
1700
- it "has a working function #callback_owned_boxed" do
1701
- a = nil
1702
-
1703
- callback = proc { |box, _callback_data| a = box.long_ * 2 }
1704
-
1705
- result = GIMarshallingTests.callback_owned_boxed(&callback)
1706
- _(result).must_equal 1
1707
- _(a).must_equal 2
1708
-
1709
- result = GIMarshallingTests.callback_owned_boxed(&callback)
1710
- _(result).must_equal 2
1711
- _(a).must_equal 4
1712
- end
1713
-
1714
- it "has a working function #callback_return_value_and_multiple_out_parameters" do
1715
- result =
1716
- GIMarshallingTests.callback_return_value_and_multiple_out_parameters do |*_args|
1717
- [42, -142, 3]
1718
- end
1719
- _(result).must_equal [42, -142, 3]
1720
- end
1721
-
1722
- it "has a working function #callback_return_value_and_one_out_parameter" do
1723
- result = GIMarshallingTests.callback_return_value_and_one_out_parameter do |*_args|
1724
- [42, -142]
1725
- end
1726
- _(result).must_equal [42, -142]
1727
- end
1728
-
1729
- it "has a working function #callback_return_value_only" do
1730
- result = GIMarshallingTests.callback_return_value_only { 42 }
1731
- _(result).must_equal 42
1732
- end
1733
-
1734
- it "has a working function #double_in" do
1735
- GIMarshallingTests.double_in Float::MAX
1736
- pass
1737
- end
1738
-
1739
- it "has a working function #double_inout" do
1740
- ret = GIMarshallingTests.double_inout Float::MAX
1741
- assert_in_epsilon 2.225e-308, ret
1742
- end
1743
-
1744
- it "has a working function #double_out" do
1745
- ret = GIMarshallingTests.double_out
1746
- _(ret).must_equal Float::MAX
1747
- end
1748
-
1749
- it "has a working function #double_return" do
1750
- ret = GIMarshallingTests.double_return
1751
- _(ret).must_equal Float::MAX
1752
- end
1753
-
1754
- it "has a working function #enum_in" do
1755
- GIMarshallingTests.enum_in :value3
1756
- pass
1757
- end
1758
-
1759
- it "has a working function #enum_inout" do
1760
- e = GIMarshallingTests.enum_inout :value3
1761
- _(e).must_equal :value1
1762
- end
1763
-
1764
- it "has a working function #enum_out" do
1765
- e = GIMarshallingTests.enum_out
1766
- _(e).must_equal :value3
1767
- end
1768
-
1769
- it "has a working function #enum_returnv" do
1770
- e = GIMarshallingTests.enum_returnv
1771
- _(e).must_equal :value3
1772
- end
1773
-
1774
- it "has a working function #filename_list_return" do
1775
- fl = GIMarshallingTests.filename_list_return
1776
- _(fl).must_be_nil
1777
- end
1778
-
1779
- it "has a working function #flags_in" do
1780
- GIMarshallingTests.flags_in value2: true
1781
- pass
1782
- end
1783
-
1784
- it "has a working function #flags_in_zero" do
1785
- GIMarshallingTests.flags_in_zero 0
1786
- pass
1787
- end
1788
-
1789
- it "has a working function #flags_inout" do
1790
- res = GIMarshallingTests.flags_inout value2: true
1791
- _(res).must_equal(value1: true)
1792
- end
1793
-
1794
- it "has a working function #flags_out" do
1795
- res = GIMarshallingTests.flags_out
1796
- _(res).must_equal(value2: true)
1797
- end
1798
-
1799
- it "has a working function #flags_returnv" do
1800
- res = GIMarshallingTests.flags_returnv
1801
- _(res).must_equal(value2: true)
1802
- end
1803
-
1804
- it "has a working function #float_in" do
1805
- # float_return returns MAX_FLT
1806
- flt = GIMarshallingTests.float_return
1807
- GIMarshallingTests.float_in flt
1808
- pass
1809
- end
1810
-
1811
- it "has a working function #float_inout" do
1812
- # float_return returns MAX_FLT
1813
- flt = GIMarshallingTests.float_return
1814
- res = GIMarshallingTests.float_inout flt
1815
- assert_in_epsilon 1.175e-38, res
1816
- end
1817
-
1818
- it "has a working function #float_out" do
1819
- flt = GIMarshallingTests.float_out
1820
- assert_in_epsilon 3.402e+38, flt
1821
- end
1822
-
1823
- it "has a working function #float_return" do
1824
- flt = GIMarshallingTests.float_return
1825
- assert_in_epsilon 3.402e+38, flt
1826
- end
1827
-
1828
- it "has a working function #garray_bool_none_in" do
1829
- skip_below "1.51.1"
1830
- GIMarshallingTests.garray_bool_none_in [true, false, true, true]
1831
- end
1832
-
1833
- it "has a working function #garray_boxed_struct_full_return" do
1834
- skip_below "1.61.1"
1835
- result = GIMarshallingTests.garray_boxed_struct_full_return
1836
- _(result.map(&:long_)).must_equal [42, 43, 44]
1837
- end
1838
-
1839
- it "has a working function #garray_int_none_in" do
1840
- arr = [-1, 0, 1, 2]
1841
- GIMarshallingTests.garray_int_none_in arr
1842
- pass
1843
- end
1844
-
1845
- it "has a working function #garray_int_none_return" do
1846
- arr = GIMarshallingTests.garray_int_none_return
1847
- _(arr).must_be :==, [-1, 0, 1, 2]
1848
- end
1849
-
1850
- it "has a working function #garray_uint64_none_in" do
1851
- GIMarshallingTests.garray_uint64_none_in [0, 0xffff_ffff_ffff_ffff]
1852
- pass
1853
- end
1854
-
1855
- it "has a working function #garray_uint64_none_return" do
1856
- res = GIMarshallingTests.garray_uint64_none_return
1857
- _(res).must_be :==, [0, 0xffff_ffff_ffff_ffff]
1858
- end
1859
-
1860
- it "has a working function #garray_unichar_none_in" do
1861
- skip_below "1.51.1"
1862
- arr = [0x63, 0x6f, 0x6e, 0x73, 0x74,
1863
- 0x20, 0x2665, 0x20, 0x75, 0x74,
1864
- 0x66, 0x38]
1865
- GIMarshallingTests.garray_unichar_none_in arr
1866
- end
1867
-
1868
- it "has a working function #garray_utf8_container_inout" do
1869
- res = GIMarshallingTests.garray_utf8_container_inout %w(0 1 2)
1870
- _(res).must_be :==, ["-2", "-1", "0", "1"]
1871
- end
1872
-
1873
- it "has a working function #garray_utf8_container_out" do
1874
- res = GIMarshallingTests.garray_utf8_container_out
1875
- _(res).must_be :==, %w(0 1 2)
1876
- end
1877
-
1878
- it "has a working function #garray_utf8_container_return" do
1879
- res = GIMarshallingTests.garray_utf8_container_return
1880
- _(res).must_be :==, %w(0 1 2)
1881
- end
1882
-
1883
- it "has a working function #garray_utf8_full_inout" do
1884
- arr = %w(0 1 2)
1885
- res = GIMarshallingTests.garray_utf8_full_inout arr
1886
- _(res).must_be :==, ["-2", "-1", "0", "1"]
1887
- end
1888
-
1889
- it "has a working function #garray_utf8_full_out" do
1890
- res = GIMarshallingTests.garray_utf8_full_out
1891
- _(res).must_be :==, %w(0 1 2)
1892
- end
1893
-
1894
- it "has a working function #garray_utf8_full_out_caller_allocated" do
1895
- res = GIMarshallingTests.garray_utf8_full_out_caller_allocated
1896
- _(res).must_be :==, %w(0 1 2)
1897
- end
1898
-
1899
- it "has a working function #garray_utf8_full_return" do
1900
- res = GIMarshallingTests.garray_utf8_full_return
1901
- _(res).must_be :==, %w(0 1 2)
1902
- end
1903
-
1904
- it "has a working function #garray_utf8_none_in" do
1905
- arr = %w(0 1 2)
1906
- GIMarshallingTests.garray_utf8_none_in arr
1907
- pass
1908
- end
1909
-
1910
- it "has a working function #garray_utf8_none_inout" do
1911
- arr = %w(0 1 2)
1912
- res = GIMarshallingTests.garray_utf8_none_inout arr
1913
- _(res).must_be :==, ["-2", "-1", "0", "1"]
1914
- end
1915
-
1916
- it "has a working function #garray_utf8_none_out" do
1917
- res = GIMarshallingTests.garray_utf8_none_out
1918
- _(res).must_be :==, %w(0 1 2)
1919
- end
1920
-
1921
- it "has a working function #garray_utf8_none_return" do
1922
- res = GIMarshallingTests.garray_utf8_none_return
1923
- _(res).must_be :==, %w(0 1 2)
1924
- end
1925
-
1926
- it "has a working function #gbytes_full_return" do
1927
- res = GIMarshallingTests.gbytes_full_return
1928
- _(res.to_a).must_equal [0, 49, 0xFF, 51]
1929
- end
1930
-
1931
- it "has a working function #gbytes_none_in" do
1932
- GIMarshallingTests.gbytes_none_in [0, 49, 0xFF, 51]
1933
- pass
1934
- end
1935
-
1936
- it "has a working function #gclosure_in" do
1937
- cl = GObject::RubyClosure.new { 42 }
1938
- GIMarshallingTests.gclosure_in cl
1939
- pass
1940
- end
1941
-
1942
- it "has a working function #gclosure_return" do
1943
- cl = GIMarshallingTests.gclosure_return
1944
- gv = GObject::Value.wrap_ruby_value 0
1945
- result = cl.invoke gv, []
1946
- _(gv.get_value).must_equal 42
1947
- _(result).must_equal 42
1948
- end
1949
-
1950
- it "has a working function #genum_in" do
1951
- GIMarshallingTests.genum_in :value3
1952
- pass
1953
- end
1954
-
1955
- it "has a working function #genum_inout" do
1956
- res = GIMarshallingTests.genum_inout :value3
1957
- _(res).must_equal :value1
1958
- end
1959
-
1960
- it "has a working function #genum_out" do
1961
- res = GIMarshallingTests.genum_out
1962
- _(res).must_equal :value3
1963
- end
1964
-
1965
- it "has a working function #genum_returnv" do
1966
- res = GIMarshallingTests.genum_returnv
1967
- _(res).must_equal :value3
1968
- end
1969
-
1970
- it "has a working function #gerror" do
1971
- GIMarshallingTests.gerror
1972
- flunk "Error should have been raised"
1973
- rescue GirFFI::GLibError => e
1974
- _(e.message).must_equal GIMarshallingTests::CONSTANT_GERROR_MESSAGE
1975
- _(e.domain).must_equal GIMarshallingTests::CONSTANT_GERROR_DOMAIN
1976
- _(e.code).must_equal GIMarshallingTests::CONSTANT_GERROR_CODE
1977
- end
1978
-
1979
- it "has a working function #gerror_array_in" do
1980
- GIMarshallingTests.gerror_array_in [1, 2, 3]
1981
- flunk "Error should have been raised"
1982
- rescue GirFFI::GLibError => e
1983
- _(e.message).must_equal GIMarshallingTests::CONSTANT_GERROR_MESSAGE
1984
- _(e.domain).must_equal GIMarshallingTests::CONSTANT_GERROR_DOMAIN
1985
- _(e.code).must_equal GIMarshallingTests::CONSTANT_GERROR_CODE
1986
- end
1987
-
1988
- it "has a working function #gerror_out" do
1989
- error, debug = GIMarshallingTests.gerror_out
1990
- _(debug).must_equal GIMarshallingTests::CONSTANT_GERROR_DEBUG_MESSAGE
1991
- _(error.message).must_equal GIMarshallingTests::CONSTANT_GERROR_MESSAGE
1992
- end
1993
-
1994
- it "has a working function #gerror_out_transfer_none" do
1995
- error, debug = GIMarshallingTests.gerror_out_transfer_none
1996
- _(debug).must_equal GIMarshallingTests::CONSTANT_GERROR_DEBUG_MESSAGE
1997
- _(error.message).must_equal GIMarshallingTests::CONSTANT_GERROR_MESSAGE
1998
- end
1999
-
2000
- it "has a working function #gerror_return" do
2001
- error = GIMarshallingTests.gerror_return
2002
- _(error.message).must_equal GIMarshallingTests::CONSTANT_GERROR_MESSAGE
2003
- end
2004
-
2005
- it "has a working function #ghashtable_double_in" do
2006
- skip_below "1.51.2"
2007
- GIMarshallingTests.ghashtable_double_in(
2008
- "-1" => -0.1, "0" => 0.0, "1" => 0.1, "2" => 0.2)
2009
- end
2010
-
2011
- it "has a working function #ghashtable_float_in" do
2012
- skip_below "1.51.2"
2013
- GIMarshallingTests.ghashtable_float_in(
2014
- "-1" => -0.1, "0" => 0.0, "1" => 0.1, "2" => 0.2)
2015
- end
2016
-
2017
- it "has a working function #ghashtable_int64_in" do
2018
- skip_below "1.51.2"
2019
- GIMarshallingTests.ghashtable_int64_in(
2020
- "-1" => -1, "0" => 0, "1" => 1, "2" => 0x100000000)
2021
- end
2022
-
2023
- it "has a working function #ghashtable_int_none_in" do
2024
- GIMarshallingTests.ghashtable_int_none_in(
2025
- -1 => 1, 0 => 0, 1 => -1, 2 => -2)
2026
- end
2027
-
2028
- it "has a working function #ghashtable_int_none_return" do
2029
- gh = GIMarshallingTests.ghashtable_int_none_return
2030
- assert_equal({ -1 => 1, 0 => 0, 1 => -1, 2 => -2 }, gh.to_hash)
2031
- end
2032
-
2033
- it "has a working function #ghashtable_uint64_in" do
2034
- skip_below "1.51.2"
2035
- GIMarshallingTests.ghashtable_uint64_in(
2036
- "-1" => 0x100000000, "0" => 0, "1" => 1, "2" => 2)
2037
- end
2038
-
2039
- it "has a working function #ghashtable_utf8_container_in" do
2040
- skip "This function is defined in the header but not implemented"
2041
- end
2042
-
2043
- it "has a working function #ghashtable_utf8_container_inout" do
2044
- hsh = { "-1" => "1", "0" => "0", "1" => "-1", "2" => "-2" }
2045
- res = GIMarshallingTests.ghashtable_utf8_container_inout hsh
2046
- assert_equal({ "-1" => "1", "0" => "0", "1" => "1" }, res.to_hash)
2047
- end
2048
-
2049
- it "has a working function #ghashtable_utf8_container_out" do
2050
- res = GIMarshallingTests.ghashtable_utf8_container_out
2051
- assert_equal({ "-1" => "1", "0" => "0", "1" => "-1", "2" => "-2" },
2052
- res.to_hash)
2053
- end
2054
-
2055
- it "has a working function #ghashtable_utf8_container_return" do
2056
- res = GIMarshallingTests.ghashtable_utf8_container_return
2057
- assert_equal({ "-1" => "1", "0" => "0", "1" => "-1", "2" => "-2" },
2058
- res.to_hash)
2059
- end
2060
-
2061
- it "has a working function #ghashtable_utf8_full_in" do
2062
- skip "This function is defined in the header but not implemented"
2063
- end
2064
-
2065
- it "has a working function #ghashtable_utf8_full_inout" do
2066
- hsh = { "-1" => "1", "0" => "0", "1" => "-1", "2" => "-2" }
2067
- res = GIMarshallingTests.ghashtable_utf8_full_inout hsh
2068
- assert_equal({ "-1" => "1", "0" => "0", "1" => "1" }, res.to_hash)
2069
- end
2070
-
2071
- it "has a working function #ghashtable_utf8_full_out" do
2072
- res = GIMarshallingTests.ghashtable_utf8_full_out
2073
- assert_equal({ "-1" => "1", "0" => "0", "1" => "-1", "2" => "-2" },
2074
- res.to_hash)
2075
- end
2076
-
2077
- it "has a working function #ghashtable_utf8_full_return" do
2078
- res = GIMarshallingTests.ghashtable_utf8_full_return
2079
- assert_equal({ "-1" => "1", "0" => "0", "1" => "-1", "2" => "-2" },
2080
- res.to_hash)
2081
- end
2082
-
2083
- it "has a working function #ghashtable_utf8_none_in" do
2084
- hsh = { "-1" => "1", "0" => "0", "1" => "-1", "2" => "-2" }
2085
- GIMarshallingTests.ghashtable_utf8_none_in hsh
2086
- pass
2087
- end
2088
-
2089
- it "has a working function #ghashtable_utf8_none_inout" do
2090
- hsh = { "-1" => "1", "0" => "0", "1" => "-1", "2" => "-2" }
2091
- res = GIMarshallingTests.ghashtable_utf8_none_inout hsh
2092
- assert_equal({ "-1" => "1", "0" => "0", "1" => "1" }, res.to_hash)
2093
- end
2094
-
2095
- it "has a working function #ghashtable_utf8_none_out" do
2096
- res = GIMarshallingTests.ghashtable_utf8_none_out
2097
- assert_equal({ "-1" => "1", "0" => "0", "1" => "-1", "2" => "-2" },
2098
- res.to_hash)
2099
- end
2100
-
2101
- it "has a working function #ghashtable_utf8_none_return" do
2102
- res = GIMarshallingTests.ghashtable_utf8_none_return
2103
- assert_equal({ "-1" => "1", "0" => "0", "1" => "-1", "2" => "-2" },
2104
- res.to_hash)
2105
- end
2106
-
2107
- it "has a working function #glist_int_none_in" do
2108
- GIMarshallingTests.glist_int_none_in [-1, 0, 1, 2]
2109
- pass
2110
- end
2111
-
2112
- it "has a working function #glist_int_none_return" do
2113
- res = GIMarshallingTests.glist_int_none_return
2114
- _(res).must_be :==, [-1, 0, 1, 2]
2115
- end
2116
-
2117
- it "has a working function #glist_uint32_none_in" do
2118
- GIMarshallingTests.glist_uint32_none_in [0, 0xffff_ffff]
2119
- pass
2120
- end
2121
-
2122
- it "has a working function #glist_uint32_none_return" do
2123
- res = GIMarshallingTests.glist_uint32_none_return
2124
- _(res).must_be :==, [0, 0xffff_ffff]
2125
- end
2126
-
2127
- it "has a working function #glist_utf8_container_inout" do
2128
- res = GIMarshallingTests.glist_utf8_container_inout %w(0 1 2)
2129
- _(res).must_be :==, ["-2", "-1", "0", "1"]
2130
- end
2131
-
2132
- it "has a working function #glist_utf8_container_out" do
2133
- res = GIMarshallingTests.glist_utf8_container_out
2134
- _(res).must_be :==, %w(0 1 2)
2135
- end
2136
-
2137
- it "has a working function #glist_utf8_container_return" do
2138
- res = GIMarshallingTests.glist_utf8_container_return
2139
- _(res).must_be :==, %w(0 1 2)
2140
- end
2141
-
2142
- it "has a working function #glist_utf8_full_inout" do
2143
- res = GIMarshallingTests.glist_utf8_full_inout %w(0 1 2)
2144
- _(res).must_be :==, ["-2", "-1", "0", "1"]
2145
- end
2146
-
2147
- it "has a working function #glist_utf8_full_out" do
2148
- res = GIMarshallingTests.glist_utf8_full_out
2149
- _(res).must_be :==, %w(0 1 2)
2150
- end
2151
-
2152
- it "has a working function #glist_utf8_full_return" do
2153
- res = GIMarshallingTests.glist_utf8_full_return
2154
- _(res).must_be :==, %w(0 1 2)
2155
- end
2156
-
2157
- it "has a working function #glist_utf8_none_in" do
2158
- GIMarshallingTests.glist_utf8_none_in %w(0 1 2)
2159
- end
2160
-
2161
- it "has a working function #glist_utf8_none_inout" do
2162
- res = GIMarshallingTests.glist_utf8_none_inout %w(0 1 2)
2163
- _(res).must_be :==, ["-2", "-1", "0", "1"]
2164
- end
2165
-
2166
- it "has a working function #glist_utf8_none_out" do
2167
- res = GIMarshallingTests.glist_utf8_none_out
2168
- _(res).must_be :==, %w(0 1 2)
2169
- end
2170
-
2171
- it "has a working function #glist_utf8_none_return" do
2172
- res = GIMarshallingTests.glist_utf8_none_return
2173
- _(res).must_be :==, %w(0 1 2)
2174
- end
2175
-
2176
- it "has a working function #gptrarray_boxed_struct_full_return" do
2177
- skip_below "1.61.1"
2178
- result = GIMarshallingTests.gptrarray_boxed_struct_full_return
2179
- _(result.map(&:long_)).must_equal [42, 43, 44]
2180
- end
2181
-
2182
- it "has a working function #gptrarray_utf8_container_inout" do
2183
- res = GIMarshallingTests.gptrarray_utf8_container_inout %w(0 1 2)
2184
- _(res).must_be :==, ["-2", "-1", "0", "1"]
2185
- end
2186
-
2187
- it "has a working function #gptrarray_utf8_container_out" do
2188
- res = GIMarshallingTests.gptrarray_utf8_container_out
2189
- _(res).must_be :==, %w(0 1 2)
2190
- end
2191
-
2192
- it "has a working function #gptrarray_utf8_container_return" do
2193
- res = GIMarshallingTests.gptrarray_utf8_container_return
2194
- _(res).must_be :==, %w(0 1 2)
2195
- end
2196
-
2197
- it "has a working function #gptrarray_utf8_full_inout" do
2198
- res = GIMarshallingTests.gptrarray_utf8_full_inout %w(0 1 2)
2199
- _(res).must_be :==, ["-2", "-1", "0", "1"]
2200
- end
2201
-
2202
- it "has a working function #gptrarray_utf8_full_out" do
2203
- res = GIMarshallingTests.gptrarray_utf8_full_out
2204
- _(res).must_be :==, %w(0 1 2)
2205
- end
2206
-
2207
- it "has a working function #gptrarray_utf8_full_return" do
2208
- res = GIMarshallingTests.gptrarray_utf8_full_return
2209
- _(res).must_be :==, %w(0 1 2)
2210
- end
2211
-
2212
- it "has a working function #gptrarray_utf8_none_in" do
2213
- GIMarshallingTests.gptrarray_utf8_none_in %w(0 1 2)
2214
- end
2215
-
2216
- it "has a working function #gptrarray_utf8_none_inout" do
2217
- res = GIMarshallingTests.gptrarray_utf8_none_inout %w(0 1 2)
2218
- _(res).must_be :==, ["-2", "-1", "0", "1"]
2219
- end
2220
-
2221
- it "has a working function #gptrarray_utf8_none_out" do
2222
- res = GIMarshallingTests.gptrarray_utf8_none_out
2223
- _(res).must_be :==, %w(0 1 2)
2224
- end
2225
-
2226
- it "has a working function #gptrarray_utf8_none_return" do
2227
- res = GIMarshallingTests.gptrarray_utf8_none_return
2228
- _(res).must_be :==, %w(0 1 2)
2229
- end
2230
-
2231
- it "has a working function #gslist_int_none_in" do
2232
- GIMarshallingTests.gslist_int_none_in [-1, 0, 1, 2]
2233
- pass
2234
- end
2235
-
2236
- it "has a working function #gslist_int_none_return" do
2237
- res = GIMarshallingTests.gslist_int_none_return
2238
- _(res).must_be :==, [-1, 0, 1, 2]
2239
- end
2240
-
2241
- it "has a working function #gslist_utf8_container_inout" do
2242
- res = GIMarshallingTests.gslist_utf8_container_inout %w(0 1 2)
2243
- _(res).must_be :==, ["-2", "-1", "0", "1"]
2244
- end
2245
-
2246
- it "has a working function #gslist_utf8_container_out" do
2247
- res = GIMarshallingTests.gslist_utf8_container_out
2248
- _(res).must_be :==, %w(0 1 2)
2249
- end
2250
-
2251
- it "has a working function #gslist_utf8_container_return" do
2252
- res = GIMarshallingTests.gslist_utf8_container_return
2253
- _(res).must_be :==, %w(0 1 2)
2254
- end
2255
-
2256
- it "has a working function #gslist_utf8_full_inout" do
2257
- res = GIMarshallingTests.gslist_utf8_full_inout %w(0 1 2)
2258
- _(res).must_be :==, ["-2", "-1", "0", "1"]
2259
- end
2260
-
2261
- it "has a working function #gslist_utf8_full_out" do
2262
- res = GIMarshallingTests.gslist_utf8_full_out
2263
- _(res).must_be :==, %w(0 1 2)
2264
- end
2265
-
2266
- it "has a working function #gslist_utf8_full_return" do
2267
- res = GIMarshallingTests.gslist_utf8_full_return
2268
- _(res).must_be :==, %w(0 1 2)
2269
- end
2270
-
2271
- it "has a working function #gslist_utf8_none_in" do
2272
- GIMarshallingTests.gslist_utf8_none_in %w(0 1 2)
2273
- pass
2274
- end
2275
-
2276
- it "has a working function #gslist_utf8_none_inout" do
2277
- res = GIMarshallingTests.gslist_utf8_none_inout %w(0 1 2)
2278
- _(res).must_be :==, ["-2", "-1", "0", "1"]
2279
- end
2280
-
2281
- it "has a working function #gslist_utf8_none_out" do
2282
- res = GIMarshallingTests.gslist_utf8_none_out
2283
- _(res).must_be :==, %w(0 1 2)
2284
- end
2285
-
2286
- it "has a working function #gslist_utf8_none_return" do
2287
- res = GIMarshallingTests.gslist_utf8_none_return
2288
- _(res).must_be :==, %w(0 1 2)
2289
- end
2290
-
2291
- it "has a working function #gstrv_in" do
2292
- GIMarshallingTests.gstrv_in %w(0 1 2)
2293
- pass
2294
- end
2295
-
2296
- it "has a working function #gstrv_inout" do
2297
- res = GIMarshallingTests.gstrv_inout %w(0 1 2)
2298
- _(res).must_be :==, ["-1", "0", "1", "2"]
2299
- end
2300
-
2301
- it "has a working function #gstrv_out" do
2302
- res = GIMarshallingTests.gstrv_out
2303
- _(res).must_be :==, %w(0 1 2)
2304
- end
2305
-
2306
- it "has a working function #gstrv_return" do
2307
- res = GIMarshallingTests.gstrv_return
2308
- _(res).must_be :==, %w(0 1 2)
2309
- end
2310
-
2311
- it "has a working function #gtype_in" do
2312
- GIMarshallingTests.gtype_in GObject::TYPE_NONE
2313
- pass
2314
- end
2315
-
2316
- it "has a working function #gtype_inout" do
2317
- res = GIMarshallingTests.gtype_inout GObject::TYPE_NONE
2318
- _(res).must_equal GObject::TYPE_INT
2319
- end
2320
-
2321
- it "has a working function #gtype_out" do
2322
- res = GIMarshallingTests.gtype_out
2323
- _(res).must_equal GObject::TYPE_NONE
2324
- end
2325
-
2326
- it "has a working function #gtype_return" do
2327
- res = GIMarshallingTests.gtype_return
2328
- _(res).must_equal GObject::TYPE_NONE
2329
- end
2330
-
2331
- it "has a working function #gtype_string_in" do
2332
- GIMarshallingTests.gtype_string_in GObject::TYPE_STRING
2333
- pass
2334
- end
2335
-
2336
- it "has a working function #gtype_string_out" do
2337
- res = GIMarshallingTests.gtype_string_out
2338
- _(res).must_equal GObject::TYPE_STRING
2339
- end
2340
-
2341
- it "has a working function #gtype_string_return" do
2342
- res = GIMarshallingTests.gtype_string_return
2343
- _(res).must_equal GObject::TYPE_STRING
2344
- end
2345
-
2346
- it "has a working function #gvalue_flat_array" do
2347
- GIMarshallingTests.gvalue_flat_array [42, "42", true]
2348
- pass
2349
- end
2350
-
2351
- it "has a working function #gvalue_flat_array_round_trip" do
2352
- result = GIMarshallingTests.gvalue_flat_array_round_trip 42, "42", true
2353
- arr = result.to_a
2354
- _(arr[0].get_value).must_equal 42
2355
- _(arr[1].get_value).must_equal "42"
2356
- _(arr[2].get_value).must_equal true
2357
- end
2358
-
2359
- it "has a working function #gvalue_in" do
2360
- GIMarshallingTests.gvalue_in GObject::Value.wrap_ruby_value(42)
2361
- GIMarshallingTests.gvalue_in 42
2362
- pass
2363
- end
2364
-
2365
- it "has a working function #gvalue_in_enum" do
2366
- gv = GObject::Value.new
2367
- gv.init GIMarshallingTests::GEnum.gtype
2368
- gv.set_enum GIMarshallingTests::GEnum[:value3]
2369
- GIMarshallingTests.gvalue_in_enum gv
2370
- pass
2371
- end
2372
-
2373
- it "has a working function #gvalue_in_with_modification" do
2374
- gv = GObject::Value.wrap_ruby_value(42)
2375
- GIMarshallingTests.gvalue_in_with_modification gv
2376
- _(gv.get_value).must_equal 24
2377
- end
2378
-
2379
- it "has a working function #gvalue_in_with_type" do
2380
- gv = GObject::Value.new
2381
- gv.init GIMarshallingTests::SubSubObject.gtype
2382
- GIMarshallingTests.gvalue_in_with_type gv, GIMarshallingTests::Object.gtype
2383
- end
2384
-
2385
- it "has a working function #gvalue_inout" do
2386
- res = GIMarshallingTests.gvalue_inout GObject::Value.wrap_ruby_value(42)
2387
- _(res).must_equal "42"
2388
-
2389
- res = GIMarshallingTests.gvalue_inout 42
2390
- _(res).must_equal "42"
2391
- end
2392
-
2393
- it "has a working function #gvalue_int64_in" do
2394
- gv = GObject::Value.new
2395
- gv.init GObject::TYPE_INT64
2396
- gv.set_value 0x7fff_ffff_ffff_ffff
2397
- GIMarshallingTests.gvalue_int64_in gv
2398
- pass
2399
- end
2400
-
2401
- it "has a working function #gvalue_int64_out" do
2402
- gv = GIMarshallingTests.gvalue_int64_out
2403
- _(gv).must_equal 0x7fff_ffff_ffff_ffff
2404
- end
2405
-
2406
- it "has a working function #gvalue_out" do
2407
- res = GIMarshallingTests.gvalue_out
2408
- _(res).must_equal 42
2409
- end
2410
-
2411
- it "has a working function #gvalue_out_caller_allocates" do
2412
- res = GIMarshallingTests.gvalue_out_caller_allocates
2413
- _(res).must_equal 42
2414
- end
2415
-
2416
- it "has a working function #gvalue_return" do
2417
- res = GIMarshallingTests.gvalue_return
2418
- _(res).must_equal 42
2419
- end
2420
-
2421
- it "has a working function #init_function" do
2422
- res, arr = GIMarshallingTests.init_function %w(foo bar baz)
2423
- _(res).must_equal true
2424
- _(arr).must_be :==, %w(foo bar)
2425
- end
2426
-
2427
- it "has a working function #int16_in_max" do
2428
- GIMarshallingTests.int16_in_max 0x7fff
2429
- pass
2430
- end
2431
-
2432
- it "has a working function #int16_in_min" do
2433
- GIMarshallingTests.int16_in_min(-0x8000)
2434
- pass
2435
- end
2436
-
2437
- it "has a working function #int16_inout_max_min" do
2438
- res = GIMarshallingTests.int16_inout_max_min 0x7fff
2439
- assert_equal res, -0x8000
2440
- end
2441
-
2442
- it "has a working function #int16_inout_min_max" do
2443
- res = GIMarshallingTests.int16_inout_min_max(-0x8000)
2444
- assert_equal 0x7fff, res
2445
- end
2446
-
2447
- it "has a working function #int16_out_max" do
2448
- res = GIMarshallingTests.int16_out_max
2449
- assert_equal 0x7fff, res
2450
- end
2451
-
2452
- it "has a working function #int16_out_min" do
2453
- res = GIMarshallingTests.int16_out_min
2454
- assert_equal(-0x8000, res)
2455
- end
2456
-
2457
- it "has a working function #int16_return_max" do
2458
- res = GIMarshallingTests.int16_return_max
2459
- assert_equal 0x7fff, res
2460
- end
2461
-
2462
- it "has a working function #int16_return_min" do
2463
- res = GIMarshallingTests.int16_return_min
2464
- assert_equal(-0x8000, res)
2465
- end
2466
-
2467
- it "has a working function #int32_in_max" do
2468
- GIMarshallingTests.int32_in_max 0x7fffffff
2469
- pass
2470
- end
2471
-
2472
- it "has a working function #int32_in_min" do
2473
- GIMarshallingTests.int32_in_min(-0x80000000)
2474
- pass
2475
- end
2476
-
2477
- it "has a working function #int32_inout_max_min" do
2478
- res = GIMarshallingTests.int32_inout_max_min 0x7fffffff
2479
- assert_equal(-0x80000000, res)
2480
- end
2481
-
2482
- it "has a working function #int32_inout_min_max" do
2483
- res = GIMarshallingTests.int32_inout_min_max(-0x80000000)
2484
- assert_equal 0x7fffffff, res
2485
- end
2486
-
2487
- it "has a working function #int32_out_max" do
2488
- res = GIMarshallingTests.int32_out_max
2489
- assert_equal 0x7fffffff, res
2490
- end
2491
-
2492
- it "has a working function #int32_out_min" do
2493
- res = GIMarshallingTests.int32_out_min
2494
- assert_equal(-0x80000000, res)
2495
- end
2496
-
2497
- it "has a working function #int32_return_max" do
2498
- res = GIMarshallingTests.int32_return_max
2499
- assert_equal 0x7fffffff, res
2500
- end
2501
-
2502
- it "has a working function #int32_return_min" do
2503
- res = GIMarshallingTests.int32_return_min
2504
- assert_equal(-0x80000000, res)
2505
- end
2506
-
2507
- it "has a working function #int64_in_max" do
2508
- GIMarshallingTests.int64_in_max 0x7fffffffffffffff
2509
- pass
2510
- end
2511
-
2512
- it "has a working function #int64_in_min" do
2513
- GIMarshallingTests.int64_in_min(-0x8000000000000000)
2514
- pass
2515
- end
2516
-
2517
- it "has a working function #int64_inout_max_min" do
2518
- res = GIMarshallingTests.int64_inout_max_min 0x7fffffffffffffff
2519
- assert_equal(-0x8000000000000000, res)
2520
- end
2521
-
2522
- it "has a working function #int64_inout_min_max" do
2523
- res = GIMarshallingTests.int64_inout_min_max(-0x8000000000000000)
2524
- assert_equal 0x7fffffffffffffff, res
2525
- end
2526
-
2527
- it "has a working function #int64_out_max" do
2528
- res = GIMarshallingTests.int64_out_max
2529
- assert_equal 0x7fffffffffffffff, res
2530
- end
2531
-
2532
- it "has a working function #int64_out_min" do
2533
- res = GIMarshallingTests.int64_out_min
2534
- assert_equal(-0x8000000000000000, res)
2535
- end
2536
-
2537
- it "has a working function #int64_return_max" do
2538
- res = GIMarshallingTests.int64_return_max
2539
- assert_equal 0x7fffffffffffffff, res
2540
- end
2541
-
2542
- it "has a working function #int64_return_min" do
2543
- res = GIMarshallingTests.int64_return_min
2544
- assert_equal(-0x8000000000000000, res)
2545
- end
2546
-
2547
- it "has a working function #int8_in_max" do
2548
- GIMarshallingTests.int8_in_max 0x7f
2549
- pass
2550
- end
2551
-
2552
- it "has a working function #int8_in_min" do
2553
- GIMarshallingTests.int8_in_min(-0x80)
2554
- pass
2555
- end
2556
-
2557
- it "has a working function #int8_inout_max_min" do
2558
- res = GIMarshallingTests.int8_inout_max_min 0x7f
2559
- assert_equal(-0x80, res)
2560
- end
2561
-
2562
- it "has a working function #int8_inout_min_max" do
2563
- res = GIMarshallingTests.int8_inout_min_max(-0x80)
2564
- assert_equal 0x7f, res
2565
- end
2566
-
2567
- it "has a working function #int8_out_max" do
2568
- res = GIMarshallingTests.int8_out_max
2569
- assert_equal 0x7f, res
2570
- end
2571
-
2572
- it "has a working function #int8_out_min" do
2573
- res = GIMarshallingTests.int8_out_min
2574
- assert_equal(-0x80, res)
2575
- end
2576
-
2577
- it "has a working function #int8_return_max" do
2578
- res = GIMarshallingTests.int8_return_max
2579
- assert_equal 0x7f, res
2580
- end
2581
-
2582
- it "has a working function #int8_return_min" do
2583
- res = GIMarshallingTests.int8_return_min
2584
- assert_equal(-0x80, res)
2585
- end
2586
-
2587
- it "has a working function #int_in_max" do
2588
- GIMarshallingTests.int_in_max 0x7fffffff
2589
- pass
2590
- end
2591
-
2592
- it "has a working function #int_in_min" do
2593
- GIMarshallingTests.int_in_min(-0x80000000)
2594
- pass
2595
- end
2596
-
2597
- it "has a working function #int_inout_max_min" do
2598
- res = GIMarshallingTests.int_inout_max_min 0x7fffffff
2599
- assert_equal(-0x80000000, res)
2600
- end
2601
-
2602
- it "has a working function #int_inout_min_max" do
2603
- res = GIMarshallingTests.int_inout_min_max(-0x80000000)
2604
- assert_equal 0x7fffffff, res
2605
- end
2606
-
2607
- it "has a working function #int_one_in_utf8_two_in_one_allows_none" do
2608
- GIMarshallingTests.int_one_in_utf8_two_in_one_allows_none 1, "2", "3"
2609
- GIMarshallingTests.int_one_in_utf8_two_in_one_allows_none 1, nil, "3"
2610
- pass
2611
- end
2612
-
2613
- it "has a working function #int_out_max" do
2614
- res = GIMarshallingTests.int_out_max
2615
- assert_equal 0x7fffffff, res
2616
- end
2617
-
2618
- it "has a working function #int_out_min" do
2619
- res = GIMarshallingTests.int_out_min
2620
- assert_equal(-0x80000000, res)
2621
- end
2622
-
2623
- it "has a working function #int_out_out" do
2624
- res = GIMarshallingTests.int_out_out
2625
- assert_equal [6, 7], res
2626
- end
2627
-
2628
- it "has a working function #int_return_max" do
2629
- res = GIMarshallingTests.int_return_max
2630
- assert_equal 0x7fffffff, res
2631
- end
2632
-
2633
- it "has a working function #int_return_min" do
2634
- res = GIMarshallingTests.int_return_min
2635
- assert_equal(-0x80000000, res)
2636
- end
2637
-
2638
- it "has a working function #int_return_out" do
2639
- res = GIMarshallingTests.int_return_out
2640
- assert_equal [6, 7], res
2641
- end
2642
-
2643
- it "has a working function #int_three_in_three_out" do
2644
- res = GIMarshallingTests.int_three_in_three_out 4, 5, 6
2645
- assert_equal [4, 5, 6], res
2646
- end
2647
-
2648
- it "has a working function #int_two_in_utf8_two_in_with_allow_none" do
2649
- GIMarshallingTests.int_two_in_utf8_two_in_with_allow_none 1, 2, "3", "4"
2650
- GIMarshallingTests.int_two_in_utf8_two_in_with_allow_none 1, 2, nil, nil
2651
- pass
2652
- end
2653
-
2654
- it "has a working function #long_in_max" do
2655
- GIMarshallingTests.long_in_max max_long
2656
- pass
2657
- end
2658
-
2659
- it "has a working function #long_in_min" do
2660
- GIMarshallingTests.long_in_min min_long
2661
- pass
2662
- end
2663
-
2664
- it "has a working function #long_inout_max_min" do
2665
- res = GIMarshallingTests.long_inout_max_min max_long
2666
- assert_equal min_long, res
2667
- end
2668
-
2669
- it "has a working function #long_inout_min_max" do
2670
- res = GIMarshallingTests.long_inout_min_max min_long
2671
- assert_equal max_long, res
2672
- end
2673
-
2674
- it "has a working function #long_out_max" do
2675
- res = GIMarshallingTests.long_out_max
2676
- assert_equal max_long, res
2677
- end
2678
-
2679
- it "has a working function #long_out_min" do
2680
- res = GIMarshallingTests.long_out_min
2681
- assert_equal min_long, res
2682
- end
2683
-
2684
- it "has a working function #long_return_max" do
2685
- res = GIMarshallingTests.long_return_max
2686
- assert_equal max_long, res
2687
- end
2688
-
2689
- it "has a working function #long_return_min" do
2690
- res = GIMarshallingTests.long_return_min
2691
- assert_equal min_long, res
2692
- end
2693
-
2694
- it "has a working function #multi_array_key_value_in" do
2695
- keys = %w(one two three)
2696
- values = [1, 2, 3].map { |val| GObject::Value.wrap_ruby_value val }
2697
- GIMarshallingTests.multi_array_key_value_in keys, values
2698
- end
2699
-
2700
- it "has a working function #no_type_flags_in" do
2701
- GIMarshallingTests.no_type_flags_in value2: true
2702
- pass
2703
- end
2704
-
2705
- it "has a working function #no_type_flags_in_zero" do
2706
- GIMarshallingTests.no_type_flags_in_zero 0
2707
- pass
2708
- end
2709
-
2710
- it "has a working function #no_type_flags_inout" do
2711
- res = GIMarshallingTests.no_type_flags_inout value2: true
2712
- _(res).must_equal(value1: true)
2713
- end
2714
-
2715
- it "has a working function #no_type_flags_out" do
2716
- res = GIMarshallingTests.no_type_flags_out
2717
- _(res).must_equal(value2: true)
2718
- end
2719
-
2720
- it "has a working function #no_type_flags_returnv" do
2721
- res = GIMarshallingTests.no_type_flags_returnv
2722
- _(res).must_equal(value2: true)
2723
- end
2724
-
2725
- it "has a working function #overrides_struct_returnv" do
2726
- res = GIMarshallingTests.overrides_struct_returnv
2727
- _(res).must_be_instance_of GIMarshallingTests::OverridesStruct
2728
- end
2729
-
2730
- it "has a working function #param_spec_in_bool" do
2731
- ps = GObject.param_spec_boolean "mybool", "nick", "blurb", true, :readable
2732
- GIMarshallingTests.param_spec_in_bool ps
2733
- pass
2734
- end
2735
-
2736
- it "has a working function #param_spec_out" do
2737
- res = GIMarshallingTests.param_spec_out
2738
- _(res.value_type).must_equal GObject::TYPE_STRING
2739
- _(res.get_name).must_equal "test-param"
2740
- end
2741
-
2742
- it "has a working function #param_spec_return" do
2743
- res = GIMarshallingTests.param_spec_return
2744
- _(res.value_type).must_equal GObject::TYPE_STRING
2745
- _(res.get_name).must_equal "test-param"
2746
- end
2747
-
2748
- it "has a working function #pointer_in_return" do
2749
- ptr = FFI::MemoryPointer.new 1
2750
- res = GIMarshallingTests.pointer_in_return ptr
2751
- assert_equal ptr.address, res.address
2752
- end
2753
-
2754
- it "has a working function #pointer_struct_get_type" do
2755
- res = GIMarshallingTests.pointer_struct_get_type
2756
- gtype = GObject.type_from_name "GIMarshallingTestsPointerStruct"
2757
- assert_equal gtype, res
2758
- end
2759
-
2760
- it "has a working function #pointer_struct_returnv" do
2761
- res = GIMarshallingTests.pointer_struct_returnv
2762
- assert_instance_of GIMarshallingTests::PointerStruct, res
2763
- assert_equal 42, res.long_
2764
- end
2765
-
2766
- it "has a working function #return_gvalue_flat_array" do
2767
- result = GIMarshallingTests.return_gvalue_flat_array
2768
- arr = result.to_a
2769
- _(arr[0].get_value).must_equal 42
2770
- _(arr[1].get_value).must_equal "42"
2771
- _(arr[2].get_value).must_equal true
2772
- end
2773
-
2774
- it "has a working function #short_in_max" do
2775
- GIMarshallingTests.short_in_max 0x7fff
2776
- pass
2777
- end
2778
-
2779
- it "has a working function #short_in_min" do
2780
- GIMarshallingTests.short_in_min(-0x8000)
2781
- pass
2782
- end
2783
-
2784
- it "has a working function #short_inout_max_min" do
2785
- res = GIMarshallingTests.short_inout_max_min 0x7fff
2786
- assert_equal(-0x8000, res)
2787
- end
2788
-
2789
- it "has a working function #short_inout_min_max" do
2790
- res = GIMarshallingTests.short_inout_min_max(-0x8000)
2791
- assert_equal 0x7fff, res
2792
- end
2793
-
2794
- it "has a working function #short_out_max" do
2795
- res = GIMarshallingTests.short_out_max
2796
- assert_equal 0x7fff, res
2797
- end
2798
-
2799
- it "has a working function #short_out_min" do
2800
- res = GIMarshallingTests.short_out_min
2801
- assert_equal(-0x8000, res)
2802
- end
2803
-
2804
- it "has a working function #short_return_max" do
2805
- res = GIMarshallingTests.short_return_max
2806
- assert_equal 0x7fff, res
2807
- end
2808
-
2809
- it "has a working function #short_return_min" do
2810
- res = GIMarshallingTests.short_return_min
2811
- assert_equal(-0x8000, res)
2812
- end
2813
-
2814
- it "has a working function #simple_struct_returnv" do
2815
- res = GIMarshallingTests.simple_struct_returnv
2816
- assert_instance_of GIMarshallingTests::SimpleStruct, res
2817
- assert_equal 6, res.long_
2818
- assert_equal 7, res.int8
2819
- end
2820
-
2821
- it "has a working function #size_in" do
2822
- GIMarshallingTests.size_in max_size_t
2823
- end
2824
-
2825
- it "has a working function #size_inout" do
2826
- res = GIMarshallingTests.size_inout max_size_t
2827
- assert_equal 0, res
2828
- end
2829
-
2830
- it "has a working function #size_out" do
2831
- res = GIMarshallingTests.size_out
2832
- assert_equal max_size_t, res
2833
- end
2834
-
2835
- it "has a working function #size_return" do
2836
- res = GIMarshallingTests.size_return
2837
- assert_equal max_size_t, res
2838
- end
2839
-
2840
- it "has a working function #ssize_in_max" do
2841
- GIMarshallingTests.ssize_in_max max_ssize_t
2842
- pass
2843
- end
2844
-
2845
- it "has a working function #ssize_in_min" do
2846
- GIMarshallingTests.ssize_in_min min_ssize_t
2847
- pass
2848
- end
2849
-
2850
- it "has a working function #ssize_inout_max_min" do
2851
- res = GIMarshallingTests.ssize_inout_max_min max_ssize_t
2852
- assert_equal min_ssize_t, res
2853
- end
2854
-
2855
- it "has a working function #ssize_inout_min_max" do
2856
- res = GIMarshallingTests.ssize_inout_min_max min_ssize_t
2857
- assert_equal max_ssize_t, res
2858
- end
2859
-
2860
- it "has a working function #ssize_out_max" do
2861
- res = GIMarshallingTests.ssize_out_max
2862
- assert_equal max_ssize_t, res
2863
- end
2864
-
2865
- it "has a working function #ssize_out_min" do
2866
- res = GIMarshallingTests.ssize_out_min
2867
- assert_equal min_ssize_t, res
2868
- end
2869
-
2870
- it "has a working function #ssize_return_max" do
2871
- res = GIMarshallingTests.ssize_return_max
2872
- assert_equal max_ssize_t, res
2873
- end
2874
-
2875
- it "has a working function #ssize_return_min" do
2876
- res = GIMarshallingTests.ssize_return_min
2877
- assert_equal min_ssize_t, res
2878
- end
2879
-
2880
- it "has a working function #test_interface_test_int8_in" do
2881
- derived_klass.class_eval { include GIMarshallingTests::Interface }
2882
- instance = make_derived_instance do |info|
2883
- info.install_vfunc_implementation :test_int8_in, proc { |obj, in_| obj.int = in_ }
2884
- end
2885
- _(instance.int).must_equal 0
2886
- GIMarshallingTests.test_interface_test_int8_in instance, 8
2887
- _(instance.int).must_equal 8
2888
- end
2889
-
2890
- it "has a working function #time_t_in" do
2891
- GIMarshallingTests.time_t_in 1_234_567_890
2892
- pass
2893
- end
2894
-
2895
- it "has a working function #time_t_inout" do
2896
- res = GIMarshallingTests.time_t_inout 1_234_567_890
2897
- assert_equal 0, res
2898
- end
2899
-
2900
- it "has a working function #time_t_out" do
2901
- res = GIMarshallingTests.time_t_out
2902
- assert_equal 1_234_567_890, res
2903
- end
2904
-
2905
- it "has a working function #time_t_return" do
2906
- res = GIMarshallingTests.time_t_return
2907
- assert_equal 1_234_567_890, res
2908
- end
2909
-
2910
- it "has a working function #uint16_in" do
2911
- GIMarshallingTests.uint16_in 0xffff
2912
- pass
2913
- end
2914
-
2915
- it "has a working function #uint16_inout" do
2916
- res = GIMarshallingTests.uint16_inout 0xffff
2917
- assert_equal 0, res
2918
- end
2919
-
2920
- it "has a working function #uint16_out" do
2921
- res = GIMarshallingTests.uint16_out
2922
- assert_equal 0xffff, res
2923
- end
2924
-
2925
- it "has a working function #uint16_return" do
2926
- res = GIMarshallingTests.uint16_return
2927
- assert_equal 0xffff, res
2928
- end
2929
-
2930
- it "has a working function #uint32_in" do
2931
- GIMarshallingTests.uint32_in 0xffffffff
2932
- end
2933
-
2934
- it "has a working function #uint32_inout" do
2935
- res = GIMarshallingTests.uint32_inout 0xffffffff
2936
- assert_equal 0, res
2937
- end
2938
-
2939
- it "has a working function #uint32_out" do
2940
- res = GIMarshallingTests.uint32_out
2941
- assert_equal 0xffffffff, res
2942
- end
2943
-
2944
- it "has a working function #uint32_return" do
2945
- res = GIMarshallingTests.uint32_return
2946
- assert_equal 0xffffffff, res
2947
- end
2948
-
2949
- it "has a working function #uint64_in" do
2950
- GIMarshallingTests.uint64_in 0xffff_ffff_ffff_ffff
2951
- pass
2952
- end
2953
-
2954
- it "has a working function #uint64_inout" do
2955
- res = GIMarshallingTests.uint64_inout 0xffff_ffff_ffff_ffff
2956
- assert_equal 0, res
2957
- end
2958
-
2959
- it "has a working function #uint64_out" do
2960
- res = GIMarshallingTests.uint64_out
2961
- assert_equal 0xffff_ffff_ffff_ffff, res
2962
- end
2963
-
2964
- it "has a working function #uint64_return" do
2965
- res = GIMarshallingTests.uint64_return
2966
- assert_equal 0xffff_ffff_ffff_ffff, res
2967
- end
2968
-
2969
- it "has a working function #uint8_in" do
2970
- GIMarshallingTests.uint8_in 0xff
2971
- end
2972
-
2973
- it "has a working function #uint8_inout" do
2974
- res = GIMarshallingTests.uint8_inout 0xff
2975
- assert_equal 0, res
2976
- end
2977
-
2978
- it "has a working function #uint8_out" do
2979
- res = GIMarshallingTests.uint8_out
2980
- assert_equal 0xff, res
2981
- end
2982
-
2983
- it "has a working function #uint8_return" do
2984
- res = GIMarshallingTests.uint8_return
2985
- assert_equal 0xff, res
2986
- end
2987
-
2988
- it "has a working function #uint_in" do
2989
- GIMarshallingTests.uint_in max_uint
2990
- pass
2991
- end
2992
-
2993
- it "has a working function #uint_inout" do
2994
- res = GIMarshallingTests.uint_inout max_uint
2995
- assert_equal 0, res
2996
- end
2997
-
2998
- it "has a working function #uint_out" do
2999
- res = GIMarshallingTests.uint_out
3000
- assert_equal max_uint, res
3001
- end
3002
-
3003
- it "has a working function #uint_return" do
3004
- res = GIMarshallingTests.uint_return
3005
- assert_equal max_uint, res
3006
- end
3007
-
3008
- it "has a working function #ulong_in" do
3009
- GIMarshallingTests.ulong_in max_ulong
3010
- end
3011
-
3012
- it "has a working function #ulong_inout" do
3013
- res = GIMarshallingTests.ulong_inout max_ulong
3014
- assert_equal 0, res
3015
- end
3016
-
3017
- it "has a working function #ulong_out" do
3018
- res = GIMarshallingTests.ulong_out
3019
- assert_equal max_ulong, res
3020
- end
3021
-
3022
- it "has a working function #ulong_return" do
3023
- res = GIMarshallingTests.ulong_return
3024
- assert_equal max_ulong, res
3025
- end
3026
-
3027
- it "has a working function #union_inout" do
3028
- skip "This function is defined in the header but not implemented"
3029
- end
3030
-
3031
- it "has a working function #union_out" do
3032
- skip "This function is defined in the header but not implemented"
3033
- end
3034
-
3035
- it "has a working function #union_returnv" do
3036
- res = GIMarshallingTests.union_returnv
3037
- assert_instance_of GIMarshallingTests::Union, res
3038
- assert_equal 42, res.long_
3039
- end
3040
-
3041
- it "has a working function #ushort_in" do
3042
- GIMarshallingTests.ushort_in max_ushort
3043
- pass
3044
- end
3045
-
3046
- it "has a working function #ushort_inout" do
3047
- res = GIMarshallingTests.ushort_inout max_ushort
3048
- assert_equal 0, res
3049
- end
3050
-
3051
- it "has a working function #ushort_out" do
3052
- res = GIMarshallingTests.ushort_out
3053
- assert_equal max_ushort, res
3054
- end
3055
-
3056
- it "has a working function #ushort_return" do
3057
- res = GIMarshallingTests.ushort_return
3058
- assert_equal max_ushort, res
3059
- end
3060
-
3061
- it "has a working function #utf8_as_uint8array_in" do
3062
- GIMarshallingTests.utf8_as_uint8array_in GIMarshallingTests::CONSTANT_UTF8.bytes.to_a
3063
- pass
3064
- end
3065
-
3066
- it "has a working function #utf8_dangling_out" do
3067
- res = GIMarshallingTests.utf8_dangling_out
3068
- assert_nil res
3069
- end
3070
-
3071
- it "has a working function #utf8_full_in" do
3072
- skip "This function is defined in the header but not implemented"
3073
- end
3074
-
3075
- it "has a working function #utf8_full_inout" do
3076
- res = GIMarshallingTests.utf8_full_inout "const ♥ utf8"
3077
- assert_equal "", res
3078
- end
3079
-
3080
- it "has a working function #utf8_full_out" do
3081
- res = GIMarshallingTests.utf8_full_out
3082
- assert_equal "const ♥ utf8", res
3083
- end
3084
-
3085
- it "has a working function #utf8_full_return" do
3086
- res = GIMarshallingTests.utf8_full_return
3087
- assert_equal "const ♥ utf8", res
3088
- end
3089
-
3090
- it "has a working function #utf8_none_in" do
3091
- GIMarshallingTests.utf8_none_in "const ♥ utf8"
3092
- pass
3093
- end
3094
-
3095
- it "has a working function #utf8_none_inout" do
3096
- res = GIMarshallingTests.utf8_none_inout "const ♥ utf8"
3097
- assert_equal "", res
3098
- end
3099
-
3100
- it "has a working function #utf8_none_out" do
3101
- res = GIMarshallingTests.utf8_none_out
3102
- assert_equal "const ♥ utf8", res
3103
- end
3104
-
3105
- it "has a working function #utf8_none_return" do
3106
- res = GIMarshallingTests.utf8_none_return
3107
- assert_equal "const ♥ utf8", res
3108
- end
3109
- end