Sha256: fcb7b990acf2accb803788b16e1e83880f6ae2ce015caa807c9a8ee694e5d299

Contents?: true

Size: 1.66 KB

Versions: 2

Compression:

Stored size: 1.66 KB

Contents

require File.dirname(__FILE__) + '/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")
        e.namespace "classes"
      end

      require 'adder'
    end
  end

  specify "should make classes available as Ruby runtime constants" do
    assert defined?(Adder), "Adder isn't defined"
  end

  specify "should make wrapped classes constructable" do
    a = Adder.new
    a.should.not.be.nil
  end

  specify "should make functions of the class available" do
    # Wrapped method names default to underscore'd
    adder = Adder.new
    adder.add_integers(1,2).should == 3
    adder.add_floats(1.0, 2.0).should.be.close(3.0, 0.001)
    adder.add_strings("Hello", "World").should == "HelloWorld"
    adder.get_class_name.should == "Adder"
  end

  # Explicit self
  specify "should properly wrap static methods as class methods" do
    Adder.do_adding(1, 2, 3, 4, 5).should == 15
  end

end

context "Wrapping Classes within classes" do

  def setup
    if !defined?(@@nested_built)
      super
      @@nested_built = true 
      Extension.new "nested" do |e|
        e.sources full_dir("headers/nested_classes.h")
        e.namespace "classes"
      end

      require 'nested'
    end
  end

  specify "should properly make nested classes available" do
    assert defined?(TestClass) 
    assert defined?(TestClass::InnerClass) 
    assert defined?(TestClass::InnerClass::Inner2) 

    TestClass.new.should.not.be.nil
    TestClass::InnerClass.new.should.not.be.nil
    TestClass::InnerClass::Inner2.new.should.not.be.nil
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
rbplusplus-0.1.1 test/classes_test.rb
rbplusplus-0.1 test/classes_test.rb