Newer
Older
Ary Borenszweig
committed
require "../../spec_helper"
describe "Code gen: splat" do
it "splats" do
run(%(
class Tuple
def length; {{@length}}; end
end
Ary Borenszweig
committed
def foo(*args)
args.length
end
foo 1, 1, 1
)).to_i.should eq(3)
end
it "splats with another arg" do
run(%(
class Tuple
def length; {{@length}}; end
end
Ary Borenszweig
committed
def foo(x, *args)
x + args.length
end
foo 10, 1, 1
)).to_i.should eq(12)
end
it "splats with two other args" do
run(%(
class Tuple
def length; {{@length}}; end
end
Ary Borenszweig
committed
def foo(x, *args, z)
x + args.length + z
end
foo 10, 2, 20
)).to_i.should eq(31)
end
it "splats on call" do
run(%(
def foo(x, y)
x + y
end
tuple = {1, 2}
foo *tuple
)).to_i.should eq(3)
end
it "splats without args" do
run(%(
class Tuple
def length; {{@length}}; end
end
def foo(*args)
args.length
end
foo
)).to_i.should eq(0)
end
it "splats with default value" do
run(%(
class Tuple
def length; {{@length}}; end
end
def foo(x = 100, *args)
x + args.length
end
foo
)).to_i.should eq(100)
end
it "splats with default value (2)" do
run(%(
class Tuple
def length; {{@length}}; end
end
def foo(x, y = 100, *args)
x + y + args.length
end
foo 10
)).to_i.should eq(110)
end
it "splats with default value (3)" do
run(%(
class Tuple
def length; {{@length}}; end
end
def foo(x, y = 100, *args)
x + y + args.length
end
foo 10, 20, 30, 40
)).to_i.should eq(32)
end
it "splats in initialize" do
run(%(
class Foo
def initialize(*args)
@x, @y = args
end
def x
@x
end
def y
@y
end
end
foo = Foo.new 1, 2
foo.x + foo.y
)).to_i.should eq(3)
end