gir_ffi 0.7.3 → 0.7.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. checksums.yaml +4 -4
  2. data/Changelog.md +10 -0
  3. data/Rakefile +9 -1
  4. data/TODO.md +4 -0
  5. data/lib/ffi-glib.rb +5 -0
  6. data/lib/ffi-glib/bytes.rb +49 -0
  7. data/lib/ffi-glib/container_class_methods.rb +1 -4
  8. data/lib/ffi-glib/error.rb +17 -0
  9. data/lib/ffi-gobject/value.rb +6 -3
  10. data/lib/ffi-gobject_introspection/i_callback_info.rb +0 -1
  11. data/lib/ffi-gobject_introspection/i_constant_info.rb +10 -10
  12. data/lib/ffi-gobject_introspection/i_repository.rb +20 -20
  13. data/lib/ffi-gobject_introspection/i_vfunc_info.rb +7 -0
  14. data/lib/ffi-gobject_introspection/lib.rb +1 -7
  15. data/lib/gir_ffi/arg_helper.rb +23 -2
  16. data/lib/gir_ffi/builders/argument_builder.rb +15 -1
  17. data/lib/gir_ffi/builders/base_argument_builder.rb +1 -0
  18. data/lib/gir_ffi/builders/callback_argument_builder.rb +49 -7
  19. data/lib/gir_ffi/builders/callback_return_value_builder.rb +6 -2
  20. data/lib/gir_ffi/builders/closure_convertor.rb +1 -1
  21. data/lib/gir_ffi/builders/null_convertor.rb +1 -0
  22. data/lib/gir_ffi/builders/property_builder.rb +1 -1
  23. data/lib/gir_ffi/builders/return_value_builder.rb +1 -1
  24. data/lib/gir_ffi/builders/type_builder.rb +9 -9
  25. data/lib/gir_ffi/builders/vfunc_builder.rb +3 -1
  26. data/lib/gir_ffi/callback_base.rb +6 -0
  27. data/lib/gir_ffi/error_argument_info.rb +12 -3
  28. data/lib/gir_ffi/error_type_info.rb +21 -0
  29. data/lib/gir_ffi/ffi_ext/pointer.rb +5 -6
  30. data/lib/gir_ffi/glib_error.rb +18 -0
  31. data/lib/gir_ffi/in_pointer.rb +1 -1
  32. data/lib/gir_ffi/info_ext/i_type_info.rb +44 -30
  33. data/lib/gir_ffi/info_ext/i_vfunc_info.rb +13 -1
  34. data/lib/gir_ffi/type_map.rb +30 -29
  35. data/lib/gir_ffi/user_defined_type_info.rb +1 -0
  36. data/lib/gir_ffi/version.rb +1 -1
  37. data/lib/gir_ffi/vfunc_base.rb +1 -0
  38. data/lib/gir_ffi/zero_terminated.rb +3 -8
  39. data/test/base_test_helper.rb +1 -0
  40. data/test/ffi-glib/array_test.rb +2 -2
  41. data/test/ffi-glib/bytes_test.rb +54 -0
  42. data/test/ffi-glib/ptr_array_test.rb +2 -2
  43. data/test/ffi-gobject/value_test.rb +4 -4
  44. data/test/ffi-gobject_introspection/i_repository_test.rb +1 -1
  45. data/test/gir_ffi/builders/callback_argument_builder_test.rb +44 -0
  46. data/test/gir_ffi/builders/callback_builder_test.rb +1 -1
  47. data/test/gir_ffi/builders/callback_return_value_builder_test.rb +74 -0
  48. data/test/gir_ffi/builders/function_builder_test.rb +23 -2
  49. data/test/gir_ffi/builders/property_builder_test.rb +15 -0
  50. data/test/gir_ffi/builders/return_value_builder_test.rb +26 -26
  51. data/test/gir_ffi/builders/signal_builder_test.rb +5 -5
  52. data/test/gir_ffi/builders/union_builder_test.rb +2 -1
  53. data/test/gir_ffi/builders/vfunc_builder_test.rb +125 -4
  54. data/test/gir_ffi/error_type_info_test.rb +48 -0
  55. data/test/gir_ffi/in_pointer_test.rb +1 -1
  56. data/test/gir_ffi/sized_array_test.rb +2 -2
  57. data/test/integration/generated_gimarshallingtests_test.rb +199 -31
  58. data/test/integration/generated_regress_test.rb +37 -33
  59. metadata +214 -202
