gir_ffi 0.7.10 → 0.8.0

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 (150) hide show
  1. checksums.yaml +4 -4
  2. data/Changelog.md +6 -0
  3. data/Gemfile +3 -1
  4. data/README.md +5 -2
  5. data/lib/ffi-glib.rb +1 -0
  6. data/lib/ffi-glib/array.rb +6 -6
  7. data/lib/ffi-glib/array_methods.rb +1 -1
  8. data/lib/ffi-glib/byte_array.rb +1 -1
  9. data/lib/ffi-glib/bytes.rb +3 -3
  10. data/lib/ffi-glib/container_class_methods.rb +2 -2
  11. data/lib/ffi-glib/error.rb +2 -2
  12. data/lib/ffi-glib/hash_table.rb +9 -9
  13. data/lib/ffi-glib/iconv.rb +1 -1
  14. data/lib/ffi-glib/list.rb +2 -2
  15. data/lib/ffi-glib/list_methods.rb +8 -7
  16. data/lib/ffi-glib/main_loop.rb +1 -1
  17. data/lib/ffi-glib/ptr_array.rb +7 -7
  18. data/lib/ffi-glib/s_list.rb +2 -2
  19. data/lib/ffi-glib/strv.rb +3 -3
  20. data/lib/ffi-glib/variant.rb +9 -2
  21. data/lib/ffi-gobject.rb +10 -10
  22. data/lib/ffi-gobject/closure.rb +1 -1
  23. data/lib/ffi-gobject/initially_unowned.rb +4 -3
  24. data/lib/ffi-gobject/object.rb +19 -19
  25. data/lib/ffi-gobject/object_class.rb +2 -2
  26. data/lib/ffi-gobject/ruby_closure.rb +5 -4
  27. data/lib/ffi-gobject/value.rb +15 -20
  28. data/lib/ffi-gobject_introspection/g_error.rb +1 -1
  29. data/lib/ffi-gobject_introspection/i_base_info.rb +6 -6
  30. data/lib/ffi-gobject_introspection/i_callable_info.rb +1 -1
  31. data/lib/ffi-gobject_introspection/i_enum_info.rb +2 -2
  32. data/lib/ffi-gobject_introspection/i_interface_info.rb +8 -8
  33. data/lib/ffi-gobject_introspection/i_object_info.rb +9 -9
  34. data/lib/ffi-gobject_introspection/i_repository.rb +13 -13
  35. data/lib/ffi-gobject_introspection/i_struct_info.rb +2 -2
  36. data/lib/ffi-gobject_introspection/i_type_info.rb +1 -1
  37. data/lib/ffi-gobject_introspection/i_union_info.rb +3 -3
  38. data/lib/ffi-gobject_introspection/lib.rb +4 -4
  39. data/lib/gir_ffi-base/glib/boolean.rb +4 -4
  40. data/lib/gir_ffi-base/glib/strv.rb +2 -2
  41. data/lib/gir_ffi/allocation_helper.rb +1 -1
  42. data/lib/gir_ffi/arg_helper.rb +8 -8
  43. data/lib/gir_ffi/boxed_base.rb +5 -9
  44. data/lib/gir_ffi/builder.rb +4 -4
  45. data/lib/gir_ffi/builder_helper.rb +3 -3
  46. data/lib/gir_ffi/builders/argument_builder_collection.rb +1 -1
  47. data/lib/gir_ffi/builders/base_argument_builder.rb +3 -3
  48. data/lib/gir_ffi/builders/base_method_builder.rb +71 -0
  49. data/lib/gir_ffi/builders/base_type_builder.rb +1 -1
  50. data/lib/gir_ffi/builders/boxed_builder.rb +3 -2
  51. data/lib/gir_ffi/builders/c_to_ruby_convertor.rb +1 -1
  52. data/lib/gir_ffi/builders/closure_convertor.rb +1 -1
  53. data/lib/gir_ffi/builders/closure_to_pointer_convertor.rb +1 -1
  54. data/lib/gir_ffi/builders/constructor_builder.rb +52 -0
  55. data/lib/gir_ffi/builders/enum_builder.rb +3 -3
  56. data/lib/gir_ffi/builders/field_builder.rb +3 -2
  57. data/lib/gir_ffi/builders/function_builder.rb +9 -50
  58. data/lib/gir_ffi/builders/initializer_builder.rb +32 -0
  59. data/lib/gir_ffi/builders/initializer_return_value_builder.rb +16 -0
  60. data/lib/gir_ffi/builders/mapping_method_builder.rb +7 -5
  61. data/lib/gir_ffi/builders/marshalling_method_builder.rb +5 -3
  62. data/lib/gir_ffi/builders/method_template.rb +1 -1
  63. data/lib/gir_ffi/builders/module_builder.rb +8 -7
  64. data/lib/gir_ffi/builders/null_convertor.rb +1 -1
  65. data/lib/gir_ffi/builders/null_return_value_builder.rb +21 -0
  66. data/lib/gir_ffi/builders/object_builder.rb +3 -3
  67. data/lib/gir_ffi/builders/property_builder.rb +1 -1
  68. data/lib/gir_ffi/builders/registered_type_builder.rb +31 -15
  69. data/lib/gir_ffi/builders/return_value_builder.rb +1 -14
  70. data/lib/gir_ffi/builders/ruby_to_c_convertor.rb +2 -2
  71. data/lib/gir_ffi/builders/signal_closure_builder.rb +1 -1
  72. data/lib/gir_ffi/builders/type_builder.rb +2 -2
  73. data/lib/gir_ffi/builders/unintrospectable_builder.rb +1 -1
  74. data/lib/gir_ffi/builders/user_defined_builder.rb +11 -11
  75. data/lib/gir_ffi/builders/vfunc_builder.rb +1 -1
  76. data/lib/gir_ffi/callback_base.rb +8 -13
  77. data/lib/gir_ffi/class_base.rb +41 -45
  78. data/lib/gir_ffi/core.rb +2 -2
  79. data/lib/gir_ffi/enum_base.rb +9 -14
  80. data/lib/gir_ffi/field_argument_info.rb +1 -1
  81. data/lib/gir_ffi/g_type.rb +1 -1
  82. data/lib/gir_ffi/glib_error.rb +1 -1
  83. data/lib/gir_ffi/in_out_pointer.rb +4 -4
  84. data/lib/gir_ffi/in_pointer.rb +12 -12
  85. data/lib/gir_ffi/info_ext/i_arg_info.rb +0 -10
  86. data/lib/gir_ffi/info_ext/i_callback_info.rb +0 -5
  87. data/lib/gir_ffi/info_ext/i_property_info.rb +1 -1
  88. data/lib/gir_ffi/info_ext/i_registered_type_info.rb +1 -6
  89. data/lib/gir_ffi/info_ext/i_signal_info.rb +2 -2
  90. data/lib/gir_ffi/info_ext/i_type_info.rb +2 -17
  91. data/lib/gir_ffi/info_ext/i_unresolved_info.rb +0 -5
  92. data/lib/gir_ffi/info_ext/i_vfunc_info.rb +2 -2
  93. data/lib/gir_ffi/interface_base.rb +2 -7
  94. data/lib/gir_ffi/method_stubber.rb +1 -1
  95. data/lib/gir_ffi/module_base.rb +4 -7
  96. data/lib/gir_ffi/object_base.rb +4 -9
  97. data/lib/gir_ffi/receiver_argument_info.rb +1 -1
  98. data/lib/gir_ffi/receiver_type_info.rb +1 -1
  99. data/lib/gir_ffi/registered_type_base.rb +0 -5
  100. data/lib/gir_ffi/return_value_info.rb +1 -1
  101. data/lib/gir_ffi/sized_array.rb +10 -10
  102. data/lib/gir_ffi/type_map.rb +3 -3
  103. data/lib/gir_ffi/unintrospectable_type_info.rb +3 -1
  104. data/lib/gir_ffi/user_data_argument_info.rb +1 -1
  105. data/lib/gir_ffi/user_defined_property_info.rb +1 -1
  106. data/lib/gir_ffi/user_defined_type_info.rb +4 -4
  107. data/lib/gir_ffi/version.rb +1 -1
  108. data/lib/gir_ffi/vfunc_implementation.rb +1 -1
  109. data/lib/gir_ffi/zero_terminated.rb +6 -6
  110. data/test/base_test_helper.rb +13 -13
  111. data/test/ffi-gobject/object_test.rb +22 -1
  112. data/test/ffi-gobject/value_test.rb +24 -24
  113. data/test/ffi-gobject_introspection/i_registered_type_info_test.rb +4 -4
  114. data/test/ffi-gobject_introspection/i_type_info_test.rb +2 -2
  115. data/test/ffi-gobject_test.rb +2 -2
  116. data/test/gir_ffi/builders/argument_builder_test.rb +60 -60
  117. data/test/gir_ffi/builders/callback_argument_builder_test.rb +8 -8
  118. data/test/gir_ffi/builders/callback_builder_test.rb +4 -4
  119. data/test/gir_ffi/builders/callback_return_value_builder_test.rb +8 -8
  120. data/test/gir_ffi/builders/constructor_builder_test.rb +34 -0
  121. data/test/gir_ffi/builders/function_builder_test.rb +8 -24
  122. data/test/gir_ffi/builders/initializer_builder_test.rb +36 -0
  123. data/test/gir_ffi/builders/interface_builder_test.rb +2 -2
  124. data/test/gir_ffi/builders/object_builder_test.rb +6 -18
  125. data/test/gir_ffi/builders/property_builder_test.rb +2 -2
  126. data/test/gir_ffi/builders/return_value_builder_test.rb +54 -79
  127. data/test/gir_ffi/builders/signal_closure_builder_test.rb +14 -14
  128. data/test/gir_ffi/builders/user_defined_builder_test.rb +8 -8
  129. data/test/gir_ffi/builders/vfunc_builder_test.rb +22 -22
  130. data/test/gir_ffi/class_base_test.rb +9 -7
  131. data/test/gir_ffi/in_pointer_test.rb +1 -1
  132. data/test/gir_ffi/info_ext/i_callable_info_test.rb +2 -2
  133. data/test/gir_ffi/info_ext/i_callback_info_test.rb +2 -2
  134. data/test/gir_ffi/info_ext/i_field_info_test.rb +2 -2
  135. data/test/gir_ffi/info_ext/i_function_info_test.rb +2 -2
  136. data/test/gir_ffi/info_ext/i_signal_info_test.rb +2 -2
  137. data/test/gir_ffi/info_ext/i_type_info_test.rb +18 -18
  138. data/test/gir_ffi/info_ext/i_unresolved_info_test.rb +2 -2
  139. data/test/gir_ffi/info_ext/safe_constant_name_test.rb +2 -2
  140. data/test/gir_ffi/info_ext/safe_function_name_test.rb +2 -2
  141. data/test/gir_ffi/method_stubber_test.rb +6 -6
  142. data/test/gir_ffi/user_defined_type_info_test.rb +3 -3
  143. data/test/gir_ffi_test_helper.rb +12 -12
  144. data/test/integration/derived_classes_test.rb +7 -3
  145. data/test/integration/generated_gimarshallingtests_test.rb +10 -10
  146. data/test/integration/generated_regress_test.rb +11 -20
  147. data/test/introspection_test_helper.rb +1 -1
  148. data/test/minitest/stats_plugin.rb +3 -3
  149. metadata +9 -3
  150. data/lib/gir_ffi/builders/constructor_result_convertor.rb +0 -14
