Sha256: 9f2f8f1e5d6fef4e8867eabe60a1664e2548e5725ade4ae97c22526cc970643e

Contents?: true

Size: 939 Bytes

Versions: 4

Compression:

Stored size: 939 Bytes

Contents

# frozen_string_literal: true

require "gir_ffi_test_helper"

describe GObject::Closure do
  describe ".new" do
    it "updates the ref_count of the created object" do
      # Tested on a subclass ...
      c = GObject::RubyClosure.new {}
      _(c.ref_count).must_equal 1
    end
  end

  describe "#invoke" do
    it "invokes the closure" do
      a = 0
      c = GObject::RubyClosure.new { a = 2 }
      c2 = GObject::Closure.wrap(c.to_ptr)
      c2.invoke nil, []
      _(a).must_equal 2
    end

    it "returns the closure result" do
      c = GObject::RubyClosure.new { 3 }
      c2 = GObject::Closure.wrap(c.to_ptr)
      result = c2.invoke GObject::Value.for_gtype(GObject::TYPE_INT), []
      _(result).must_equal 3
    end

    it "passes arguments" do
      a = 0
      c = GObject::RubyClosure.new { |val| a = val }
      c2 = GObject::Closure.wrap(c.to_ptr)
      c2.invoke nil, [5]
      _(a).must_equal 5
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
gir_ffi-0.15.3 test/ffi-glib/closure_test.rb
gir_ffi-0.15.2 test/ffi-glib/closure_test.rb
gir_ffi-0.15.1 test/ffi-glib/closure_test.rb
gir_ffi-0.15.0 test/ffi-glib/closure_test.rb