@@ -23,6 +23,7 @@ require 'gir_ffi-base'
23
23
  require 'ffi-gobject_introspection'
24
24
 
25
25
  GObjectIntrospection::IRepository.prepend_search_path File.join(File.dirname(__FILE__), 'lib')
26
+
26
27
  module GObjectIntrospection
27
28
  class IRepository
28
29
  def shared_library_with_regress namespace
@@ -149,8 +149,8 @@ describe GLib::Array do
149
149
 
150
150
  it "raises an error if the index is out of bounds" do
151
151
  arr = GLib::Array.from :gint32, [1, 2, 3]
152
- lambda { arr.index(16) }.must_raise IndexError
153
- lambda { arr.index(-1) }.must_raise IndexError
152
+ proc { arr.index(16) }.must_raise IndexError
153
+ proc { arr.index(-1) }.must_raise IndexError
154
154
  end
155
155
  end
156
156
  end
@@ -0,0 +1,54 @@
1
+ require 'gir_ffi_test_helper'
2
+
3
+ describe GLib::Bytes do
4
+ it "can succesfully be created with Glib::Bytes.new" do
5
+ bytes = GLib::Bytes.new [1, 2, 3]
6
+ bytes.must_be_instance_of GLib::Bytes
7
+ end
8
+
9
+ it "has a working #get_size method" do
10
+ bytes = GLib::Bytes.new [1, 2, 3]
11
+ bytes.get_size.must_equal 3
12
+ end
13
+
14
+ it "has a working #get_data method" do
15
+ bytes = GLib::Bytes.new [1, 2, 3]
16
+ bytes.get_data.to_a.must_equal [1, 2, 3]
17
+ end
18
+
19
+ it "has a working #each method" do
20
+ a = []
21
+ bytes = GLib::Bytes.new [1, 2, 3]
22
+ bytes.each do |v|
23
+ a.unshift v
24
+ end
25
+ a.must_equal [3, 2, 1]
26
+ end
27
+
28
+ it "has a working #to_a method" do
29
+ bytes = GLib::Bytes.new [1, 2, 3]
30
+ bytes.to_a.must_equal [1, 2, 3]
31
+ end
32
+
33
+ describe ".from" do
34
+ it "creates a GLib::Bytes object form an array of small integers" do
35
+ bytes = GLib::Bytes.from [1, 2, 3]
36
+ bytes.must_be_instance_of GLib::Bytes
37
+ bytes.to_a.must_equal [1, 2, 3]
38
+ end
39
+
40
+ it "returns its argument if given a GLib::Bytes object" do
41
+ bytes = GLib::Bytes.new [1, 2, 3]
42
+ result = GLib::Bytes.from bytes
43
+ assert result.equal?(bytes)
44
+ end
45
+
46
+ it "wraps its argument if given a pointer" do
47
+ bytes = GLib::Bytes.new [1, 2, 3]
48
+ ptr = bytes.to_ptr
49
+ result = GLib::Bytes.from ptr
50
+ result.to_a.must_equal [1, 2, 3]
51
+ result.to_ptr.must_equal ptr
52
+ end
53
+ end
54
+ end
@@ -103,8 +103,8 @@ describe GLib::PtrArray do
103
103
 
104
104
  it "raises an error if the index is out of bounds" do
105
105
  arr = GLib::PtrArray.from :utf8, ["1", "2", "3"]
106
- lambda { arr.index(16) }.must_raise IndexError
107
- lambda { arr.index(-1) }.must_raise IndexError
106
+ proc { arr.index(16) }.must_raise IndexError
107
+ proc { arr.index(-1) }.must_raise IndexError
108
108
  end
