Sha256: a0acc83bbcece68f7a189de4f0854afc7f4eab53d5773f0825b85be2f512cb59

Contents?: true

Size: 1.18 KB

Versions: 1

Compression:

Stored size: 1.18 KB

Contents

require 'test_helper'

context "Extension with wrapped classes" do

  def setup
    if !defined?(@@adder_built)
      super
      @@adder_built = true 
      Extension.new "adder" do |e|
        e.sources full_dir("headers/Adder.h"),
          :include_source_files => [
            full_dir("headers/Adder.h"),
            full_dir("headers/Adder.cpp")
          ]
        node = e.namespace "classes"
        adder = node.classes("Adder")

        adder.use_constructor( adder.constructors.find(:arguments => []))
        adder.disable_typedef_lookup

        decl = <<-END
int subtractIntegers(classes::Adder* self, int a, int b) {
  return a - b;
}

int multiplyIntegers(classes::Adder* self, int a, int b) {
  return a * b;
}
        END

        wrapping = <<-END
<class>.define_method(\"sub_ints\", &subtractIntegers);
<class>.define_method(\"mult_ints\", &multiplyIntegers);
END

        adder.add_custom_code( decl, wrapping )
      end

      require 'adder'
    end
  end

  specify "Adder has new custom methods" do
    a = Adder.new
    a.should.respond_to(:sub_ints)
    a.should.respond_to(:mult_ints)

    a.sub_ints(5, 4).should.equal 1
    a.mult_ints(5, 4).should.equal 20
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rbplusplus-0.9.1 test/custom_code_test.rb