Sha256: 2e4ec129ff7f052a4a95b9e543b15d984addb970860ec771e90618b5e4321ce6

Contents?: true

Size: 1.16 KB

Versions: 1

Compression:

Stored size: 1.16 KB

Contents

require 'application.rb'

describe "Application" do
  it "should define an API based upon the 'api'-function" do
    class MyApp<Application
      def myFunc
      end
      def a(x,y)
        x+y
      end
      
      api :myFunc,:a
    end
    
    app=MyApp.new(nil,{})
    lambda {app.api(:myFunc)}.should_not raise_error(AccessViolationException)
    lambda {app.api(:a,3,4)}.should_not raise_error(AccessViolationException)
    app.api(:a,5,7).should == 12
    lambda {app.api(:myFunc2)}.should raise_error(AccessViolationException)
  end
    
  
  it "APIs should not collide" do
    class A<Application
      def a(x,y)
        x+y
      end
      api :a
    end
      
    
    class B<Application
      def b(x,y)
        x-y
      end
      api :b
    end
    a=A.new(nil,{})
    b=B.new(nil,{})
      
    lambda {a.api(:a,3,4)}.should_not raise_error(AccessViolationException)
    lambda {a.api(:b,3,4)}.should raise_error(AccessViolationException)
    a.api(:a,3,4).should == 7
    lambda {b.api(:a,3,4)}.should raise_error(AccessViolationException)
    lambda {b.api(:b,3,4)}.should_not raise_error(AccessViolationException)
    b.api(:b,3,4).should == -1

  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
appswarm-0.0.1 lib/appswarm/spec/application_spec.rb