109
109
  end
110
110
  end
@@ -65,7 +65,7 @@ describe GObject::Value do
65
65
  end
66
66
 
67
67
  it "handles long values" do
68
- value = 0x1234_5678_9012_3456
68
+ value = FFI.type_size(:long) == 8 ? 0x1234_5678_9012_3456 : 0x1234_5678
69
69
  gv = GObject::Value.for_g_type GObject::TYPE_LONG
70
70
  gv.set_value value
71
71
  gv.get_long.must_equal value
@@ -93,7 +93,7 @@ describe GObject::Value do
93
93
  end
94
94
 
95
95
  it "handles ulong values" do
96
- value = 0x1234_5678_9012_3456
96
+ value = FFI.type_size(:long) == 8 ? 0x1234_5678_9012_3456 : 0x1234_5678
97
97
  gv = GObject::Value.for_g_type GObject::TYPE_ULONG
98
98
  gv.set_value value
99
99
  gv.get_ulong.must_equal value
@@ -157,7 +157,7 @@ describe GObject::Value do
157
157
  end
158
158
 
159
159
  it "unwraps a long" do
160
- value = 0x1234_5678_9012_3456
160
+ value = FFI.type_size(:long) == 8 ? 0x1234_5678_9012_3456 : 0x1234_5678
161
161
  gv = GObject::Value.for_g_type GObject::TYPE_LONG
162
162
  gv.set_long value
163
163
  gv.get_value.must_equal value
@@ -185,7 +185,7 @@ describe GObject::Value do
185
185
  end
186
186
 
187
187
  it "unwraps a ulong" do
188
- value = 0x1234_5678_9012_3456
188
+ value = FFI.type_size(:long) == 8 ? 0x1234_5678_9012_3456 : 0x1234_5678
189
189
  gv = GObject::Value.for_g_type GObject::TYPE_ULONG
190
190
  gv.set_ulong value
191
191
  gv.get_value.must_equal value
@@ -42,7 +42,7 @@ describe GObjectIntrospection::IRepository do
42
42
 
43
43
  describe "#find_by_gtype" do
44
44
  it "raises an error if 0 is passed as the gtype" do
45
- lambda { gir.find_by_gtype 0 }.must_raise ArgumentError
45
+ proc { gir.find_by_gtype 0 }.must_raise ArgumentError
46
46
  end
47
47
  end
48
48
 
@@ -0,0 +1,44 @@
1
+ require 'gir_ffi_test_helper'
2
+
3
+ describe GirFFI::Builders::CallbackArgumentBuilder do
4
+ let(:var_gen) { GirFFI::VariableNameGenerator.new }
5
+ let(:builder) { GirFFI::Builders::CallbackArgumentBuilder.new(var_gen, arg_info) }
6
+
7
+ describe "for an argument with direction :out" do
8
+ describe "for :zero_terminated" do
9
+ let(:vfunc_info) {
10
+ get_vfunc_introspection_data('GIMarshallingTests', 'Object',
11
+ 'vfunc_array_out_parameter') }
12
+ let(:arg_info) { vfunc_info.args[0] }
13
+
14
+ before { skip unless vfunc_info }
15
+
16
+ it "has the correct value for #pre_conversion" do
17
+ builder.pre_conversion.must_equal [ "_v1 = GirFFI::InOutPointer.new([:pointer, :zero_terminated], a)" ]
18
+ end
19
+
20
+ it "has the correct value for #post_conversion" do
21
+ builder.post_conversion.must_equal [ "_v1.set_value GirFFI::ZeroTerminated.from(:gfloat, _v2)" ]
22
+ end
23
+ end
24
+ end
25
+
26
+ describe "for an argument with direction :error" do
27
+ let(:arg_info) { GirFFI::ErrorArgumentInfo.new }
28
+
29
+ it "sets up a rescueing block in #pre_conversion" do
30
+ builder.pre_conversion.must_equal [
31
+ "_v1 = GirFFI::InOutPointer.new([:pointer, :error], _error)",
32
+ "begin"
33
+ ]
34
+ end
35
+
36
+ it "converts any exceptions to GLib::Error in #post_conversion" do
37
+ builder.post_conversion.must_equal [
38
+ "rescue => _v1",
39
+ "_v2.set_value GLib::Error.from(_v1)",
40
+ "end"
41
+ ]
42
+ end
43
+ end
44
+ end
@@ -39,7 +39,7 @@ describe GirFFI::Builders::CallbackBuilder do
39
39
  it "returns a valid mapping method" do
