Sha256: e2d2462ffcc8137a4a2e87f258405cca2cd50c9a318372e7eb798b57397d5ed6
Contents?: true
Size: 1.73 KB
Versions: 1
Compression:
Stored size: 1.73 KB
Contents
# frozen_string_literal: true require 'gir_ffi_test_helper' describe GObject::RubyClosure do describe '.new' do it 'takes a mandatory block argument' do assert_raises ArgumentError do GObject::RubyClosure.new end end it 'returns a kind of Closure' do c = GObject::RubyClosure.new {} assert_kind_of GObject::Closure, c end it 'updates the ref_count of the created object' do c = GObject::RubyClosure.new {} c.ref_count.must_equal 1 end end describe '.wrap' do it 'returns a fully functional object that can invoke the original block' do a = 0 c = GObject::RubyClosure.new { a = 2 } c2 = GObject::RubyClosure.wrap(c.to_ptr) c2.invoke_block assert_equal 2, a end end describe '.marshaller' do it "invokes its closure argument's block" do a = 0 c = GObject::RubyClosure.new { a = 2 } GObject::RubyClosure.marshaller(c, nil, nil, nil, nil) assert_equal 2, a end it 'works when its closure argument is a GObject::Closure' do a = 0 c = GObject::RubyClosure.new { a = 2 } c2 = GObject::Closure.wrap(c.to_ptr) GObject::RubyClosure.marshaller(c2, nil, nil, nil, nil) assert_equal 2, a end it "stores the closure's return value in the proper gvalue" do c = GObject::RubyClosure.new { 2 } gv = GObject::Value.new.init GObject::TYPE_INT GObject::RubyClosure.marshaller(c, gv, nil, nil, nil) assert_equal 2, gv.get_value end end describe '#invoke' do it 'invokes the ruby block' do a = 0 c = GObject::RubyClosure.new { a = 2 } c2 = GObject::Closure.wrap(c.to_ptr) c2.invoke nil, [] assert_equal 2, a end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
gir_ffi-0.10.2 | test/ffi-glib/ruby_closure_test.rb |