diff options
author | pocke <p.ck.t22@gmail.com> | 2015-01-06 21:56:39 +0900 |
---|---|---|
committer | pocke <p.ck.t22@gmail.com> | 2015-01-06 22:27:54 +0900 |
commit | 0599bfa2bc49c885fd4ec3ab7ecce37dc5c03ce5 (patch) | |
tree | dd4f1c93102aafea14b602af5437c0600032374c /activesupport/test/core_ext/time_ext_test.rb | |
parent | de4f40826e3b979735e4f3287725f1a7a3820818 (diff) | |
download | rails-0599bfa2bc49c885fd4ec3ab7ecce37dc5c03ce5.tar.gz rails-0599bfa2bc49c885fd4ec3ab7ecce37dc5c03ce5.tar.bz2 rails-0599bfa2bc49c885fd4ec3ab7ecce37dc5c03ce5.zip |
DateTime#<=> return nil when compare to the invalid String as Time.
before:
p Time.now == 'a' # => false
p Time.now <=> 'a' # => nil
require 'active_support'
require 'active_support/core_ext'
p Time.now == 'a' # => false
p Time.now <=> 'a' # => invalid date (ArgumentError)
and on ruby 2.2, Time.now == 'a' warning.
warning: Comparable#== will no more rescue exceptions of #<=> in the next release.
warning: Return nil in #<=> if the comparison is inappropriate or avoid such comparison.
after:
- Error handling.
- Quiet warnings.
Diffstat (limited to 'activesupport/test/core_ext/time_ext_test.rb')
-rw-r--r-- | activesupport/test/core_ext/time_ext_test.rb | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/activesupport/test/core_ext/time_ext_test.rb b/activesupport/test/core_ext/time_ext_test.rb index d59775001b..c8364ecdff 100644 --- a/activesupport/test/core_ext/time_ext_test.rb +++ b/activesupport/test/core_ext/time_ext_test.rb @@ -721,6 +721,13 @@ class TimeExtCalculationsTest < ActiveSupport::TestCase assert_equal(-1, Time.utc(2000) <=> ActiveSupport::TimeWithZone.new( Time.utc(2000, 1, 1, 0, 0, 1), ActiveSupport::TimeZone['UTC'] )) end + def test_compare_with_string + assert_equal 1, Time.utc(2000) <=> Time.utc(1999, 12, 31, 23, 59, 59, 999).to_s + assert_equal 0, Time.utc(2000) <=> Time.utc(2000, 1, 1, 0, 0, 0).to_s + assert_equal( -1, Time.utc(2000) <=> Time.utc(2000, 1, 1, 0, 0, 1, 0).to_s) + assert_equal nil, Time.utc(2000) <=> 'Invalid as Time' + end + def test_at_with_datetime assert_equal Time.utc(2000, 1, 1, 0, 0, 0), Time.at(DateTime.civil(2000, 1, 1, 0, 0, 0)) |