40
40
  expected = <<-CODE.reset_indentation
41
41
  def self.call_with_argument_mapping(_proc, user_data)
42
- _v1 = GirFFI::ArgHelper::OBJECT_STORE[user_data.address]
42
+ _v1 = GirFFI::ArgHelper::OBJECT_STORE.fetch(user_data)
43
43
  _v2 = _proc.call(_v1)
44
44
  return _v2
45
45
  end
@@ -0,0 +1,74 @@
1
+ require 'gir_ffi_test_helper'
2
+
3
+ describe GirFFI::Builders::CallbackReturnValueBuilder do
4
+ let(:var_gen) { GirFFI::VariableNameGenerator.new }
5
+ let(:return_value_info) { GirFFI::ReturnValueInfo.new(type_info) }
6
+ let(:type_info) { callback_info.return_type }
7
+ let(:builder) { GirFFI::Builders::CallbackReturnValueBuilder.new(var_gen,
8
+ return_value_info) }
9
+
10
+ before do
11
+ skip unless callback_info
12
+ end
13
+
14
+ describe "for :gint32" do
15
+ let(:callback_info) { get_introspection_data("GIMarshallingTests", "CallbackIntInt") }
16
+
17
+ it "has no statements in #post_conversion" do
18
+ builder.post_conversion.must_equal []
19
+ end
20
+
21
+ it "returns the result of the callback directly" do
22
+ builder.capture_variable_name.must_equal "_v1"
23
+ builder.return_value_name.must_equal "_v1"
24
+ end
25
+ end
26
+
27
+ describe "for :void" do
28
+ let(:callback_info) { get_introspection_data("GIMarshallingTests",
29
+ "CallbackMultipleOutParameters") }
30
+
31
+ it "has no statements in #post_conversion" do
32
+ builder.post_conversion.must_equal []
33
+ end
34
+
35
+ it "returns nothing" do
36
+ builder.capture_variable_name.must_be_nil
37
+ builder.return_value_name.must_be_nil
38
+ end
39
+ end
40
+
41
+ describe "for :enum" do
42
+ let(:callback_info) { get_vfunc_introspection_data("GIMarshallingTests",
43
+ "Object",
44
+ "vfunc_return_enum") }
45
+
46
+ it "converts the result" do
47
+ # Ensure variable names are generated in order
48
+ builder.capture_variable_name.must_equal "_v1"
49
+ builder.post_conversion.must_equal [ "_v2 = GIMarshallingTests::Enum.from(_v1)"]
50
+ end
51
+
52
+ it "returns the result of the conversion" do
53
+ builder.capture_variable_name.must_equal "_v1"
54
+ builder.return_value_name.must_equal "_v2"
55
+ end
56
+ end
57
+
58
+ describe "for :object" do
59
+ let(:callback_info) { get_vfunc_introspection_data("GIMarshallingTests",
60
+ "Object",
61
+ "vfunc_return_object_transfer_full") }
62
+
63
+ it "converts the result to a pointer" do
64
+ # Ensure variable names are generated in order
65
+ builder.capture_variable_name.must_equal "_v1"
66
+ builder.post_conversion.must_equal [ "_v2 = GObject::Object.from(_v1).to_ptr"]
67
+ end
68
+
69
+ it "returns the result of the conversion" do
70
+ builder.capture_variable_name.must_equal "_v1"
71
+ builder.return_value_name.must_equal "_v2"
72
+ end
73
+ end
74
+ end
@@ -169,9 +169,10 @@ describe GirFFI::Builders::FunctionBuilder do
169
169
  describe "for GLib::Variant.get_strv" do
