aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeter West <source@petewest.org>2014-11-03 16:34:44 +0000
committerPeter West <source@petewest.org>2014-11-03 16:34:44 +0000
commit2e085f67d4132ac8e01dae5a4428014f51fd4829 (patch)
tree01adc8610c4de645a0a2282088a4a473b46616ae
parentaf9702c015caba73fa99782360b123a1debe6d81 (diff)
downloadrails-2e085f67d4132ac8e01dae5a4428014f51fd4829.tar.gz
rails-2e085f67d4132ac8e01dae5a4428014f51fd4829.tar.bz2
rails-2e085f67d4132ac8e01dae5a4428014f51fd4829.zip
Delegate comparison operator to value
-rw-r--r--activesupport/lib/active_support/duration.rb2
-rw-r--r--activesupport/test/core_ext/duration_test.rb12
2 files changed, 14 insertions, 0 deletions
diff --git a/activesupport/lib/active_support/duration.rb b/activesupport/lib/active_support/duration.rb
index 584fc1e1c5..fde2d0bf79 100644
--- a/activesupport/lib/active_support/duration.rb
+++ b/activesupport/lib/active_support/duration.rb
@@ -103,6 +103,8 @@ module ActiveSupport
@value.respond_to?(method, include_private)
end
+ delegate :<=>, to: :value
+
protected
def sum(sign, time = ::Time.current) #:nodoc:
diff --git a/activesupport/test/core_ext/duration_test.rb b/activesupport/test/core_ext/duration_test.rb
index 5a2af7f943..5a7b624ae1 100644
--- a/activesupport/test/core_ext/duration_test.rb
+++ b/activesupport/test/core_ext/duration_test.rb
@@ -200,4 +200,16 @@ class DurationTest < ActiveSupport::TestCase
def test_hash
assert_equal 1.minute.hash, 60.seconds.hash
end
+
+ def test_comparable
+ assert_equal(-1, (0.seconds <=> 1.second))
+ assert_equal(-1, (1.second <=> 1.minute))
+ assert_equal(-1, (1 <=> 1.minute))
+ assert_equal(0, (0.seconds <=> 0.seconds))
+ assert_equal(0, (0.seconds <=> 0.minutes))
+ assert_equal(0, (1.second <=> 1.second))
+ assert_equal(1, (1.second <=> 0.second))
+ assert_equal(1, (1.minute <=> 1.second))
+ assert_equal(1, (61 <=> 1.minute))
+ end
end