Sha256: 008441959dbd950f7c32580b012a2ea2b9702cb020148bfec35d0a8cf1dca79c
Contents?: true
Size: 1.97 KB
Versions: 1
Compression:
Stored size: 1.97 KB
Contents
# frozen_string_literal: true require 'gir_ffi_test_helper' GirFFI.setup :GIMarshallingTests describe GirFFI::BoxedBase do describe 'initialize' do it 'sets up the held struct pointer' do # NOTE: GObject::Value uses the generic constructor, unlike # GIMarshallingTests::BoxedStruct, which has its own constructor. value = GObject::Value.new value.to_ptr.wont_be_nil end end describe 'copy_from' do it 'returns a copy with owned false' do original = GIMarshallingTests::BoxedStruct.new copy = GIMarshallingTests::BoxedStruct.copy_from(original) copy.to_ptr.wont_equal original.to_ptr copy.to_ptr.wont_be :autorelease? copy.struct.wont_be :owned? end end describe 'wrap_own' do it 'wraps and owns the supplied pointer' do original = GIMarshallingTests::BoxedStruct.new copy = GIMarshallingTests::BoxedStruct.wrap_own(original.to_ptr) copy.to_ptr.must_equal original.to_ptr copy.to_ptr.wont_be :autorelease? copy.struct.must_be :owned? end end describe 'upon garbage collection' do it 'frees and disowns the underlying struct if it is owned' do if jruby? || rubinius? skip 'cannot be reliably tested on JRuby and Rubinius' end allow(GObject).to receive(:boxed_free) gtype = GIMarshallingTests::BoxedStruct.gtype owned_struct = GIMarshallingTests::BoxedStruct.new.struct owned_ptr = owned_struct.to_ptr unowned_struct = GIMarshallingTests::BoxedStruct.new.struct unowned_struct.owned = false unowned_ptr = unowned_struct.to_ptr GC.start # Creating a new object is sometimes needed to trigger enough garbage collection. GIMarshallingTests::BoxedStruct.new sleep 1 GC.start GC.start expect(GObject).to have_received(:boxed_free).with(gtype, owned_ptr) expect(GObject).not_to have_received(:boxed_free).with(gtype, unowned_ptr) owned_struct.wont_be :owned? end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
gir_ffi-0.11.0 | test/gir_ffi/boxed_base_test.rb |