170
170
  let(:function_info) { get_method_introspection_data 'GLib', 'Variant', 'get_strv' }
171
171
  it "builds a correct definition" do
172
+ size_type = ":guint#{FFI.type_size(:size_t) * 8}"
172
173
  code.must_equal <<-CODE.reset_indentation
173
174
  def get_strv
174
- _v1 = GirFFI::InOutPointer.for :guint64
175
+ _v1 = GirFFI::InOutPointer.for #{size_type}
175
176
  _v2 = GLib::Lib.g_variant_get_strv self, _v1
176
177
  _v3 = GLib::Strv.wrap(_v2)
177
178
  return _v3
@@ -181,7 +182,7 @@ describe GirFFI::Builders::FunctionBuilder do
181
182
  end
182
183
 
183
184
  describe "for Regress.has_parameter_named_attrs" do
184
- let(:function_info) {get_introspection_data 'Regress', 'has_parameter_named_attrs' }
185
+ let(:function_info) { get_introspection_data 'Regress', 'has_parameter_named_attrs' }
185
186
 
186
187
  it "builds a correct definition" do
187
188
  skip unless function_info
@@ -195,5 +196,25 @@ describe GirFFI::Builders::FunctionBuilder do
195
196
  CODE
196
197
  end
197
198
  end
199
+
200
+ describe "for GIMarshallingTests::Object.method_int8_arg_and_out_callee" do
201
+ let(:function_info) {
202
+ get_method_introspection_data('GIMarshallingTests', 'Object',
203
+ 'method_int8_arg_and_out_callee')
204
+ }
205
+
206
+ it "builds a correct definition" do
207
+ skip unless function_info
208
+ code.must_equal <<-CODE.reset_indentation
209
+ def method_int8_arg_and_out_callee arg
210
+ _v1 = arg
211
+ _v2 = GirFFI::InOutPointer.for [:pointer, :gint8]
212
+ GIMarshallingTests::Lib.gi_marshalling_tests_object_method_int8_arg_and_out_callee self, _v1, _v2
213
+ _v3 = GirFFI::InOutPointer.new(:gint8, _v2.to_value).to_value
214
+ return _v3
215
+ end
216
+ CODE
217
+ end
218
+ end
198
219
  end
199
220
  end
@@ -107,4 +107,19 @@ describe GirFFI::Builders::PropertyBuilder do
107
107
  builder.setter_def.must_equal expected
108
108
  end
109
109
  end
110
+
111
+ describe "#container_defines_getter_method?" do
112
+ let(:property_info) { Object.new.tap {|o| o.extend GirFFI::InfoExt::IPropertyInfo } }
113
+ let(:container_info) { Object.new }
114
+
115
+ before do
116
+ stub(property_info).container { container_info }
117
+ stub(property_info).name { "foo-bar" }
118
+ stub(container_info).find_instance_method("foo_bar") { true }
119
+ end
120
+
121
+ it "finds methods with underscores for properties with dashes" do
122
+ builder.container_defines_getter_method?.must_equal true
123
+ end
124
+ end
110
125
  end
@@ -10,7 +10,7 @@ describe GirFFI::Builders::ReturnValueBuilder do
10
10
 
11
11
  describe "for :gint32" do
12
12
  let(:type_info) { get_introspection_data("GIMarshallingTests",
13
- "int_return_min").return_type }
13
+ "int_return_min").return_type }
14
14
 
15
15
  it "has no statements in #post_conversion" do
16
16
  builder.post_conversion.must_equal []
@@ -24,8 +24,8 @@ describe GirFFI::Builders::ReturnValueBuilder do
24
24
 
25
25
  describe "for :struct" do
26
26
  let(:type_info) { get_method_introspection_data("GIMarshallingTests",
27
- "BoxedStruct",
28
- "returnv").return_type }
27
+ "BoxedStruct",
28
+ "returnv").return_type }
29
29
 
