Sha256: 5148e9f837a3224740566339795cd384357d4ad7ee606ba5ac6ce8fa9bf64994

Contents?: true

Size: 1.36 KB

Versions: 5

Compression:

Stored size: 1.36 KB

Contents

require File.expand_path('../gir_ffi_test_helper.rb', File.dirname(__FILE__))

describe GirFFI::ClassBase do
  describe "a simple descendant" do
    before do
      @klass = Class.new GirFFI::ClassBase
    end

    it "has #from as a pass-through method" do
      result = @klass.from :foo
      result.must_equal :foo
    end
  end

  describe "a descendant with multiple builders" do
    it "looks up class methods in all builders" do
      mock(builder = Object.new).setup_method("foo") { true }
      klass = Class.new GirFFI::ClassBase
      klass.const_set :GIR_FFI_BUILDER, builder

      mock(sub_builder = Object.new).setup_method("foo") { false }
      sub_klass = Class.new klass do
        def self.foo; end
      end
      sub_klass.const_set :GIR_FFI_BUILDER, sub_builder

      sub_klass.setup_and_call :foo
    end

    it "looks up class methods in all builders" do
      mock(builder = Object.new).setup_instance_method("foo") { true }
      klass = Class.new GirFFI::ClassBase
      klass.const_set :GIR_FFI_BUILDER, builder

      mock(sub_builder = Object.new).setup_instance_method("foo") { false }
      sub_klass = Class.new klass do
        def foo; end
        def initialize; end
        def self.new; self._real_new; end
      end
      sub_klass.const_set :GIR_FFI_BUILDER, sub_builder

      obj = sub_klass.new

      obj.setup_and_call :foo
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
gir_ffi-0.4.0 test/unit/class_base_test.rb
gir_ffi-0.3.2 test/unit/class_base_test.rb
gir_ffi-0.3.1 test/unit/class_base_test.rb
gir_ffi-0.3.0 test/unit/class_base_test.rb
gir_ffi-0.2.3 test/unit/class_base_test.rb