diff options
Diffstat (limited to 'spec/ruby/core/rational/to_r_spec.rb')
| -rw-r--r-- | spec/ruby/core/rational/to_r_spec.rb | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/spec/ruby/core/rational/to_r_spec.rb b/spec/ruby/core/rational/to_r_spec.rb new file mode 100644 index 0000000000..eb6097f595 --- /dev/null +++ b/spec/ruby/core/rational/to_r_spec.rb @@ -0,0 +1,26 @@ +require_relative "../../spec_helper" + +describe "Rational#to_r" do + it "returns self" do + a = Rational(3, 4) + a.to_r.should.equal?(a) + + a = Rational(bignum_value, 4) + a.to_r.should.equal?(a) + end + + it "raises TypeError trying to convert BasicObject" do + obj = BasicObject.new + -> { Rational(obj) }.should.raise(TypeError) + end + + it "works when a BasicObject has to_r" do + obj = BasicObject.new; def obj.to_r; 1 / 2.to_r end + Rational(obj).should == Rational('1/2') + end + + it "fails when a BasicObject's to_r does not return a Rational" do + obj = BasicObject.new; def obj.to_r; 1 end + -> { Rational(obj) }.should.raise(TypeError) + end +end |