30
30
  it "wraps the result in #post_conversion" do
31
31
  builder.capture_variable_name.must_equal "_v1"
@@ -40,8 +40,8 @@ describe GirFFI::Builders::ReturnValueBuilder do
40
40
 
41
41
  describe "for :union" do
42
42
  let(:type_info) { get_method_introspection_data("GIMarshallingTests",
43
- "Union",
44
- "returnv").return_type }
43
+ "Union",
44
+ "returnv").return_type }
45
45
 
46
46
  it "wraps the result in #post_conversion" do
47
47
  builder.capture_variable_name.must_equal "_v1"
@@ -56,8 +56,8 @@ describe GirFFI::Builders::ReturnValueBuilder do
56
56
 
57
57
  describe "for :interface" do
58
58
  let(:type_info) { get_method_introspection_data("Gio",
59
- "File",
60
- "new_for_commandline_arg").return_type }
59
+ "File",
60
+ "new_for_commandline_arg").return_type }
61
61
 
62
62
  it "wraps the result in #post_conversion" do
63
63
  builder.capture_variable_name.must_equal "_v1"
@@ -73,8 +73,8 @@ describe GirFFI::Builders::ReturnValueBuilder do
73
73
  describe "for :object" do
74
74
  describe "when the method is not a constructor" do
75
75
  let(:type_info) { get_method_introspection_data("GIMarshallingTests",
76
- "Object",
77
- "full_return").return_type }
76
+ "Object",
77
+ "full_return").return_type }
78
78
  let(:for_constructor) { false }
79
79
 
80
80
  it "wraps the result in #post_conversion" do
@@ -90,8 +90,8 @@ describe GirFFI::Builders::ReturnValueBuilder do
90
90
 
91
91
  describe "when the method is a constructor" do
92
92
  let(:type_info) { get_method_introspection_data("GIMarshallingTests",
93
- "Object",
94
- "new").return_type }
93
+ "Object",
94
+ "new").return_type }
95
95
  let(:for_constructor) { true }
96
96
 
97
97
  it "wraps the result in #post_conversion" do
@@ -108,8 +108,8 @@ describe GirFFI::Builders::ReturnValueBuilder do
108
108
 
109
109
  describe "for :strv" do
110
110
  let(:type_info) { get_method_introspection_data("GLib",
111
- "KeyFile",
112
- "get_locale_string_list").return_type }
111
+ "KeyFile",
112
+ "get_locale_string_list").return_type }
113
113
 
114
114
  it "wraps the result in #post_conversion" do
115
115
  builder.capture_variable_name.must_equal "_v1"
@@ -124,8 +124,8 @@ describe GirFFI::Builders::ReturnValueBuilder do
124
124
 
125
125
  describe "for :zero_terminated" do
126
126
  let(:type_info) { get_method_introspection_data("GLib",
127
- "Variant",
128
- "dup_bytestring").return_type }
127
+ "Variant",
128
+ "dup_bytestring").return_type }
129
129
  before do
130
130
  skip unless type_info.zero_terminated?
131
131
  end
@@ -143,7 +143,7 @@ describe GirFFI::Builders::ReturnValueBuilder do
143
143
 
144
144
  describe "for :byte_array" do
145
145
  let(:type_info) { get_introspection_data("GIMarshallingTests",
146
- "bytearray_full_return").return_type }
146
+ "bytearray_full_return").return_type }
147
147
 
148
148
  it "wraps the result in #post_conversion" do
149
149
  builder.capture_variable_name.must_equal "_v1"
@@ -158,7 +158,7 @@ describe GirFFI::Builders::ReturnValueBuilder do
158
158
 
159
159
  describe "for :ptr_array" do
160
160
  let(:type_info) { get_introspection_data("GIMarshallingTests",
161
- "gptrarray_utf8_none_return").return_type }
161
+ "gptrarray_utf8_none_return").return_type }
162
162
 