@@ -5,10 +5,10 @@ describe GirFFI::Builders::CallbackReturnValueBuilder do
5
5
  let(:return_value_info) { GirFFI::ReturnValueInfo.new(type_info, ownership_transfer, false) }
6
6
  let(:type_info) { callback_info.return_type }
7
7
  let(:ownership_transfer) { callback_info.caller_owns }
8
- let(:builder) {
8
+ let(:builder) do
9
9
  GirFFI::Builders::CallbackReturnValueBuilder.new(var_gen,
10
10
  return_value_info)
11
- }
11
+ end
12
12
 
13
13
  before do
14
14
  skip unless callback_info
@@ -28,10 +28,10 @@ describe GirFFI::Builders::CallbackReturnValueBuilder do
28
28
  end
29
29
 
30
30
  describe 'for :void' do
31
- let(:callback_info) {
31
+ let(:callback_info) do
32
32
  get_introspection_data('GIMarshallingTests',
33
33
  'CallbackMultipleOutParameters')
34
- }
34
+ end
35
35
 
36
36
  it 'has no statements in #post_conversion' do
37
37
  builder.post_conversion.must_equal []
@@ -44,11 +44,11 @@ describe GirFFI::Builders::CallbackReturnValueBuilder do
44
44
  end
45
45
 
