Skip to content

Commit

Permalink
Remove unneeded reliance on super -> method_missing quirk
Browse files Browse the repository at this point in the history
  • Loading branch information
jeremy committed Jan 7, 2010
1 parent 816ba1e commit a323b83
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 2 deletions.
6 changes: 4 additions & 2 deletions activesupport/lib/active_support/duration.rb
Expand Up @@ -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
Expand All @@ -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
Expand Down
25 changes: 25 additions & 0 deletions activesupport/test/core_ext/duration_test.rb
Expand Up @@ -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
Expand Down

0 comments on commit a323b83

Please sign in to comment.