Sha256: 88621578f38755fb090b3d93fee8a2e5c22f953f02816193dd00515ff925d64e

Contents?: true

Size: 1.53 KB

Versions: 2

Compression:

Stored size: 1.53 KB

Contents

require 'introspection_test_helper'

describe GObjectIntrospection::IBaseInfo do
  let(:described_class) { GObjectIntrospection::IBaseInfo }
  describe "#initialize" do
    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 "#deprecated?" do
    let(:deprecated_info) { get_introspection_data 'Regress', 'test_versioning' }
    let(:other_info) { get_introspection_data 'Regress', 'test_value_return' }

    it "returns true for a deprecated item" do
      skip unless deprecated_info
      deprecated_info.must_be :deprecated?
    end

    it "returns false for a non-deprecated item" do
      other_info.wont_be :deprecated?
    end
  end

  describe "upon garbage collection" do
    it "calls g_base_info_unref" do
      if defined?(RUBY_ENGINE) && ['jruby', 'rbx'].include?(RUBY_ENGINE)
        skip "cannot be reliably tested on JRuby and Rubinius"
      end

      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

2 entries across 2 versions & 1 rubygems

Version Path
gir_ffi-0.7.7 test/ffi-gobject_introspection/i_base_info_test.rb
gir_ffi-0.7.6 test/ffi-gobject_introspection/i_base_info_test.rb