46
46
  describe 'for :enum' do
47
- let(:callback_info) {
47
+ let(:callback_info) do
48
48
  get_vfunc_introspection_data('GIMarshallingTests',
49
49
  'Object',
50
50
  'vfunc_return_enum')
51
- }
51
+ end
52
52
 
53
53
  it 'converts the result' do
54
54
  # Ensure variable names are generated in order
@@ -63,11 +63,11 @@ describe GirFFI::Builders::CallbackReturnValueBuilder do
63
63
  end
64
64
 
65
65
  describe 'for :object with full transfer' do
66
- let(:callback_info) {
66
+ let(:callback_info) do
67
67
  get_vfunc_introspection_data('GIMarshallingTests',
68
68
  'Object',
69
69
  'vfunc_return_object_transfer_full')
70
- }
70
+ end
71
71
 
72
72
  it 'increases the refcount of the result and converts it to a pointer' do
73
73
  # Ensure variable names are generated in order
@@ -0,0 +1,34 @@
1
+ require 'gir_ffi_test_helper'
2
+
3
+ describe GirFFI::Builders::ConstructorBuilder do
4
+ describe '#method_definition' do
5
+ let(:builder) { GirFFI::Builders::ConstructorBuilder.new function_info }
6
+ let(:code) { builder.method_definition }
7
+
8
+ describe 'for constructors with the default name' do
9
+ let(:function_info) { get_method_introspection_data 'Regress', 'TestObj', 'new' }
10
+ it 'builds a constructor' do
11
+ code.must_equal <<-CODE.reset_indentation
12
+ def self.new(*args)
13
+ obj = allocate
14
+ obj.__send__ :initialize, *args
15
+ obj
16
+ end
17
+ CODE
18
+ end
19
+ end
20
+
21
+ describe 'for constructors with a custom name' do
22
+ let(:function_info) { get_method_introspection_data 'Regress', 'TestObj', 'new_from_file' }
23
+ it 'builds a custom constructor' do
24
+ code.must_equal <<-CODE.reset_indentation
25
+ def self.new_from_file(*args)
26
+ obj = allocate
27
+ obj.__send__ :initialize_from_file, *args
28
+ obj
29
+ end
30
+ CODE
31
+ end
32
+ end
33
+ end
34
+ end
@@ -1,9 +1,9 @@
1
1
  require 'gir_ffi_test_helper'
