[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