mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Fix - to_s(:db) on Numeric range
This commit is contained in:
parent
468df261f8
commit
007bb117c1
3 changed files with 31 additions and 1 deletions
|
@ -120,7 +120,11 @@ module ActiveSupport::NumericWithFormat
|
|||
when :human_size
|
||||
return ActiveSupport::NumberHelper.number_to_human_size(self, options)
|
||||
else
|
||||
super
|
||||
if is_a?(Float) || format.is_a?(Symbol)
|
||||
super()
|
||||
else
|
||||
super
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -406,6 +406,26 @@ class NumericExtFormattingTest < ActiveSupport::TestCase
|
|||
end
|
||||
end
|
||||
|
||||
def test_to_s_with_invalid_formatter
|
||||
assert_equal '123', 123.to_s(:invalid)
|
||||
assert_equal '2.5', 2.5.to_s(:invalid)
|
||||
assert_equal '100000000000000000000', (100**10).to_s(:invalid)
|
||||
assert_equal '1000010.0', BigDecimal("1000010").to_s(:invalid)
|
||||
end
|
||||
|
||||
def test_default_to_s
|
||||
assert_equal '123', 123.to_s
|
||||
assert_equal '1111011', 123.to_s(2)
|
||||
|
||||
assert_equal '2.5', 2.5.to_s
|
||||
|
||||
assert_equal '100000000000000000000', (100**10).to_s
|
||||
assert_equal '1010110101111000111010111100010110101100011000100000000000000000000', (100**10).to_s(2)
|
||||
|
||||
assert_equal '1000010.0', BigDecimal("1000010").to_s
|
||||
assert_equal '10000 10.0', BigDecimal("1000010").to_s('5F')
|
||||
end
|
||||
|
||||
def test_in_milliseconds
|
||||
assert_equal 10_000, 10.seconds.in_milliseconds
|
||||
end
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
require 'abstract_unit'
|
||||
require 'active_support/time'
|
||||
require 'active_support/core_ext/numeric'
|
||||
require 'active_support/core_ext/range'
|
||||
|
||||
class RangeTest < ActiveSupport::TestCase
|
||||
|
@ -13,6 +14,11 @@ class RangeTest < ActiveSupport::TestCase
|
|||
assert_equal "BETWEEN '2005-12-10 15:30:00' AND '2005-12-10 17:30:00'", date_range.to_s(:db)
|
||||
end
|
||||
|
||||
def test_to_s_with_numeric
|
||||
number_range = (1..100)
|
||||
assert_equal "BETWEEN '1' AND '100'", number_range.to_s(:db)
|
||||
end
|
||||
|
||||
def test_date_range
|
||||
assert_instance_of Range, DateTime.new..DateTime.new
|
||||
assert_instance_of Range, DateTime::Infinity.new..DateTime::Infinity.new
|
||||
|
|
Loading…
Reference in a new issue