Sha256: f3b31e20a56fbbf49f162185655dde627bcef5d81bfe64d15c59c2fe25c55b1f

Contents?: true

Size: 1.17 KB

Versions: 6

Compression:

Stored size: 1.17 KB

Contents

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

describe GirFFI::Builder::Type::Callback do
  describe "#pretty_print" do
    it "returns a statement assigning the callback to a constant" do
      mock(info = Object.new).safe_name { "TheCallback" }
      stub(info).namespace { "Foo" }
      mock(GirFFI::Builder).ffi_function_return_type(info) { :ret_type }
      mock(GirFFI::Builder).ffi_function_argument_types(info) { [ :baz, :qux ] }

      builder = GirFFI::Builder::Type::Callback.new(info)

      assert_equal "TheCallback = Lib.callback :TheCallback, [:baz, :qux], :ret_type",
        builder.pretty_print
    end

    it "renders enum argument types by their tags" do
      stub(enum = FFI::Enum.new([])).tag { :EnumTag }

      mock(info = Object.new).safe_name { "TheCallback" }
      stub(info).namespace { "Foo" }
      mock(GirFFI::Builder).ffi_function_return_type(info) { :ret_type }
      mock(GirFFI::Builder).ffi_function_argument_types(info) { [ enum ] }

      builder = GirFFI::Builder::Type::Callback.new(info)

      assert_equal "TheCallback = Lib.callback :TheCallback, [EnumTag], :ret_type",
        builder.pretty_print
    end
  end
end


Version data entries

6 entries across 6 versions & 1 rubygems

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