gir_ffi 0.15.2 → 0.15.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/Changelog.md +11 -0
  3. data/Gemfile +1 -1
  4. data/lib/ffi-gobject/value.rb +3 -1
  5. data/lib/ffi-gobject_introspection/i_base_info.rb +1 -1
  6. data/lib/gir_ffi/builder_helper.rb +6 -1
  7. data/lib/gir_ffi/builders/callback_builder.rb +13 -1
  8. data/lib/gir_ffi/builders/enum_builder.rb +6 -2
  9. data/lib/gir_ffi/builders/field_builder.rb +2 -1
  10. data/lib/gir_ffi/builders/module_builder.rb +3 -1
  11. data/lib/gir_ffi/builders/struct_builder.rb +3 -1
  12. data/lib/gir_ffi/callback_base.rb +3 -5
  13. data/lib/gir_ffi/class_base.rb +1 -0
  14. data/lib/gir_ffi/version.rb +1 -1
  15. data/test/ffi-gobject/object_test.rb +3 -2
  16. data/test/ffi-gobject/value_test.rb +1 -1
  17. data/test/ffi-gobject_introspection/i_base_info_test.rb +1 -1
  18. data/test/ffi-gobject_test.rb +4 -2
  19. data/test/gir_ffi/arg_helper_test.rb +13 -6
  20. data/test/gir_ffi/boxed_base_test.rb +1 -1
  21. data/test/gir_ffi/builder_test.rb +3 -157
  22. data/test/gir_ffi/builders/argument_builder_test.rb +73 -33
  23. data/test/gir_ffi/builders/callback_argument_builder_test.rb +6 -2
  24. data/test/gir_ffi/builders/callback_return_value_builder_test.rb +5 -2
  25. data/test/gir_ffi/builders/constructor_builder_test.rb +3 -1
  26. data/test/gir_ffi/builders/field_builder_test.rb +9 -3
  27. data/test/gir_ffi/builders/function_builder_test.rb +30 -10
  28. data/test/gir_ffi/builders/initializer_builder_test.rb +3 -1
  29. data/test/gir_ffi/builders/object_builder_test.rb +6 -6
  30. data/test/gir_ffi/builders/property_builder_test.rb +5 -2
  31. data/test/gir_ffi/builders/return_value_builder_test.rb +20 -9
  32. data/test/gir_ffi/builders/signal_closure_builder_test.rb +9 -7
  33. data/test/gir_ffi/builders/struct_builder_test.rb +6 -3
  34. data/test/gir_ffi/builders/user_defined_builder_test.rb +7 -3
  35. data/test/gir_ffi/builders/vfunc_argument_builder_test.rb +11 -5
  36. data/test/gir_ffi/builders/vfunc_builder_test.rb +10 -6
  37. data/test/gir_ffi/class_base_test.rb +17 -12
  38. data/test/gir_ffi/core_test.rb +4 -3
  39. data/test/gir_ffi/ffi_ext/pointer_test.rb +4 -2
  40. data/test/gir_ffi/info_ext/i_callback_info_test.rb +2 -1
  41. data/test/gir_ffi/info_ext/i_type_info_test.rb +2 -1
  42. data/test/gir_ffi/method_stubber_test.rb +3 -1
  43. data/test/integration/derived_classes_test.rb +1 -0
  44. data/test/integration/generated_everything_test.rb +2 -1
  45. data/test/integration/generated_gimarshallingtests_test.rb +57 -44
  46. data/test/integration/generated_gtk_source_test.rb +6 -17
  47. data/test/integration/generated_regress_test.rb +16 -2
  48. data/test/integration/generated_warnlib_test.rb +4 -2
  49. data/test/introspection_test_helper.rb +2 -1
  50. metadata +22 -8
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e8d94670dbb092ece3c0225fe0c77a7457396df6e9c2fea40d11dabe5a4a2a55
4
- data.tar.gz: f6e93738320b337279fbad487ea40996f4e99c40a90c892ae1c9d7836f89adff
3
+ metadata.gz: 2ee5f86f4d4106139b51edf6855aa3a84bff5437b728dac4c0b878a61bbf86ea
4
+ data.tar.gz: de0aef98573ba69d41ffa094d08f576977928e6e55598586cf07c08c9c38da6f
5
5
  SHA512:
6
- metadata.gz: 39265520b4755ffd62d8e065ff07793cc3dbb086d9062c12c06210cd85b2586b03838a931154175773aecb70cbae9e3a0c59ff08dfef63588d983c159688c5fb
7
- data.tar.gz: 5e9e9cdd8c21b416279afea10bc7283497d5c52010497e45142a5aa40098d7680e430afacf6fecea61e7ac2720224fcb9fe34a2f74588dbe77af9aa6c0a4ae76
6
+ metadata.gz: 57de8a0753d8add11635ca497712988aa16507312d719bdc6ed7c8f63a707275622b73c1d968e742d13ba96094fe253baf6d60076dd186683851479cffa8cbe2
7
+ data.tar.gz: abc9d12f2590a325ab3d8deb087cc4dcf4f5e1eccf0a4dd2f74f48c50553c3b63c19cd799661830da3c13850d50b32cdcb6113ebfb0569b15e7875796a7287ed
@@ -1,5 +1,16 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.15.3 / 2020-06-14
4
+
5
+ * Officially support Ruby 2.7
6
+ * Officially drop support for Ruby 2.4
7
+ * Store classes representing inline callback types in the class that defines
8
+ them instead of in the main namespace, thus avoiding some potential name
9
+ clashes
10
+ * Update development dependencies
11
+ * Various code quality improvements
12
+ * Record approved licenses for dependencies
13
+
3
14
  ## 0.15.2 / 2019-11-29
4
15
 
5
16
  * Load girepository-1.0 library in a way that does not require installing a
data/Gemfile CHANGED
@@ -5,7 +5,7 @@ source "https://rubygems.org"
5
5
  # The gem's dependencies are specified in gir_ffi.gemspec
6
6
  gemspec
7
7
 
8
- gem "pry", "~> 0.12.0"
8
+ gem "pry", "~> 0.13.0"
9
9
  gem "ruby-prof", platform: :mri
10
10
  gem "test-prof", platform: :mri
11
11
 
@@ -179,7 +179,9 @@ module GObject
179
179
  end
180
180
 
181
181
  def check_type_compatibility(val)
182
- return if GObject::Value.type_compatible(GObject.type_from_instance(val), current_gtype)
182
+ if GObject::Value.type_compatible(GObject.type_from_instance(val), current_gtype)
183
+ return
184
+ end
183
185
 
184
186
  raise ArgumentError, "#{val.class} is incompatible with #{current_gtype_name}"
185
187
  end
@@ -107,10 +107,10 @@ module GObjectIntrospection
107
107
  namespace.sub(/^[a-z]/, &:upcase)
108
108
  end
109
109
 
110
- # TODO: Avoid calling for IStructInfo
111
110
  def container
112
111
  @container ||= begin
113
112
  ptr = Lib.g_base_info_get_container self
113
+ return if ptr.null?
114
114
  Lib.g_base_info_ref ptr
115
115
  IRepository.wrap_ibaseinfo_pointer ptr
116
116
  end
@@ -12,7 +12,12 @@ module GirFFI
12
12
  end
13
13
 
14
14
  def get_or_define_class(namespace, name, parent)
15
- optionally_define_constant(namespace, name) { Class.new parent }
15
+ klass = optionally_define_constant(namespace, name) { Class.new parent }
16
+ unless klass.superclass == parent
17
+ raise "Expected superclass #{parent}, found #{klass.superclass}"
18
+ end
19
+
20
+ klass
16
21
  end
17
22
 
18
23
  def get_or_define_module(parent, name)
@@ -23,7 +23,19 @@ module GirFFI
23
23
  end
24
24
 
25
25
  def klass
26
- @klass ||= get_or_define_class namespace_module, @classname, CallbackBase
26
+ @klass ||= get_or_define_class container_module, @classname, CallbackBase
27
+ end
28
+
29
+ def container_module
30
+ @container_module ||=
31
+ if @info.container
32
+ type_info = @info.container
33
+ field_info = type_info.container
34
+ container_class_info = field_info.container
35
+ namespace_module.const_get container_class_info.safe_name
36
+ else
37
+ namespace_module
38
+ end
27
39
  end
28
40
 
29
41
  def mapping_method_definition
@@ -16,7 +16,7 @@ module GirFFI
16
16
  end
17
17
 
18
18
  def value_spec
19
- info.values.map do |vinfo|
19
+ value_infos.map do |vinfo|
20
20
  val = GirFFI::ArgHelper.cast_uint32_to_int32(vinfo.value)
21
21
  [vinfo.name.to_sym, val]