2
2
 
3
3
  describe GirFFI::Builders::FunctionBuilder do
4
- describe '#generate' do
4
+ describe '#method_definition' do
5
5
  let(:builder) { GirFFI::Builders::FunctionBuilder.new function_info }
6
- let(:code) { builder.generate }
6
+ let(:code) { builder.method_definition }
7
7
 
8
8
  describe 'for Regress:test_array_fixed_out_objects' do
9
9
  let(:function_info) { get_introspection_data 'Regress', 'test_array_fixed_out_objects' }
@@ -50,22 +50,6 @@ describe GirFFI::Builders::FunctionBuilder do
50
50
  end
51
51
  end
52
52
 
53
- describe 'for constructors' do
54
- let(:function_info) { get_method_introspection_data 'Regress', 'TestObj', 'new_from_file' }
55
- it 'builds correct definition' do
56
- code.must_equal <<-CODE.reset_indentation
57
- def self.new_from_file(x)
58
- _v1 = GirFFI::InPointer.from(:utf8, x)
59
- _v2 = FFI::MemoryPointer.new(:pointer).write_pointer nil
60
- _v3 = Regress::Lib.regress_test_obj_new_from_file _v1, _v2
61
- GirFFI::ArgHelper.check_error(_v2)
62
- _v4 = self.constructor_wrap(_v3)
63
- return _v4
64
- end
65
- CODE
66
- end
67
- end
68
-
69
53
  describe 'for functions that take a GValue' do
70
54
  let(:function_info) { get_introspection_data 'GIMarshallingTests', 'gvalue_in' }
71
55
  it 'creates a call to GObject::Value#from' do
@@ -172,10 +156,10 @@ describe GirFFI::Builders::FunctionBuilder do
172
156
  end
173
157
 
174
158
  describe 'for GIMarshallingTests::Object#method_int8_arg_and_out_callee' do
175
- let(:function_info) {
159
+ let(:function_info) do
176
160
  get_method_introspection_data('GIMarshallingTests', 'Object',
177
161
  'method_int8_arg_and_out_callee')
178
- }
162
+ end
179
163
 
180
164
  it 'builds a correct definition' do
181
165
  skip unless function_info
@@ -192,10 +176,10 @@ describe GirFFI::Builders::FunctionBuilder do
192
176
  end
193
177
 
194
178
  describe 'for GIMarshallingTests::Object.full_inout' do
