Sha256: 0ac237db3a7c4a42f8e688d475c4f33cb39295cd6d6eea04e7c115e7a75919b9

Contents?: true

Size: 1.73 KB

Versions: 3

Compression:

Stored size: 1.73 KB

Contents

# frozen_string_literal: true

require 'gir_ffi_test_helper'

GirFFI.setup :Regress

describe GirFFI::ObjectBase do
  let(:derived_class) { Class.new GirFFI::ObjectBase }

  describe '.wrap' do
    it 'delegates conversion to the wrapped pointer' do
      expect(ptr = Object.new).to receive(:to_object).and_return 'good-result'
      derived_class.wrap(ptr).must_equal 'good-result'
    end
  end

  describe '.to_ffi_type' do
    it 'returns itself' do
      derived_class.to_ffi_type.must_equal derived_class
    end
  end

  describe '.object_class' do
    it 'returns an object of the class struct type' do
      Regress::TestObj.object_class.must_be_instance_of Regress::TestObjClass
    end

    it 'caches its result' do
      first = Regress::TestObj.object_class
      second = Regress::TestObj.object_class
      second.must_be :eql?, first
    end
  end

  describe '#included_interfaces' do
    let(:base_class) { GIMarshallingTests::Object }
    let(:derived_class) { Class.new(base_class) }

    before do
      derived_class.class_eval { include GIMarshallingTests::Interface }
    end

    it 'finds the included interface' do
      derived_class.included_interfaces.must_equal [GIMarshallingTests::Interface]
    end
  end

  describe '#registered_ancestors' do
    let(:base_class) { GIMarshallingTests::Object }
    let(:derived_class) { Class.new(base_class) }

    before do
      derived_class.class_eval { include GIMarshallingTests::Interface }
    end

    it 'finds the ancestor classes and included interface' do
      derived_class.registered_ancestors.
        must_equal [derived_class,
                    GIMarshallingTests::Interface,
                    GIMarshallingTests::Object,
                    GObject::Object]
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
gir_ffi-0.14.1 test/gir_ffi/object_base_test.rb
gir_ffi-0.14.0 test/gir_ffi/object_base_test.rb
gir_ffi-0.13.1 test/gir_ffi/object_base_test.rb