Sha256: 0c72180e1747822deab08889b2788efc1350e93ad6c026369995225437d4deed

Contents?: true

Size: 1.61 KB

Versions: 56

Compression:

Stored size: 1.61 KB

Contents

require "#{File.dirname(__FILE__)}/../spec_helper.rb"

include V8

describe C::Function do
  it "is callable" do
    Context.new do |cxt|
      f = cxt.eval('(function() {return "Hello World"})', '<eval>');
      f.call().should == "Hello World"
    end
  end

  it "receives proper argument length from ruby" do
    Context.new do |cxt|
      f = cxt.eval('(function() {return arguments.length})', 'eval')
      f.call(1, 2, 3).should == 3
    end
  end

  it "maps all arguments from ruby" do
    Context.new do |cxt|
      f = cxt.eval('(function(one, two, three) {return one + two + three})', 'eval')
      f.call(1,2,3).should == 6
    end
  end

  it "properly maps ruby objects back and forth from arguments to return value" do
    Context.new do |cxt|
      Object.new.tap do |this|
         f = cxt.eval('(function() {return this})', 'eval')
         f.methodcall(this).should be(this)
      end
    end
  end

  it "can be called outside of a context" do
    Context.new do |cxt|
      @f = cxt.eval('(function() {return "Call Me"})', 'eval')
    end
    @f.call().should == "Call Me"
  end

  it "is reflected properly" do
    Context.new do |cxt|
      cxt['say'] = lambda {|this, word, times| word * times}
      cxt.eval('say("Hello", 3)').should == "HelloHelloHello"
    end
  end

  it "has a name" do
    Context.new do |cxt|
      f = cxt.eval('(function hi() {return "Hello World"})', '<eval>')
      f.name.should == "hi"
    end
  end

  it "can have its name set" do
    Context.new do |cxt|
      f = cxt.eval('(function () {return "Goodbye World"})', '<eval>')
      f.name = 'bye'
      f.name.should == 'bye'
    end
  end
end

Version data entries

56 entries across 56 versions & 5 rubygems

Version Path
classiccms-0.7.5 vendor/bundle/gems/therubyracer-0.10.1/spec/ext/func_spec.rb
classiccms-0.7.4 vendor/bundle/gems/therubyracer-0.10.1/spec/ext/func_spec.rb
classiccms-0.7.3 vendor/bundle/gems/therubyracer-0.10.1/spec/ext/func_spec.rb
classiccms-0.7.2 vendor/bundle/gems/therubyracer-0.10.1/spec/ext/func_spec.rb
classiccms-0.7.1 vendor/bundle/gems/therubyracer-0.10.1/spec/ext/func_spec.rb
classiccms-0.7.0 vendor/bundle/gems/therubyracer-0.10.1/spec/ext/func_spec.rb
classiccms-0.6.9 vendor/bundle/gems/therubyracer-0.10.1/spec/ext/func_spec.rb
classiccms-0.6.8 vendor/bundle/gems/therubyracer-0.10.1/spec/ext/func_spec.rb
classiccms-0.6.7 vendor/bundle/gems/therubyracer-0.10.1/spec/ext/func_spec.rb
classiccms-0.6.6 vendor/bundle/gems/therubyracer-0.10.1/spec/ext/func_spec.rb
classiccms-0.6.5 vendor/bundle/gems/therubyracer-0.10.1/spec/ext/func_spec.rb
classiccms-0.6.4 vendor/bundle/gems/therubyracer-0.10.1/spec/ext/func_spec.rb
classiccms-0.6.3 vendor/bundle/gems/therubyracer-0.10.1/spec/ext/func_spec.rb
classiccms-0.6.2 vendor/bundle/gems/therubyracer-0.10.1/spec/ext/func_spec.rb
classiccms-0.6.1 vendor/bundle/gems/therubyracer-0.10.1/spec/ext/func_spec.rb
classiccms-0.6.0 vendor/bundle/gems/therubyracer-0.10.1/spec/ext/func_spec.rb
classiccms-0.5.17 vendor/bundle/gems/therubyracer-0.10.1/spec/ext/func_spec.rb
classiccms-0.5.16 vendor/bundle/gems/therubyracer-0.10.1/spec/ext/func_spec.rb
classiccms-0.5.15 vendor/bundle/gems/therubyracer-0.10.1/spec/ext/func_spec.rb
classiccms-0.5.14 vendor/bundle/gems/therubyracer-0.10.1/spec/ext/func_spec.rb