22
22
  end.flatten
@@ -42,7 +42,7 @@ module GirFFI
42
42
  end
43
43
 
44
44
  def setup_value_constants
45
- info.values.each do |vinfo|
45
+ value_infos.each do |vinfo|
46
46
  optionally_define_constant klass, vinfo.constant_name do
47
47
  vinfo.value
48
48
  end
@@ -64,6 +64,10 @@ module GirFFI
64
64
  def superclass
65
65
  EnumBase
66
66
  end
67
+
68
+ def value_infos
69
+ @value_infos ||= info.values
70
+ end
67
71
  end
68
72
  end
69
73
  end
@@ -58,7 +58,8 @@ module GirFFI
58
58
  private
59
59
 
60
60
  def pointer_to_value_conversion
61
- PointerValueConvertor.new(field_type_tag).pointer_to_value(field_ptr, field_offset)
61
+ PointerValueConvertor.new(field_type_tag)
62
+ .pointer_to_value(field_ptr, field_offset)
62
63
  end
63
64
 
64
65
  def field_offset
@@ -88,7 +88,9 @@ module GirFFI
88
88
  lib.extend FFI::Library
89
89
  lib.extend FFI::BitMasks
90
90
  lib.ffi_lib_flags :global, :lazy
91
- lib.ffi_lib(*shared_library_specification.split(/,/)) if shared_library_specification
91
+ if shared_library_specification
92
+ lib.ffi_lib(*shared_library_specification.split(/,/))
93
+ end
92
94
  end
93
95
 
94
96
  def shared_library_specification
@@ -16,7 +16,9 @@ module GirFFI
16
16
 
17
17
  def superclass
18
18
  # HACK: Inheritance chain is not expressed in GObject's code correctly.
19
- return GObject::ObjectClass if info.full_type_name == "GObject::InitiallyUnownedClass"
19
+ if info.full_type_name == "GObject::InitiallyUnownedClass"
20
+ return GObject::ObjectClass
21
+ end
20
22
  return parent_field_type.tag_or_class if info.gtype_struct?
21
23
  return BoxedBase if GObject.type_fundamental(info.gtype) == GObject::TYPE_BOXED
22
24
 
@@ -57,11 +57,9 @@ module GirFFI
57
57
  return unless prc
58
58
 
59
59
  new do |*args|
60
- begin
61
- call_with_argument_mapping(prc, *args)
62
- rescue StandardError => e
63
- GLib::MainLoop.handle_exception e
64
- end
60
+ call_with_argument_mapping(prc, *args)
61
+ rescue StandardError => e
62
+ GLib::MainLoop.handle_exception e
65
63
  end
66
64
  end
67
65
 
@@ -18,6 +18,7 @@ module GirFFI
18
18
  GIR_FFI_BUILDER = Builders::NullClassBuilder.new
19
19
 
20
20
  attr_reader :struct
21
+
21
22
  def_delegators :@struct, :to_ptr
22
23
 
23
24
  def setup_and_call(method, arguments, &block)
@@ -2,5 +2,5 @@
2
2
 
3
3
  # Current GirFFI version
4
4
  module GirFFI
5
- VERSION = "0.15.2"
5
+ VERSION = "0.15.3"
6
6
  end
@@ -53,7 +53,8 @@ describe GObject::Object do
53
53
  describe "#set_property" do
54
54
  it "raises an error for a property that does not exist" do
55
55
  instance = GObject::Object.new
56
- _(proc { instance.set_property "foo-bar", 123 }).must_raise GirFFI::PropertyNotFoundError
56
+ _(proc { instance.set_property "foo-bar", 123 })
57
+ .must_raise GirFFI::PropertyNotFoundError
57
58
  end
58
59
  end
59
60
 
@@ -103,7 +104,7 @@ describe GObject::Object do
103
104
 
104
105
  describe "upon garbage collection" do
105
106
  it "lowers the reference count" do
106
- skip "cannot be reliably tested on JRuby and Rubinius" if jruby? || rubinius?
107
+ skip "cannot be reliably tested on JRuby" if jruby?
107
108
 
108
109
  ptr = GObject::Object.new.to_ptr
109
110
  _(object_ref_count(ptr)).must_equal 1
@@ -369,7 +369,7 @@ describe GObject::Value do
369
369
 
370
370
  describe "upon garbage collection" do
371
371
  it "restores the underlying GValue to its pristine state" do
