Sha256: 7f1aa207fbe2b51dc7dea67936f817b6f87876fdb1ceada6e06c7ff722a9963c

Contents?: true

Size: 1.16 KB

Versions: 3

Compression:

Stored size: 1.16 KB

Contents

require 'introspection_test_helper'

describe GObjectIntrospection::IBaseInfo do
  let(:described_class) { GObjectIntrospection::IBaseInfo }
  describe "#initialize" do
    it "raises an error if nil is passed" do
      proc { described_class.new nil }.must_raise ArgumentError
    end

    it "raises an error if a null pointer is passed" do
      mock(ptr = Object.new).null? { true }
      proc { described_class.new ptr }.must_raise ArgumentError
    end

    it "raises no error if a non-null pointer is passed" do
      mock(ptr = Object.new).null? { false }
      described_class.new ptr
      pass
    end
  end

  describe "upon garbage collection" do
    it "calls g_base_info_unref" do
      skip "cannot be reliably tested on JRuby" if RUBY_PLATFORM == 'java'
      mock(ptr = Object.new).null? { false }
      mock(lib = Object.new).g_base_info_unref(ptr) { nil }
      described_class.new ptr, lib

      GC.start

      # Yes, the next three lines are needed. https://gist.github.com/4277829
      stub(ptr2 = Object.new).null? { false }
      stub(lib).g_base_info_unref(ptr2) { nil }
      described_class.new ptr2, lib

      GC.start
      GC.start
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
gir_ffi-0.5.2 test/ffi-gobject_introspection/i_base_info_test.rb
gir_ffi-0.5.1 test/ffi-gobject_introspection/i_base_info_test.rb
gir_ffi-0.5.0 test/ffi-gobject_introspection/i_base_info_test.rb