Ticket #8513: duration_with_seconds_uses_since_instead_of_plus.diff
| File duration_with_seconds_uses_since_instead_of_plus.diff, 4.7 kB (added by gbuesing, 2 years ago) |
|---|
-
test/core_ext/numeric_ext_test.rb
old new 1 1 require File.dirname(__FILE__) + '/../abstract_unit' 2 2 3 class NumericExtTime Test < Test::Unit::TestCase3 class NumericExtTimeAndDateTimeTest < Test::Unit::TestCase 4 4 def setup 5 5 @now = Time.now 6 @dtnow = DateTime.now 6 7 @seconds = { 7 8 1.minute => 60, 8 9 10.minutes => 600, … … 40 41 assert_equal @now.advance(:months => 1), 1.month.since(@now) 41 42 assert_equal @now.advance(:months => -1), 1.month.until(@now) 42 43 assert_equal @now.advance(:years => 20), 20.years.since(@now) 44 assert_equal @dtnow.advance(:days => 3000), 3000.days.since(@dtnow) 45 assert_equal @dtnow.advance(:months => 1), 1.month.since(@dtnow) 46 assert_equal @dtnow.advance(:months => -1), 1.month.until(@dtnow) 47 assert_equal @dtnow.advance(:years => 20), 20.years.since(@dtnow) 43 48 end 44 49 45 50 def test_duration_addition 46 51 assert_equal @now.advance(:days => 1, :months => 1), (1.day + 1.month).since(@now) 47 52 assert_equal @now.advance(:days => 7), (1.week + 5.seconds - 5.seconds).since(@now) 48 53 assert_equal @now.advance(:years => 2), (4.years - 2.years).since(@now) 54 assert_equal @dtnow.advance(:days => 1, :months => 1), (1.day + 1.month).since(@dtnow) 55 assert_equal @dtnow.advance(:days => 7), (1.week + 5.seconds - 5.seconds).since(@dtnow) 56 assert_equal @dtnow.advance(:years => 2), (4.years - 2.years).since(@dtnow) 49 57 end 50 58 51 59 def test_time_plus_duration … … 53 61 assert_equal @now + 22.9, @now + 22.9.seconds 54 62 assert_equal @now.advance(:days => 15), @now + 15.days 55 63 assert_equal @now.advance(:months => 1), @now + 1.month 64 assert_equal @dtnow.since(8), @dtnow + 8.seconds 65 assert_equal @dtnow.since(22.9), @dtnow + 22.9.seconds 66 assert_equal @dtnow.advance(:days => 15), @dtnow + 15.days 67 assert_equal @dtnow.advance(:months => 1), @dtnow + 1.month 56 68 end 57 69 58 70 def test_chaining_duration_operations 59 71 assert_equal @now.advance(:days => 2).advance(:months => -3), @now + 2.days - 3.months 60 72 assert_equal @now.advance(:days => 1).advance(:months => 2), @now + 1.day + 2.months 73 assert_equal @dtnow.advance(:days => 2).advance(:months => -3), @dtnow + 2.days - 3.months 74 assert_equal @dtnow.advance(:days => 1).advance(:months => 2), @dtnow + 1.day + 2.months 61 75 end 62 76 63 77 def test_duration_after_convertion_is_no_longer_accurate 64 78 assert_equal 30.days.to_i.since(@now), 1.month.to_i.since(@now) 65 79 assert_equal 365.25.days.to_f.since(@now), 1.year.to_f.since(@now) 80 assert_equal 30.days.to_i.since(@dtnow), 1.month.to_i.since(@dtnow) 81 assert_equal 365.25.days.to_f.since(@dtnow), 1.year.to_f.since(@dtnow) 66 82 end 67 83 end 68 84 -
test/core_ext/date_time_ext_test.rb
old new 112 112 assert_equal DateTime.civil(2005,2,22,11,10,10), DateTime.civil(2005,2,22,10,10,10).since(3600) 113 113 assert_equal DateTime.civil(2005,2,24,10,10,10), DateTime.civil(2005,2,22,10,10,10).since(86400*2) 114 114 assert_equal DateTime.civil(2005,2,24,11,10,35), DateTime.civil(2005,2,22,10,10,10).since(86400*2 + 3600 + 25) 115 assert_equal DateTime.civil(2005,2,22,10,10,11), DateTime.civil(2005,2,22,10,10,10).since(1.333) 116 assert_equal DateTime.civil(2005,2,22,10,10,12), DateTime.civil(2005,2,22,10,10,10).since(1.667) 115 117 end 116 118 117 119 def test_yesterday -
lib/active_support/duration.rb
old new 67 67 parts.inject(time) do |t,(type,number)| 68 68 if t.acts_like?(:time) 69 69 if type == :seconds 70 t +(sign * number)70 t.since(sign * number) 71 71 else 72 72 t.advance(type => sign * number) 73 73 end -
lib/active_support/core_ext/date_time/calculations.rb
old new 45 45 # Returns a new DateTime representing the time a number of seconds since the instance time 46 46 # Do not use this method in combination with x.months, use months_since instead! 47 47 def since(seconds) 48 self + Rational(seconds , 86400)48 self + Rational(seconds.round, 86400) 49 49 end 50 50 alias :in :since 51 51