195
- let(:function_info) {
179
+ let(:function_info) do
196
180
  get_method_introspection_data('GIMarshallingTests', 'Object',
197
181
  'full_inout')
198
- }
182
+ end
199
183
 
200
184
  it 'builds a correct definition' do
201
185
  code.must_equal <<-CODE.reset_indentation
@@ -211,10 +195,10 @@ describe GirFFI::Builders::FunctionBuilder do
211
195
  end
212
196
 
213
197
  describe 'for Regress::TestObj#instance_method_full' do
214
- let(:function_info) {
198
+ let(:function_info) do
215
199
  get_method_introspection_data('Regress', 'TestObj',
216
200
  'instance_method_full')
217
- }
201
+ end
218
202
 
219
203
  it 'builds a correct definition including self.ref' do
220
204
  skip unless function_info
@@ -0,0 +1,36 @@
1
+ require 'gir_ffi_test_helper'
2
+
3
+ describe GirFFI::Builders::InitializerBuilder do
4
+ describe '#method_definition' do
5
+ let(:builder) { GirFFI::Builders::InitializerBuilder.new function_info }
6
+ let(:code) { builder.method_definition }
7
+
8
+ describe 'for constructors with the default name' do
9
+ let(:function_info) { get_method_introspection_data 'Regress', 'TestObj', 'new' }
10
+ it 'builds an initializer' do
11
+ code.must_equal <<-CODE.reset_indentation
12
+ def initialize(obj)
13
+ _v1 = Regress::TestObj.from(obj)
14
+ _v2 = Regress::Lib.regress_test_obj_new _v1
15
+ store_pointer(_v2)
16
+ end
17
+ CODE
18
+ end
19
+ end
20
+
21
+ describe 'for constructors with a custom name' do
22
+ let(:function_info) { get_method_introspection_data 'Regress', 'TestObj', 'new_from_file' }
23
+ it 'builds a custom initializer' do
24
+ code.must_equal <<-CODE.reset_indentation
25
+ def initialize_from_file(x)
26
+ _v1 = GirFFI::InPointer.from(:utf8, x)
27
+ _v2 = FFI::MemoryPointer.new(:pointer).write_pointer nil
28
+ _v3 = Regress::Lib.regress_test_obj_new_from_file _v1, _v2
29
+ GirFFI::ArgHelper.check_error(_v2)
30
+ store_pointer(_v3)
31
+ end
32
+ CODE
33
+ end
34
+ end
35
+ end
36
+ end
@@ -1,10 +1,10 @@
1
1
  require 'gir_ffi_test_helper'
2
2
 
3
3
  describe GirFFI::Builders::InterfaceBuilder do
4
- let(:interface_builder) {
4
+ let(:interface_builder) do
5
5
  GirFFI::Builders::InterfaceBuilder.new(
6
6
  get_introspection_data('Regress', 'TestInterface'))
7
- }
7
+ end
8
8
 
9
9
  describe '#build_class' do
10
10
  before do
@@ -1,14 +1,14 @@
1
1
  require 'gir_ffi_test_helper'
2
2
 
3
3
  describe GirFFI::Builders::ObjectBuilder do
4
- let(:obj_builder) {
4
+ let(:obj_builder) do
5
5
  GirFFI::Builders::ObjectBuilder.new(
6
6
  get_introspection_data('Regress', 'TestObj'))
7
- }
8
- let(:sub_obj_builder) {
7
+ end
8
+ let(:sub_obj_builder) do
9
9
  GirFFI::Builders::ObjectBuilder.new(
10
10
  get_introspection_data('Regress', 'TestSubObj'))
11
- }
11
+ end
12
12
 
13
13
  describe '#find_signal' do
14
14
  it 'finds the signal "test" for TestObj' do
@@ -50,21 +50,9 @@ describe GirFFI::Builders::ObjectBuilder do
50
50
  end
51
51
 
52
52
  it 'raises an error if the property is not found' do
53
- proc {
53
+ proc do
54
54
  sub_obj_builder.find_property('this-property-does-not-exist')
55
- }.must_raise RuntimeError
56
- end
57
- end
58
-
59
- describe '#function_definition' do
60
- let(:method_info) {
61
- get_method_introspection_data 'Regress', 'TestObj', 'instance_method'
62
- }
63
-
64
- it 'delegates definition to FunctionBuilder' do
65
- code = obj_builder.send :function_definition, method_info
66
- expected = GirFFI::Builders::FunctionBuilder.new(method_info).generate
67
- code.must_equal expected
55
+ end.must_raise RuntimeError
68
56
  end
