diff options
Diffstat (limited to 'spec/ruby/core/integer/plus_spec.rb')
| -rw-r--r-- | spec/ruby/core/integer/plus_spec.rb | 29 |
1 files changed, 23 insertions, 6 deletions
diff --git a/spec/ruby/core/integer/plus_spec.rb b/spec/ruby/core/integer/plus_spec.rb index d01a76ab58..b684377bd5 100644 --- a/spec/ruby/core/integer/plus_spec.rb +++ b/spec/ruby/core/integer/plus_spec.rb @@ -17,9 +17,9 @@ describe "Integer#+" do -> { (obj = mock('10')).should_receive(:to_int).any_number_of_times.and_return(10) 13 + obj - }.should raise_error(TypeError) - -> { 13 + "10" }.should raise_error(TypeError) - -> { 13 + :symbol }.should raise_error(TypeError) + }.should.raise(TypeError) + -> { 13 + "10" }.should.raise(TypeError) + -> { 13 + :symbol }.should.raise(TypeError) end end @@ -35,9 +35,9 @@ describe "Integer#+" do end it "raises a TypeError when given a non-Integer" do - -> { @bignum + mock('10') }.should raise_error(TypeError) - -> { @bignum + "10" }.should raise_error(TypeError) - -> { @bignum + :symbol}.should raise_error(TypeError) + -> { @bignum + mock('10') }.should.raise(TypeError) + -> { @bignum + "10" }.should.raise(TypeError) + -> { @bignum + :symbol}.should.raise(TypeError) end end @@ -55,4 +55,21 @@ describe "Integer#+" do RUBY ruby_exe(code).should == "-1" end + + it "coerces the RHS and calls #coerce" do + obj = mock("integer plus") + obj.should_receive(:coerce).with(6).and_return([6, 3]) + (6 + obj).should == 9 + end + + it "coerces the RHS and calls #coerce even if it's private" do + obj = Object.new + class << obj + private def coerce(n) + [n, 3] + end + end + + (6 + obj).should == 9 + end end |
