[1.9] [RubySpec] (nil|Integer|Float|Rational)#rationalize
---------------------------------------------------------

                 Key: JRUBY-4315
                 URL: http://jira.codehaus.org/browse/JRUBY-4315
             Project: JRuby
          Issue Type: Bug
          Components: Core Classes/Modules, Ruby 1.9, RubySpec
    Affects Versions: JRuby 1.4
         Environment: github trunk, Java 6, Mac OS X 10.6.2
            Reporter: Hiro Asari
             Fix For: JRuby 1.5
         Attachments: 0001-Add-nil.rationalize.patch, 
0002-Add-Integer-rationalize.patch, 
0003-Implement-Float-rationalize-and-Rational-rationalize.patch

Float, Integer, Rational, and nil now have #rationalize.

{noformat}
surfboard:jruby[git:master]$ jruby spec/mspec/bin/mspec -T--1.9 
spec/ruby/core/*/rationalize_spec.rb
jruby 1.5.0.dev (ruby 1.9.2dev trunk 24787) (2009-12-05 8ca2281) (Java 
HotSpot(TM) 64-Bit Server VM 1.6.0_17) [x86_64-java]
EEEFFEEEEEEEE

1)
Float#rationalize returns self as a simplified Rational with no argument ERROR
NoMethodError: undefined method `rationalize' for 3382729202.92822:Float
/Users/asari/Development/src/jruby/spec/ruby/core/float/rationalize_spec.rb:6
/Users/asari/Development/src/jruby/spec/ruby/core/float/rationalize_spec.rb:4
/Users/asari/Development/src/jruby/spec/ruby/core/float/rationalize_spec.rb:3
/Users/asari/Development/src/jruby/spec/ruby/core/float/rationalize_spec.rb:55:in
 `load'

2)
Float#rationalize simplifies self to the degree specified by a Rational 
argument ERROR
NoMethodError: undefined method `rationalize' for 0.3:Float
/Users/asari/Development/src/jruby/spec/ruby/core/float/rationalize_spec.rb:13
/Users/asari/Development/src/jruby/spec/ruby/core/float/rationalize_spec.rb:4
/Users/asari/Development/src/jruby/spec/ruby/core/float/rationalize_spec.rb:3
/Users/asari/Development/src/jruby/spec/ruby/core/float/rationalize_spec.rb:55:in
 `load'

3)
Float#rationalize simplifies self to the degree specified by a Float argument 
ERROR
NoMethodError: undefined method `rationalize' for 0.3:Float
/Users/asari/Development/src/jruby/spec/ruby/core/float/rationalize_spec.rb:24
/Users/asari/Development/src/jruby/spec/ruby/core/float/rationalize_spec.rb:4
/Users/asari/Development/src/jruby/spec/ruby/core/float/rationalize_spec.rb:3
/Users/asari/Development/src/jruby/spec/ruby/core/float/rationalize_spec.rb:55:in
 `load'

4)
Float#rationalize raises a FloatDomainError for Infinity FAILED
Expected FloatDomainError
but got NoMethodError (undefined method `rationalize' for Infinity:Float)
/Users/asari/Development/src/jruby/spec/ruby/core/float/rationalize_spec.rb:33
/Users/asari/Development/src/jruby/spec/ruby/core/float/rationalize_spec.rb:4
/Users/asari/Development/src/jruby/spec/ruby/core/float/rationalize_spec.rb:3
/Users/asari/Development/src/jruby/spec/ruby/core/float/rationalize_spec.rb:55:in
 `load'

5)
Float#rationalize raises a FloatDomainError for NaN FAILED
Expected FloatDomainError
but got NoMethodError (undefined method `rationalize' for NaN:Float)
/Users/asari/Development/src/jruby/spec/ruby/core/float/rationalize_spec.rb:37
/Users/asari/Development/src/jruby/spec/ruby/core/float/rationalize_spec.rb:4
/Users/asari/Development/src/jruby/spec/ruby/core/float/rationalize_spec.rb:3
/Users/asari/Development/src/jruby/spec/ruby/core/float/rationalize_spec.rb:55:in
 `load'

6)
NilClass#rationalize returns 0/1 ERROR
NoMethodError: undefined method `rationalize' for nil:NilClass
/Users/asari/Development/src/jruby/spec/ruby/core/nil/rationalize_spec.rb:6
/Users/asari/Development/src/jruby/spec/ruby/core/nil/rationalize_spec.rb:4
/Users/asari/Development/src/jruby/spec/ruby/core/nil/rationalize_spec.rb:3
/Users/asari/Development/src/jruby/spec/ruby/core/nil/rationalize_spec.rb:55:in 
`load'

7)
NilClass#rationalize ignores arguments ERROR
NoMethodError: undefined method `rationalize' for nil:NilClass
/Users/asari/Development/src/jruby/spec/ruby/core/nil/rationalize_spec.rb:10
/Users/asari/Development/src/jruby/spec/ruby/core/nil/rationalize_spec.rb:4
/Users/asari/Development/src/jruby/spec/ruby/core/nil/rationalize_spec.rb:3
/Users/asari/Development/src/jruby/spec/ruby/core/nil/rationalize_spec.rb:55:in 
`load'

8)
Numeric#rationalize returns a Rational object ERROR
NoMethodError: undefined method `rationalize' for 0:Fixnum
/Users/asari/Development/src/jruby/spec/ruby/core/numeric/rationalize_spec.rb:16
/Users/asari/Development/src/jruby/spec/ruby/core/numeric/rationalize_spec.rb:15:in
 `each'
/Users/asari/Development/src/jruby/spec/ruby/core/numeric/rationalize_spec.rb:15
/Users/asari/Development/src/jruby/spec/ruby/core/numeric/rationalize_spec.rb:4
/Users/asari/Development/src/jruby/spec/ruby/core/numeric/rationalize_spec.rb:3
/Users/asari/Development/src/jruby/spec/ruby/core/numeric/rationalize_spec.rb:55:in
 `load'

9)
Numeric#rationalize uses self as the numerator ERROR
NoMethodError: undefined method `rationalize' for 0:Fixnum
/Users/asari/Development/src/jruby/spec/ruby/core/numeric/rationalize_spec.rb:22
/Users/asari/Development/src/jruby/spec/ruby/core/numeric/rationalize_spec.rb:21:in
 `each'
/Users/asari/Development/src/jruby/spec/ruby/core/numeric/rationalize_spec.rb:21
/Users/asari/Development/src/jruby/spec/ruby/core/numeric/rationalize_spec.rb:4
/Users/asari/Development/src/jruby/spec/ruby/core/numeric/rationalize_spec.rb:3
/Users/asari/Development/src/jruby/spec/ruby/core/numeric/rationalize_spec.rb:55:in
 `load'

10)
Numeric#rationalize uses 1 as the denominator ERROR
NoMethodError: undefined method `rationalize' for 0:Fixnum
/Users/asari/Development/src/jruby/spec/ruby/core/numeric/rationalize_spec.rb:28
/Users/asari/Development/src/jruby/spec/ruby/core/numeric/rationalize_spec.rb:27:in
 `each'
/Users/asari/Development/src/jruby/spec/ruby/core/numeric/rationalize_spec.rb:27
/Users/asari/Development/src/jruby/spec/ruby/core/numeric/rationalize_spec.rb:4
/Users/asari/Development/src/jruby/spec/ruby/core/numeric/rationalize_spec.rb:3
/Users/asari/Development/src/jruby/spec/ruby/core/numeric/rationalize_spec.rb:55:in
 `load'

11)
Rational#rationalize returns self with no argument ERROR
NoMethodError: undefined method `rationalize' for (4/1):Rational
/Users/asari/Development/src/jruby/spec/ruby/core/rational/rationalize_spec.rb:6
/Users/asari/Development/src/jruby/spec/ruby/core/rational/rationalize_spec.rb:4
/Users/asari/Development/src/jruby/spec/ruby/core/rational/rationalize_spec.rb:3
/Users/asari/Development/src/jruby/spec/ruby/core/rational/rationalize_spec.rb:55:in
 `load'

12)
Rational#rationalize simplifies self to the degree specified by a Rational 
argument ERROR
NoMethodError: undefined method `rationalize' for 
(5404319552844595/18014398509481984):Rational
/Users/asari/Development/src/jruby/spec/ruby/core/rational/rationalize_spec.rb:14
/Users/asari/Development/src/jruby/spec/ruby/core/rational/rationalize_spec.rb:4
/Users/asari/Development/src/jruby/spec/ruby/core/rational/rationalize_spec.rb:3
/Users/asari/Development/src/jruby/spec/ruby/core/rational/rationalize_spec.rb:55:in
 `load'

13)
Rational#rationalize simplifies self to the degree specified by a Float 
argument ERROR
NoMethodError: undefined method `rationalize' for 
(5404319552844595/18014398509481984):Rational
/Users/asari/Development/src/jruby/spec/ruby/core/rational/rationalize_spec.rb:25
/Users/asari/Development/src/jruby/spec/ruby/core/rational/rationalize_spec.rb:4
/Users/asari/Development/src/jruby/spec/ruby/core/rational/rationalize_spec.rb:3
/Users/asari/Development/src/jruby/spec/ruby/core/rational/rationalize_spec.rb:55:in
 `load'

Finished in 0.168000 seconds

4 files, 13 examples, 2 expectations, 2 failures, 11 errors
{noformat}

These patches implement them. nil.rationalize and Integer#rationalize are very 
uninteresting.

Float#rationalize and Rational#rationalize pretty much copy what's in MRI right 
now. I asked Bruno Haible about licensing, and he granted the permission to use 
his algorithm (as he did with MRI) granted that the comment be kept intact.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email


Reply via email to