Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Remove unneeded reliance on super -> method_missing quirk

  • Loading branch information...
commit a323b83acfe6e02812ec3b7b4ce912b07c85220e 1 parent 816ba1e
Jeremy Kemper jeremy authored
6 activesupport/lib/active_support/duration.rb
View
@@ -36,7 +36,7 @@ def -@ #:nodoc:
end
def is_a?(klass) #:nodoc:
- klass == Duration || super
+ Duration == klass || value.is_a?(klass)
end
# Returns true if <tt>other</tt> is also a Duration instance with the
@@ -50,7 +50,9 @@ def ==(other)
end
def self.===(other) #:nodoc:
- other.is_a?(Duration) rescue super
+ other.is_a?(Duration)
+ rescue NoMethodError
+ false
end
# Calculates a new Time or Date that is as far in the future
25 activesupport/test/core_ext/duration_test.rb
View
@@ -2,6 +2,31 @@
require 'active_support/time'
class DurationTest < ActiveSupport::TestCase
+ def test_is_a
+ d = 1.day
+ assert d.is_a?(ActiveSupport::Duration)
+ assert d.is_a?(Numeric)
+ assert d.is_a?(Fixnum)
+ assert !d.is_a?(Hash)
+
+ k = Class.new
+ class << k; undef_method :== end
+ assert !d.is_a?(k)
+ end
+
+ def test_threequals
+ assert ActiveSupport::Duration === 1.day
+ assert !(ActiveSupport::Duration === 1.day.to_i)
+ assert !(ActiveSupport::Duration === 'foo')
+ assert !(ActiveSupport::Duration === ActiveSupport::BasicObject.new)
+ end
+
+ def test_equals
+ assert 1.day == 1.day
+ assert 1.day == 1.day.to_i
+ assert !(1.day == 'foo')
+ end
+
def test_inspect
assert_equal '0 seconds', 0.seconds.inspect
assert_equal '1 month', 1.month.inspect
Please sign in to comment.
Something went wrong with that request. Please try again.