Sha256: e7fed83332cd75d3695b122a4429388313126eb282e520b5da5a86d14754145c

Contents?: true

Size: 1.13 KB

Versions: 3

Compression:

Stored size: 1.13 KB

Contents

require 'gir_ffi_test_helper'

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

3 entries across 3 versions & 1 rubygems

Version Path
gir_ffi-0.4.3 test/gir_ffi/builder/type/callback_test.rb
gir_ffi-0.4.2 test/gir_ffi/builder/type/callback_test.rb
gir_ffi-0.4.1 test/gir_ffi/builder/type/callback_test.rb