372
- skip "cannot be reliably tested on JRuby and Rubinius" if jruby? || rubinius?
372
+ skip "cannot be reliably tested on JRuby" if jruby?
373
373
 
374
374
  value = GObject::Value.from 42
375
375
 
@@ -32,7 +32,7 @@ describe GObjectIntrospection::IBaseInfo do
32
32
 
33
33
  describe "upon garbage collection" do
34
34
  it "calls g_base_info_unref" do
35
- skip "cannot be reliably tested on JRuby and Rubinius" if jruby? || rubinius?
35
+ skip "cannot be reliably tested on JRuby" if jruby?
36
36
 
37
37
  expect(ptr = Object.new).to receive(:null?).and_return false
38
38
  expect(lib = Object.new).to receive(:g_base_info_unref).with(ptr).and_return nil
@@ -40,7 +40,8 @@ describe GObject do
40
40
  callback = FFI::Function.new(:void, argtypes) do |_a, b, _c|
41
41
  b2 = b
42
42
  end
43
- ::GObject::Lib.g_signal_connect_data o, "test-with-static-scope-arg", callback, nil, nil, 0
43
+ ::GObject::Lib.g_signal_connect_data(o, "test-with-static-scope-arg",
44
+ callback, nil, nil, 0)
44
45
  GObject.signal_emit o, "test-with-static-scope-arg", sb
45
46
 
46
47
  sb2 = Regress::TestSimpleBoxedA.wrap b2
@@ -121,7 +122,8 @@ describe GObject do
121
122
  sb = Regress::TestSimpleBoxedA.new
122
123
  sb.some_int = 23
123
124
 
124
- GObject.signal_connect(o, "test-with-static-scope-arg", 2) do |_instance, object, user_data|
125
+ GObject.signal_connect(o, "test-with-static-scope-arg", 2) \
126
+ do |_instance, object, user_data|
125
127
  @a = user_data
126
128
  @b = object
127
129
  end
@@ -7,7 +7,8 @@ describe GirFFI::ArgHelper do
7
7
  it "handles class types" do
8
8
  klass = Class.new
9
9
  expect(klass).to receive(:wrap).with(:pointer_value).and_return :wrapped_value
10
- _(GirFFI::ArgHelper.cast_from_pointer(klass, :pointer_value)).must_equal :wrapped_value
10
+ _(GirFFI::ArgHelper.cast_from_pointer(klass, :pointer_value))
11
+ .must_equal :wrapped_value
11
12
  end
12
13
 
13
14
  describe "for :gint8" do
@@ -62,32 +63,38 @@ describe GirFFI::ArgHelper do
62
63
  it "handles GHashTable" do
63
64
  hash = GLib::HashTable.from [:utf8, :gint32], "foo" => 1, "bar" => 2
64
65
  ptr = hash.to_ptr
65
- result = GirFFI::ArgHelper.cast_from_pointer([:pointer, [:ghash, :utf8, :gint32]], ptr)
66
+ result = GirFFI::ArgHelper.cast_from_pointer([:pointer, [:ghash, :utf8, :gint32]],
67
+ ptr)
66
68
  _(result.to_hash).must_equal hash.to_hash
67
69
  end
68
70
 
69
71
  describe "when passing a broken typespec" do
70
72
  it "raises on unknown symbol" do
71
73
  ptr = FFI::Pointer.new(0xffffffff)
72
- exception = _(-> { GirFFI::ArgHelper.cast_from_pointer(:foo, ptr) }).must_raise RuntimeError
74
+ exception = _(-> { GirFFI::ArgHelper.cast_from_pointer(:foo, ptr) })
75
+ .must_raise RuntimeError
73
76
  _(exception.message).must_equal "Don't know how to cast foo"
74
77
  end
75
78
 
76
79
  it "raises on unexpected main type for complex type" do
77
80
  ptr = FFI::Pointer.new(0xffffffff)
78
- exception = _(-> { GirFFI::ArgHelper.cast_from_pointer([:utf8], ptr) }).must_raise RuntimeError
81
+ exception = _(-> { GirFFI::ArgHelper.cast_from_pointer([:utf8], ptr) })
82
+ .must_raise RuntimeError
79
83
  _(exception.message).must_equal "Don't know how to cast [:utf8]"
80
84
  end
81
85
 
82
86
  it "raises on unexpected sub type for complex type" do
83
87
  ptr = FFI::Pointer.new(0xffffffff)
