1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

Follow-up to #16560

For the sake of backward-compatibility, we need to make #instance_of?
return true for Fixnum. On the other hand, the method should still
give true for ActiveSupport::Duration itself which was not the case
before.
This commit is contained in:
Robin Dupret 2014-08-23 13:09:41 +02:00
parent 4287f6d456
commit d5578cd177
3 changed files with 11 additions and 9 deletions

View file

@ -1,5 +1,6 @@
* Add the `Duration#instance_of?` method that was previously delegated to the * Fix the `ActiveSupport::Duration#instance_of?` method to return the right
internal `value` attribute. value with the class itself since it was previously delegated to the
internal value.
*Robin Dupret* *Robin Dupret*

View file

@ -35,12 +35,12 @@ module ActiveSupport
end end
def is_a?(klass) #:nodoc: def is_a?(klass) #:nodoc:
instance_of?(klass) || value.is_a?(klass) Duration == klass || value.is_a?(klass)
end end
alias :kind_of? :is_a? alias :kind_of? :is_a?
def instance_of?(klass) # :nodoc: def instance_of?(klass) # :nodoc:
Duration == klass Duration == klass || value.instance_of?(klass)
end end
# Returns +true+ if +other+ is also a Duration instance with the # Returns +true+ if +other+ is also a Duration instance with the

View file

@ -20,6 +20,12 @@ class DurationTest < ActiveSupport::TestCase
assert !d.is_a?(k) assert !d.is_a?(k)
end end
def test_instance_of
assert 1.minute.instance_of?(Fixnum)
assert 2.days.instance_of?(ActiveSupport::Duration)
assert !3.second.instance_of?(Numeric)
end
def test_threequals def test_threequals
assert ActiveSupport::Duration === 1.day assert ActiveSupport::Duration === 1.day
assert !(ActiveSupport::Duration === 1.day.to_i) assert !(ActiveSupport::Duration === 1.day.to_i)
@ -41,11 +47,6 @@ class DurationTest < ActiveSupport::TestCase
assert !1.eql?(1.second) assert !1.eql?(1.second)
end end
def test_instance_of
assert !1.minute.instance_of?(Fixnum)
assert !2.days.instance_of?(Fixnum)
end
def test_inspect def test_inspect
assert_equal '0 seconds', 0.seconds.inspect assert_equal '0 seconds', 0.seconds.inspect
assert_equal '1 month', 1.month.inspect assert_equal '1 month', 1.month.inspect