69
57
  end
70
58
 
@@ -56,11 +56,11 @@ describe GirFFI::Builders::PropertyBuilder do
56
56
  end
57
57
 
58
58
  describe 'for a property of type :strv' do
59
- let(:property_info) {
59
+ let(:property_info) do
60
60
  get_property_introspection_data('GIMarshallingTests',
61
61
  'PropertiesObject',
62
62
  'some-strv')
63
- }
63
+ end
64
64
  before do
65
65
  skip unless property_info
66
66
  end
@@ -3,18 +3,15 @@ require 'gir_ffi_test_helper'
3
3
  describe GirFFI::Builders::ReturnValueBuilder do
4
4
  let(:var_gen) { GirFFI::VariableNameGenerator.new }
5
5
  let(:return_type_info) { GirFFI::ReturnValueInfo.new(type_info, :nothing, false) }
6
- let(:for_constructor) { false }
7
- let(:builder) {
8
- GirFFI::Builders::ReturnValueBuilder.new(var_gen,
9
- return_type_info,
10
- for_constructor)
11
- }
6
+ let(:builder) do
7
+ GirFFI::Builders::ReturnValueBuilder.new(var_gen, return_type_info)
8
+ end
12
9
 
13
10
  describe 'for :gint32' do
14
- let(:type_info) {
11
+ let(:type_info) do
15
12
  get_introspection_data('GIMarshallingTests',
16
13
  'int_return_min').return_type
17
- }
14
+ end
18
15
 
19
16
  it 'has no statements in #post_conversion' do
20
17
  builder.post_conversion.must_equal []
@@ -27,11 +24,11 @@ describe GirFFI::Builders::ReturnValueBuilder do
27
24
  end
28
25
 
29
26
  describe 'for :struct' do
30
- let(:type_info) {
27
+ let(:type_info) do
31
28
  get_method_introspection_data('GIMarshallingTests',
32
29
  'BoxedStruct',
33
30
  'returnv').return_type
34
- }
31
+ end
35
32
 
36
33
  it 'wraps the result in #post_conversion' do
37
34
  builder.capture_variable_name.must_equal '_v1'
@@ -45,11 +42,11 @@ describe GirFFI::Builders::ReturnValueBuilder do
45
42
  end
46
43
 
47
44
  describe 'for :union' do
48
- let(:type_info) {
45
+ let(:type_info) do
49
46
  get_method_introspection_data('GIMarshallingTests',
50
47
  'Union',
51
48
  'returnv').return_type
52
- }
49
+ end
53
50
 
54
51
  it 'wraps the result in #post_conversion' do
55
52
  builder.capture_variable_name.must_equal '_v1'
@@ -63,11 +60,11 @@ describe GirFFI::Builders::ReturnValueBuilder do
63
60
  end
64
61
 
65
62
  describe 'for :interface' do
66
- let(:type_info) {
63
+ let(:type_info) do
67
64
  get_method_introspection_data('Gio',
68
65
  'File',
69
66
  'new_for_commandline_arg').return_type
70
- }
67
+ end
71
68
 
72
69
  it 'wraps the result in #post_conversion' do
73
70
  builder.capture_variable_name.must_equal '_v1'
@@ -81,51 +78,29 @@ describe GirFFI::Builders::ReturnValueBuilder do
81
78
  end
82
79
 
83
80
  describe 'for :object' do
84
- describe 'when the method is not a constructor' do
85
- let(:type_info) {
86
- get_method_introspection_data('GIMarshallingTests',
87
- 'Object',
88
- 'full_return').return_type
89
- }
90
- let(:for_constructor) { false }
91
-
92
- it 'wraps the result in #post_conversion' do
93
- builder.capture_variable_name.must_equal '_v1'
94
- builder.post_conversion.must_equal ['_v2 = GIMarshallingTests::Object.wrap(_v1)']
95
- end
96
-
97
- it 'returns the wrapped result' do
98
- builder.capture_variable_name.must_equal '_v1'
99
- builder.return_value_name.must_equal '_v2'
100
- end
81
+ let(:type_info) do
82
+ get_method_introspection_data('GIMarshallingTests',
83
+ 'Object',
84
+ 'full_return').return_type
101
85
  end
102
86
 
