File: javascript_behaviour_spec.rb

package info (click to toggle)
ruby-rubyvis 0.7.0%2Bdfsg1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,808 kB
  • sloc: ruby: 11,120; javascript: 25; makefile: 2
file content (64 lines) | stat: -rw-r--r-- 2,308 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
require File.expand_path(File.dirname(__FILE__)+"/spec_helper.rb")
describe "Javascript compatibility" do
  it "extends Proc with js_apply and js_call" do
    f=lambda {|a,b| a+b}
    expect(f).to respond_to(:js_apply)
    expect(f).to respond_to(:js_call)
  end
  it "lambdas should respond correctly to js_call with same numbers of arguments and parameters" do
    o=OpenStruct.new :x=>15
    f=lambda {|m1,m2| "#{m1}-#{m2}-#{self.x}"}
    expect(f.js_call(o,"a","b")).to eq("a-b-15")
  end
  it "lambdas should respond correctly to js_call without arguments" do
    o=OpenStruct.new :x=>15    
    f=lambda { self.x.to_s}
    expect(f.js_call(o)).to eq("15")    
  end
  it "lambdas should respond correctly to js_call with different number or arguments" do
    o=OpenStruct.new :x=>15    
    f=lambda {|a,b,c| [a,b,c]}
    expect(f.js_call(o,1)).to eq([1,nil,nil])
    expect(f.js_call(o,1,2,3,4)).to eq([1,2,3])
  end
  context "js_call using lambda with variable arguments" do
    before do
      @o=OpenStruct.new :x=>15    
      @f=lambda {|a,b,*c| {:a=>a, :b=>b, :c=>c}}
    end
    it "should work without 0 parameters" do
      expect(@f.js_call(@o)).to eq({:a=>nil, :b=>nil, :c=>[]})
    end
    it "should work with required parameter and 0 optional" do
      expect(@f.js_call(@o,1,2)).to eq({:a=>1, :b=>2, :c=>[]})
    end
    it "should work with required and optional parameters" do
      expect(@f.js_call(@o,1,2,3,4)).to eq({:a=>1, :b=>2, :c=>[3,4]})
    end
  end
  it "lambdas should respond correctly to js_apply" do
    o=OpenStruct.new :x=>15
    f=lambda {|m1,m2| "#{m1}-#{m2}-#{self.x}"}
    expect(f.js_apply(o, ["a","b"])).to eq("a-b-15")
  end
  it "lambdas should respond correctly to js_apply with empty arguments" do
    o=OpenStruct.new :x=>15
    f=lambda { "#{self.x}"}
    expect(f.js_apply(o, [])).to eq("15")
    expect(f.js_apply(o, [1])).to eq("15")

  end
  
  it "lambdas should respond correctly to js_call with fewer parameters" do
    o=OpenStruct.new :x=>15    
    f=lambda {|a,b,c| [a,b,c]}
    expect(f.js_apply(o,[1])).to eq([1,nil,nil])
  end
  it "lambdas should respond correctly to js_call with more parameters" do
    o=OpenStruct.new :x=>15    
    f=lambda {|a,b,c| [a,b,c]}    
    expect(f.js_apply(o,[1,2,3,4])).to eq([1,2,3])    
  end
  
  
end