Permalink
Browse files

Remove unneeded reliance on super -> method_missing quirk

  • Loading branch information...
1 parent 816ba1e commit a323b83acfe6e02812ec3b7b4ce912b07c85220e @jeremy jeremy committed Jan 7, 2010
Showing with 29 additions and 2 deletions.
  1. +4 −2 activesupport/lib/active_support/duration.rb
  2. +25 −0 activesupport/test/core_ext/duration_test.rb
@@ -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
@@ -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

0 comments on commit a323b83

Please sign in to comment.