103
- describe 'when the method is a constructor' do
104
- let(:type_info) {
105
- get_method_introspection_data('GIMarshallingTests',
106
- 'Object',
107
- 'new').return_type
108
- }
109
- let(:for_constructor) { true }
110
-
111
- it 'wraps the result in #post_conversion' do
112
- builder.capture_variable_name.must_equal '_v1'
113
- builder.post_conversion.must_equal ['_v2 = self.constructor_wrap(_v1)']
114
- end
87
+ it 'wraps the result in #post_conversion' do
88
+ builder.capture_variable_name.must_equal '_v1'
89
+ builder.post_conversion.must_equal ['_v2 = GIMarshallingTests::Object.wrap(_v1)']
90
+ end
115
91
 
116
- it 'returns the wrapped result' do
117
- builder.capture_variable_name.must_equal '_v1'
118
- builder.return_value_name.must_equal '_v2'
119
- end
92
+ it 'returns the wrapped result' do
93
+ builder.capture_variable_name.must_equal '_v1'
94
+ builder.return_value_name.must_equal '_v2'
120
95
  end
121
96
  end
122
97
 
123
98
  describe 'for :strv' do
124
- let(:type_info) {
99
+ let(:type_info) do
125
100
  get_method_introspection_data('GLib',
126
101
  'KeyFile',
127
102
  'get_locale_string_list').return_type
128
- }
103
+ end
129
104
 
130
105
  it 'wraps the result in #post_conversion' do
131
106
  builder.capture_variable_name.must_equal '_v1'
@@ -139,11 +114,11 @@ describe GirFFI::Builders::ReturnValueBuilder do
139
114
  end
140
115
 
141
116
  describe 'for :zero_terminated' do
142
- let(:type_info) {
117
+ let(:type_info) do
143
118
  get_method_introspection_data('GLib',
144
119
  'Variant',
145
120
  'dup_bytestring').return_type
146
- }
121
+ end
147
122
  before do
148
123
  skip unless type_info.zero_terminated?
149
124
  end
@@ -160,10 +135,10 @@ describe GirFFI::Builders::ReturnValueBuilder do
160
135
  end
161
136
 
162
137
  describe 'for :byte_array' do
163
- let(:type_info) {
138
+ let(:type_info) do
164
139
  get_introspection_data('GIMarshallingTests',
165
140
  'bytearray_full_return').return_type
166
- }
141
+ end
167
142
 
168
143
  it 'wraps the result in #post_conversion' do
169
144
  builder.capture_variable_name.must_equal '_v1'
@@ -177,10 +152,10 @@ describe GirFFI::Builders::ReturnValueBuilder do
177
152
  end
178
153
 
179
154
  describe 'for :ptr_array' do
180
- let(:type_info) {
155
+ let(:type_info) do
181
156
  get_introspection_data('GIMarshallingTests',
182
157
  'gptrarray_utf8_none_return').return_type
183
- }
158
+ end
184
159
 
185
160
  it 'wraps the result in #post_conversion' do
186
161
  builder.capture_variable_name.must_equal '_v1'
@@ -194,10 +169,10 @@ describe GirFFI::Builders::ReturnValueBuilder do
194
169
  end
195
170
 
196
171
  describe 'for :glist' do
197
- let(:type_info) {
172
+ let(:type_info) do
198
173
  get_introspection_data('GIMarshallingTests',
199
174
  'glist_int_none_return').return_type
200
- }
175
+ end
201
176
 
202
177
  it 'wraps the result in #post_conversion' do
203
178
  builder.capture_variable_name.must_equal '_v1'
@@ -211,10 +186,10 @@ describe GirFFI::Builders::ReturnValueBuilder do
211
186
  end
212
187
 
213
188
  describe 'for :gslist' do
214
- let(:type_info) {
189
+ let(:type_info) do
215
190
  get_introspection_data('GIMarshallingTests',
216
191
  'gslist_int_none_return').return_type
217
- }
192
+ end
218
193
 
219
194
  it 'wraps the result in #post_conversion' do
220
195
  builder.capture_variable_name.must_equal '_v1'
@@ -228,10 +203,10 @@ describe GirFFI::Builders::ReturnValueBuilder do
228
203
  end
229
204
 
230
205
  describe 'for :ghash' do
231
- let(:type_info) {
206
+ let(:type_info) do
232
207
  get_introspection_data('GIMarshallingTests',
233
208
  'ghashtable_int_none_return').return_type
234
- }
209
+ end
235
210
 
236
211
  it 'wraps the result in #post_conversion' do
237
212
  builder.capture_variable_name.must_equal '_v1'
@@ -245,10 +220,10 @@ describe GirFFI::Builders::ReturnValueBuilder do
245
220
  end