84
- exception = _(-> { GirFFI::ArgHelper.cast_from_pointer([:pointer, :utf8], ptr) }).must_raise RuntimeError
88
+ exception = _(-> { GirFFI::ArgHelper.cast_from_pointer([:pointer, :utf8], ptr) })
89
+ .must_raise RuntimeError
85
90
  _(exception.message).must_equal "Don't know how to cast [:pointer, :utf8]"
86
91
  end
87
92
 
88
93
  it "raises on unexpected container type for complex type" do
89
94
  ptr = FFI::Pointer.new(0xffffffff)
90
- exception = _(-> { GirFFI::ArgHelper.cast_from_pointer([:pointer, [:gint32]], ptr) }).must_raise RuntimeError
95
+ exception =
96
+ _(-> { GirFFI::ArgHelper.cast_from_pointer([:pointer, [:gint32]], ptr) })
97
+ .must_raise RuntimeError
91
98
  _(exception.message).must_equal "Don't know how to cast [:pointer, [:gint32]]"
92
99
  end
93
100
  end
@@ -38,7 +38,7 @@ describe GirFFI::BoxedBase do
38
38
 
39
39
  describe "upon garbage collection" do
40
40
  it "frees and disowns the underlying struct if it is owned" do
41
- skip "cannot be reliably tested on JRuby and Rubinius" if jruby? || rubinius?
41
+ skip "cannot be reliably tested on JRuby" if jruby?
42
42
 
43
43
  allow(GObject).to receive(:boxed_free)
44
44
  gtype = GIMarshallingTests::BoxedStruct.gtype
@@ -108,7 +108,7 @@ describe GirFFI::Builder do
108
108
  describe ".attach_ffi_function" do
109
109
  let(:lib) { Module.new }
110
110
 
111
- it "calls attach_function with the correct types for Regress.test_callback_destroy_notify" do
111
+ it "attaches regress_test_callback_destroy_notify with the correct types" do
112
112
  function_info = get_introspection_data "Regress", "test_callback_destroy_notify"
113
113
 
114
114
  expect(lib)
@@ -121,7 +121,7 @@ describe GirFFI::Builder do
121
121
  GirFFI::Builder.attach_ffi_function(lib, function_info)
122
122
  end
123
123
 
124
- it "calls attach_function with the correct types for Regress::TestObj#torture_signature_0" do
124
+ it "attaches regress_test_obj_torture_signature_0 with the correct types" do
125
125
  info = get_method_introspection_data "Regress", "TestObj", "torture_signature_0"
126
126
 
127
127
  expect(lib)
@@ -134,7 +134,7 @@ describe GirFFI::Builder do
134
134
  GirFFI::Builder.attach_ffi_function(lib, info)
135
135
  end
136
136
 
137
- it "calls attach_function with the correct types for Regress::TestObj#instance_method" do
137
+ it "attaches regress_test_obj_instance_method with the correct types" do
138
138
  info = get_method_introspection_data "Regress", "TestObj", "instance_method"
139
139
  expect(lib).to receive(:attach_function)
140
140
  .with("regress_test_obj_instance_method", [:pointer], :int32)
@@ -165,158 +165,4 @@ describe GirFFI::Builder do
165
165
  GirFFI::Builder.attach_ffi_function(lib, info)
166
166
  end
167
167
  end
