Sha256: 48f27f1c778f451155a3b351303836b3520ddce5687cca9401eeeef5bc13bb15

Contents?: true

Size: 1.77 KB

Versions: 9

Compression:

Stored size: 1.77 KB

Contents

# frozen_string_literal: true

require 'gir_ffi_test_helper'

describe GirFFI::Builders::InitializerBuilder do
  describe '#method_definition' do
    let(:builder) { GirFFI::Builders::InitializerBuilder.new function_info }
    let(:code) { builder.method_definition }

    describe 'for constructors with the default name' do
      let(:function_info) { get_method_introspection_data 'Regress', 'TestObj', 'new' }
      it 'builds an initializer' do
        code.must_equal <<-CODE.reset_indentation
          def initialize(obj)
            _v1 = Regress::TestObj.from(obj)
            _v2 = Regress::Lib.regress_test_obj_new _v1
            store_pointer(_v2)
          end
        CODE
      end
    end

    describe 'for constructors with a custom name' do
      let(:function_info) { get_method_introspection_data 'Regress', 'TestObj', 'new_from_file' }
      it 'builds a custom initializer' do
        code.must_equal <<-CODE.reset_indentation
          def initialize_from_file(x)
            _v1 = GirFFI::InPointer.from_utf8(x)
            _v2 = FFI::MemoryPointer.new(:pointer).write_pointer nil
            _v3 = Regress::Lib.regress_test_obj_new_from_file _v1, _v2
            GirFFI::ArgHelper.check_error(_v2)
            store_pointer(_v3)
          end
        CODE
      end
    end

    describe 'for constructors for boxed types' do
      let(:function_info) do
        get_method_introspection_data 'GIMarshallingTests', 'BoxedStruct', 'new'
      end

      it 'builds an initializer that sets owned to true' do
        code.must_equal <<-CODE.reset_indentation
          def initialize
            _v1 = GIMarshallingTests::Lib.gi_marshalling_tests_boxed_struct_new
            store_pointer(_v1)
            @struct.owned = true
          end
        CODE
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
gir_ffi-0.14.1 test/gir_ffi/builders/initializer_builder_test.rb
gir_ffi-0.14.0 test/gir_ffi/builders/initializer_builder_test.rb
gir_ffi-0.13.1 test/gir_ffi/builders/initializer_builder_test.rb
gir_ffi-0.13.0 test/gir_ffi/builders/initializer_builder_test.rb
gir_ffi-0.12.1 test/gir_ffi/builders/initializer_builder_test.rb
gir_ffi-0.12.0 test/gir_ffi/builders/initializer_builder_test.rb
gir_ffi-0.11.4 test/gir_ffi/builders/initializer_builder_test.rb
gir_ffi-0.11.3 test/gir_ffi/builders/initializer_builder_test.rb
gir_ffi-0.11.2 test/gir_ffi/builders/initializer_builder_test.rb