246
221
 
247
222
  describe 'for :array' do
248
- let(:type_info) {
223
+ let(:type_info) do
249
224
  get_introspection_data('GIMarshallingTests',
250
225
  'garray_int_none_return').return_type
251
- }
226
+ end
252
227
 
253
228
  it 'wraps the result in #post_conversion' do
254
229
  builder.capture_variable_name.must_equal '_v1'
@@ -262,10 +237,10 @@ describe GirFFI::Builders::ReturnValueBuilder do
262
237
  end
263
238
 
264
239
  describe 'for :error' do
265
- let(:type_info) {
240
+ let(:type_info) do
266
241
  get_introspection_data('GIMarshallingTests',
267
242
  'gerror_return').return_type
268
- }
243
+ end
269
244
 
270
245
  it 'wraps the result in #post_conversion' do
271
246
  builder.capture_variable_name.must_equal '_v1'
@@ -280,10 +255,10 @@ describe GirFFI::Builders::ReturnValueBuilder do
280
255
 
281
256
  describe 'for :c' do
282
257
  describe 'with fixed size' do
283
- let(:type_info) {
258
+ let(:type_info) do
284
259
  get_introspection_data('GIMarshallingTests',
285
260
  'array_fixed_int_return').return_type
286
- }
261
+ end
287
262
 
288
263
  it 'converts the result in #post_conversion' do
289
264
  builder.capture_variable_name.must_equal '_v1'
@@ -298,11 +273,11 @@ describe GirFFI::Builders::ReturnValueBuilder do
298
273
 
299
274
  describe 'with separate size parameter' do
300
275
  let(:length_argument) { Object.new }
301
- let(:type_info) {
276
+ let(:type_info) do
302
277
  get_method_introspection_data('GIMarshallingTests',
303
278
  'Object',
304
279
  'method_array_return').return_type
305
- }
280
+ end
306
281
 
307
282
  before do
308
283
  allow(length_argument).to receive(:post_converted_name).and_return 'bar'
@@ -322,9 +297,9 @@ describe GirFFI::Builders::ReturnValueBuilder do
322
297
  end
323
298
 
324
299
  describe 'for :utf8' do
325
- let(:type_info) {
300
+ let(:type_info) do
326
301
  get_introspection_data('GIMarshallingTests', 'utf8_full_return').return_type
327
- }
302
+ end
328
303
 
329
304
  it 'converts the result in #post_conversion' do
330
305
  builder.capture_variable_name.must_equal '_v1'
@@ -338,9 +313,9 @@ describe GirFFI::Builders::ReturnValueBuilder do
338
313
  end
339
314
 
340
315
  describe 'for :void pointer' do
341
- let(:callback_info) {
316
+ let(:callback_info) do
342
317
  get_introspection_data('GIMarshallingTests', 'CallbackIntInt')
343
- }
318
+ end
344
319
  let(:type_info) { callback_info.args[1].argument_type }
345
320
 
346
321
  before do
@@ -358,9 +333,9 @@ describe GirFFI::Builders::ReturnValueBuilder do
358
333
  end
359
334
 
360
335
  describe 'for :void' do
361
- let(:type_info) {
336
+ let(:type_info) do
362
337
  get_method_introspection_data('Regress', 'TestObj', 'null_out').return_type
363
- }
338
+ end
364
339
 
365
340
  it 'has no statements in #post_conversion' do
366
341
  builder.post_conversion.must_equal []
@@ -376,9 +351,9 @@ describe GirFFI::Builders::ReturnValueBuilder do
376
351
  end
377
352
 
378
353
  describe 'for a closure argument' do
379
- let(:type_info) {
354
+ let(:type_info) do
380
355
  get_introspection_data('Regress', 'TestCallbackUserData').args[0].argument_type
381
- }
356
+ end
382
357
 
383
358
  before do
384
359
  builder.closure = true
@@ -396,9 +371,9 @@ describe GirFFI::Builders::ReturnValueBuilder do
396
371
  end
397
372
 
398
373
  describe 'for a skipped return value' do
399
- let(:type_info) {
374
+ let(:type_info) do
400
375
  get_method_introspection_data('Regress', 'TestObj', 'skip_return_val').return_type
401
- }
376
+ end
402
377
  let(:return_type_info) { GirFFI::ReturnValueInfo.new(type_info, :nothing, true) }
403
378
 
404
379
  it 'has no statements in #post_conversion' do