168
-
169
- #
170
- # NOTE: Legacy tests below.
171
- #
172
-
173
- describe "looking at Regress.test_callback_destroy_notify" do
174
- before do
175
- save_module :GObject
176
- save_module :Regress
177
- GirFFI::Builder.build_module "GObject"
178
- GirFFI::Builder.build_module "Regress"
179
- @go = get_introspection_data "Regress", "test_callback_destroy_notify"
180
- end
181
-
182
- it "defines ffi callback types :Callback and :ClosureNotify" do
183
- Regress.setup_method! "test_callback_destroy_notify"
184
- tcud = Regress::Lib.find_type :TestCallbackUserData
185
- dn = GLib::Lib.find_type :DestroyNotify
186
-
187
- assert_equal FFI.find_type(:int32), tcud.result_type
188
- assert_equal FFI.find_type(:void), dn.result_type
189
- assert_equal [FFI.find_type(:pointer)], tcud.param_types
190
- assert_equal [FFI.find_type(:pointer)], dn.param_types
191
- end
192
-
193
- after do
194
- restore_module :Regress
195
- restore_module :GObject
196
- end
197
- end
198
-
199
- describe "building Regress::TestBoxed" do
200
- before do
201
- GirFFI::Builder.build_class get_introspection_data("Regress", "TestBoxed")
202
- end
203
-
204
- it "sets up #wrap" do
205
- assert Regress::TestBoxed.respond_to? "wrap"
206
- end
207
-
208
- it "sets up #allocate" do
209
- assert Regress::TestBoxed.respond_to? "allocate"
210
- end
211
- end
212
-
213
- describe "built Regress module" do
214
- before do
215
- save_module :Regress
216
- GirFFI::Builder.build_module "Regress"
217
- end
218
-
219
- it "autocreates singleton methods" do
220
- refute_defines_singleton_method Regress, :test_uint
221
- Regress.test_uint 31
222
- assert_defines_singleton_method Regress, :test_uint
223
- end
224
-
225
- it "autocreates the TestObj class on first access" do
226
- assert !Regress.const_defined?(:TestObj)
227
- _(Regress::TestObj).must_be_instance_of Class
228
- assert Regress.const_defined? :TestObj
229
- end
230
-
231
- it "knows its own module builder" do
232
- _(Regress.gir_ffi_builder).must_be_instance_of GirFFI::Builders::ModuleBuilder
233
- end
234
-
235
- after do
236
- restore_module :Regress
237
- end
238
- end
239
-
240
- describe "having built Regress::TestObj" do
241
- before do
242
- GirFFI::Builder.build_class get_introspection_data("Regress", "TestObj")
243
- end
244
-
245
- it "C functions for called instance methods get attached to Regress::Lib" do
246
- o = Regress::TestObj.new_from_file("foo")
247
- o.instance_method
248
- _(Regress::Lib).must_respond_to :regress_test_obj_instance_method
249
- end
250
-
251
- it "the built class knows its own GIR info" do
252
- _(Regress::TestObj.gir_info.name).must_equal "TestObj"
253
- end
254
-
255
- it "the built class knows its own class builder" do
256
- _(Regress::TestObj.gir_ffi_builder).must_be_instance_of GirFFI::Builders::ObjectBuilder
257
- end
258
- end
259
-
260
- describe "built Regress::TestSubObj" do
261
- it "inherits #set_bare from its superclass" do
262
- o1 = Regress::TestSubObj.new
263
- o1.set_bare(nil)
264
- pass
265
- end
266
-
267
- it "overrides #instance_method" do
268
- obj = Regress::TestObj.new_from_file("foo")
269
- subobj = Regress::TestSubObj.new
270
-
271
- _(obj.instance_method).must_equal(-1)
272
- _(subobj.instance_method).must_equal 0
273
- end
274
- end
275
-
276
- describe "building Regress::TestSubObj" do
277
- before do
278
- save_module :Regress
279
- GirFFI::Builder.build_class get_introspection_data("Regress", "TestSubObj")
280
- end
281
-
282
- it "sets up the Regress namespace" do
283
- assert Regress.const_defined? :Lib
284
- assert Regress.respond_to? :gir_ffi_builder
285
- assert Regress.const_defined? :GIR_FFI_BUILDER
286
- end
287
-
288
- it "creates the Regress::Lib module ready to attach functions from the shared library" do
289
- expected = [gir.shared_library("Regress")]
290
- assert_equal expected, Regress::Lib.ffi_libraries.map(&:name)
291
- end
292
-
293
- it "builds parent classes also" do
294
- assert Regress.const_defined? :TestObj
295
- assert Object.const_defined? :GObject
296
- assert GObject.const_defined? :Object
297
- end
298
-
299
- it "sets up the inheritance chain" do
300
- # Introduced in version 1.59.1
301
- expected = if Regress::TestSubObj.find_property :boolean
302
- [Regress::TestSubObj,
303
- Regress::TestInterface,
304
- Regress::TestObj,
305
- GObject::Object]
306
- else
307
- [Regress::TestSubObj,
308
- Regress::TestObj,
309
- GObject::Object]
310
- end
311
- _(Regress::TestSubObj.registered_ancestors).must_equal expected
312
- end
313
-
314
- it "creates a Regress::TestSubObj#to_ptr method" do
315
- assert Regress::TestSubObj.public_method_defined? :to_ptr
316
- end
317
-
318
- after do
319
- restore_module :Regress
320
- end
321
- end
322
168
  end