|
62 | 62 | it "passes a single, multi-value Array" do
|
63 | 63 | @y.s([1, 2, 3], &lambda { |*a| a }).should == [[1, 2, 3]]
|
64 | 64 | end
|
| 65 | + |
| 66 | +it "raises an ArgumentError if too few arguments are passed" do |
| 67 | +lambda { |
| 68 | +@y.s(1, &lambda { |a,b| [a,b] }) |
| 69 | +}.should raise_error(ArgumentError) |
| 70 | +end |
| 71 | + |
| 72 | +ruby_bug "#12705", "2.4" do |
| 73 | +it "should not destructure an Array into multiple arguments" do |
| 74 | +lambda { |
| 75 | +@y.s([1, 2], &lambda { |a,b| [a,b] }) |
| 76 | +}.should raise_error(ArgumentError) |
| 77 | +end |
| 78 | +end |
| 79 | + |
| 80 | +ruby_version_is ""..."2.2" do # above is a regression since 2.2 |
| 81 | +it "should not destructure an Array into multiple arguments" do |
| 82 | +lambda { |
| 83 | +@y.s([1, 2], &lambda { |a,b| [a,b] }) |
| 84 | +}.should raise_error(ArgumentError) |
| 85 | +end |
| 86 | +end |
65 | 87 | end
|
66 | 88 | end
|
67 | 89 |
|
|
73 | 95 | it "passes the arguments to the block" do
|
74 | 96 | @y.m(1, 2, 3) { |*a| a }.should == [1, 2, 3]
|
75 | 97 | end
|
| 98 | + |
| 99 | +it "passes only the first argument if the block takes one parameter" do |
| 100 | +@y.m(1, 2, 3) { |a| a }.should == 1 |
| 101 | +end |
| 102 | + |
| 103 | +it "raises an ArgumentError if too many arguments are passed to a lambda" do |
| 104 | +lambda { |
| 105 | +@y.m(1, 2, 3, &lambda { |a| }) |
| 106 | +}.should raise_error(ArgumentError) |
| 107 | +end |
| 108 | + |
| 109 | +it "raises an ArgumentError if too few arguments are passed to a lambda" do |
| 110 | +lambda { |
| 111 | +@y.m(1, 2, 3, &lambda { |a,b,c,d| }) |
| 112 | +}.should raise_error(ArgumentError) |
| 113 | +end |
76 | 114 | end
|
77 | 115 |
|
78 | 116 | describe "taking a single splatted argument" do
|
|
0 commit comments