Changeset 6901
- Timestamp:
- 05/30/07 06:21:08 (1 year ago)
- Files:
-
- trunk/activesupport/CHANGELOG (modified) (1 diff)
- trunk/activesupport/lib/active_support/core_ext/date_time/calculations.rb (modified) (1 diff)
- trunk/activesupport/lib/active_support/duration.rb (modified) (1 diff)
- trunk/activesupport/test/core_ext/date_time_ext_test.rb (modified) (1 diff)
- trunk/activesupport/test/core_ext/numeric_ext_test.rb (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/activesupport/CHANGELOG
r6893 r6901 1 1 *SVN* 2 3 * Time durations use since instead of + for accuracy. #8513 [Geoff Buesing] 2 4 3 5 * escape <'s and >'s in JSON strings. #8371 [Rick] trunk/activesupport/lib/active_support/core_ext/date_time/calculations.rb
r6303 r6901 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 trunk/activesupport/lib/active_support/duration.rb
r6022 r6901 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) trunk/activesupport/test/core_ext/date_time_ext_test.rb
r6854 r6901 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 trunk/activesupport/test/core_ext/numeric_ext_test.rb
r6874 r6901 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, … … 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 … … 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 … … 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 … … 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 … … 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