163
163
  it "wraps the result in #post_conversion" do
164
164
  builder.capture_variable_name.must_equal "_v1"
@@ -173,7 +173,7 @@ describe GirFFI::Builders::ReturnValueBuilder do
173
173
 
174
174
  describe "for :glist" do
175
175
  let(:type_info) { get_introspection_data("GIMarshallingTests",
176
- "glist_int_none_return").return_type }
176
+ "glist_int_none_return").return_type }
177
177
 
178
178
  it "wraps the result in #post_conversion" do
179
179
  builder.capture_variable_name.must_equal "_v1"
@@ -188,7 +188,7 @@ describe GirFFI::Builders::ReturnValueBuilder do
188
188
 
189
189
  describe "for :gslist" do
190
190
  let(:type_info) { get_introspection_data("GIMarshallingTests",
191
- "gslist_int_none_return").return_type }
191
+ "gslist_int_none_return").return_type }
192
192
 
193
193
  it "wraps the result in #post_conversion" do
194
194
  builder.capture_variable_name.must_equal "_v1"
@@ -203,7 +203,7 @@ describe GirFFI::Builders::ReturnValueBuilder do
203
203
 
204
204
  describe "for :ghash" do
205
205
  let(:type_info) { get_introspection_data("GIMarshallingTests",
206
- "ghashtable_int_none_return").return_type }
206
+ "ghashtable_int_none_return").return_type }
207
207
 
208
208
  it "wraps the result in #post_conversion" do
209
209
  builder.capture_variable_name.must_equal "_v1"
@@ -218,7 +218,7 @@ describe GirFFI::Builders::ReturnValueBuilder do
218
218
 
219
219
  describe "for :array" do
220
220
  let(:type_info) { get_introspection_data("GIMarshallingTests",
221
- "garray_int_none_return").return_type }
221
+ "garray_int_none_return").return_type }
222
222
 
223
223
 
224
224
  it "wraps the result in #post_conversion" do
@@ -234,7 +234,7 @@ describe GirFFI::Builders::ReturnValueBuilder do
234
234
 
235
235
  describe "for :error" do
236
236
  let(:type_info) { get_introspection_data("GIMarshallingTests",
237
- "gerror_return").return_type }
237
+ "gerror_return").return_type }
238
238
 
239
239
  it "wraps the result in #post_conversion" do
240
240
  builder.capture_variable_name.must_equal "_v1"
@@ -250,7 +250,7 @@ describe GirFFI::Builders::ReturnValueBuilder do
250
250
  describe "for :c" do
251
251
  describe "with fixed size" do
252
252
  let(:type_info) { get_introspection_data("GIMarshallingTests",
253
- "array_fixed_int_return").return_type }
253
+ "array_fixed_int_return").return_type }
254
254
 
255
255
  it "converts the result in #post_conversion" do
256
256
  builder.capture_variable_name.must_equal "_v1"
@@ -266,8 +266,8 @@ describe GirFFI::Builders::ReturnValueBuilder do
266
266
  describe "with separate size parameter" do
267
267
  let(:length_argument) { Object.new }
268
268
  let(:type_info) { get_method_introspection_data("GIMarshallingTests",
269
- "Object",
270
- "method_array_return").return_type }
269
+ "Object",
270
+ "method_array_return").return_type }
271
271
 
272
272
  before do
273
273
  stub(length_argument).post_converted_name { "bar" }
@@ -347,7 +347,7 @@ describe GirFFI::Builders::ReturnValueBuilder do
347
347
 
348
348
  it "fetches the stored object in #post_conversion" do
349
349
  builder.capture_variable_name.must_equal "_v1"
350
- builder.post_conversion.must_equal [ "_v2 = GirFFI::ArgHelper::OBJECT_STORE[_v1.address]" ]
350
+ builder.post_conversion.must_equal [ "_v2 = GirFFI::ArgHelper::OBJECT_STORE.fetch(_v1)" ]
351
351
  end
352
352
 
353
353
  it "returns the stored object" do