Ticket #9866: date_advance_accepts_weeks_option.diff
| File date_advance_accepts_weeks_option.diff, 9.9 kB (added by gbuesing, 1 year ago) |
|---|
-
activesupport/test/core_ext/time_ext_test.rb
old new 242 242 def test_advance 243 243 assert_equal Time.local(2006,2,28,15,15,10), Time.local(2005,2,28,15,15,10).advance(:years => 1) 244 244 assert_equal Time.local(2005,6,28,15,15,10), Time.local(2005,2,28,15,15,10).advance(:months => 4) 245 assert_equal Time.local(2005,3,21,15,15,10), Time.local(2005,2,28,15,15,10).advance(:weeks => 3) 246 assert_equal Time.local(2005,3,5,15,15,10), Time.local(2005,2,28,15,15,10).advance(:days => 5) 245 247 assert_equal Time.local(2012,9,28,15,15,10), Time.local(2005,2,28,15,15,10).advance(:years => 7, :months => 7) 246 248 assert_equal Time.local(2013,10,3,15,15,10), Time.local(2005,2,28,15,15,10).advance(:years => 7, :months => 19, :days => 5) 249 assert_equal Time.local(2013,10,17,15,15,10), Time.local(2005,2,28,15,15,10).advance(:years => 7, :months => 19, :weeks => 2, :days => 5) 247 250 assert_equal Time.local(2001,12,27,15,15,10), Time.local(2005,2,28,15,15,10).advance(:years => -3, :months => -2, :days => -1) 248 251 assert_equal Time.local(2005,2,28,15,15,10), Time.local(2004,2,29,15,15,10).advance(:years => 1) #leap day plus one year 249 252 assert_equal Time.local(2005,2,28,20,15,10), Time.local(2005,2,28,15,15,10).advance(:hours => 5) … … 251 254 assert_equal Time.local(2005,2,28,15,15,19), Time.local(2005,2,28,15,15,10).advance(:seconds => 9) 252 255 assert_equal Time.local(2005,2,28,20,22,19), Time.local(2005,2,28,15,15,10).advance(:hours => 5, :minutes => 7, :seconds => 9) 253 256 assert_equal Time.local(2005,2,28,10,8,1), Time.local(2005,2,28,15,15,10).advance(:hours => -5, :minutes => -7, :seconds => -9) 254 assert_equal Time.local(2013,10, 3,20,22,19), Time.local(2005,2,28,15,15,10).advance(:years => 7, :months => 19, :days => 5, :hours => 5, :minutes => 7, :seconds => 9)257 assert_equal Time.local(2013,10,17,20,22,19), Time.local(2005,2,28,15,15,10).advance(:years => 7, :months => 19, :weeks => 2, :days => 5, :hours => 5, :minutes => 7, :seconds => 9) 255 258 end 256 259 257 260 def test_utc_advance 258 261 assert_equal Time.utc(2006,2,22,15,15,10), Time.utc(2005,2,22,15,15,10).advance(:years => 1) 259 262 assert_equal Time.utc(2005,6,22,15,15,10), Time.utc(2005,2,22,15,15,10).advance(:months => 4) 263 assert_equal Time.utc(2005,3,21,15,15,10), Time.utc(2005,2,28,15,15,10).advance(:weeks => 3) 264 assert_equal Time.utc(2005,3,5,15,15,10), Time.utc(2005,2,28,15,15,10).advance(:days => 5) 260 265 assert_equal Time.utc(2012,9,22,15,15,10), Time.utc(2005,2,22,15,15,10).advance(:years => 7, :months => 7) 261 266 assert_equal Time.utc(2013,10,3,15,15,10), Time.utc(2005,2,22,15,15,10).advance(:years => 7, :months => 19, :days => 11) 267 assert_equal Time.utc(2013,10,17,15,15,10), Time.utc(2005,2,28,15,15,10).advance(:years => 7, :months => 19, :weeks => 2, :days => 5) 262 268 assert_equal Time.utc(2001,12,27,15,15,10), Time.utc(2005,2,28,15,15,10).advance(:years => -3, :months => -2, :days => -1) 263 269 assert_equal Time.utc(2005,2,28,15,15,10), Time.utc(2004,2,29,15,15,10).advance(:years => 1) #leap day plus one year 264 270 assert_equal Time.utc(2005,2,28,20,15,10), Time.utc(2005,2,28,15,15,10).advance(:hours => 5) … … 266 272 assert_equal Time.utc(2005,2,28,15,15,19), Time.utc(2005,2,28,15,15,10).advance(:seconds => 9) 267 273 assert_equal Time.utc(2005,2,28,20,22,19), Time.utc(2005,2,28,15,15,10).advance(:hours => 5, :minutes => 7, :seconds => 9) 268 274 assert_equal Time.utc(2005,2,28,10,8,1), Time.utc(2005,2,28,15,15,10).advance(:hours => -5, :minutes => -7, :seconds => -9) 269 assert_equal Time.utc(2013,10, 3,20,22,19), Time.utc(2005,2,28,15,15,10).advance(:years => 7, :months => 19, :days => 5, :hours => 5, :minutes => 7, :seconds => 9)275 assert_equal Time.utc(2013,10,17,20,22,19), Time.utc(2005,2,28,15,15,10).advance(:years => 7, :months => 19, :weeks => 2, :days => 5, :hours => 5, :minutes => 7, :seconds => 9) 270 276 end 271 277 272 278 def test_next_week -
activesupport/test/core_ext/date_ext_test.rb
old new 122 122 assert_equal Date.new(2005,3,2), Date.new(2005,2,28).tomorrow.tomorrow 123 123 end 124 124 125 def test_ plus125 def test_advance 126 126 assert_equal Date.new(2006,2,28), Date.new(2005,2,28).advance(:years => 1) 127 127 assert_equal Date.new(2005,6,28), Date.new(2005,2,28).advance(:months => 4) 128 assert_equal Date.new(2005,3,21), Date.new(2005,2,28).advance(:weeks => 3) 129 assert_equal Date.new(2005,3,5), Date.new(2005,2,28).advance(:days => 5) 128 130 assert_equal Date.new(2012,9,28), Date.new(2005,2,28).advance(:years => 7, :months => 7) 129 131 assert_equal Date.new(2013,10,3), Date.new(2005,2,28).advance(:years => 7, :months => 19, :days => 5) 132 assert_equal Date.new(2013,10,17), Date.new(2005,2,28).advance(:years => 7, :months => 19, :weeks => 2, :days => 5) 130 133 assert_equal Date.new(2005,2,28), Date.new(2004,2,29).advance(:years => 1) #leap day plus one year 131 134 end 132 135 -
activesupport/test/core_ext/date_time_ext_test.rb
old new 168 168 def test_advance 169 169 assert_equal DateTime.civil(2006,2,28,15,15,10), DateTime.civil(2005,2,28,15,15,10).advance(:years => 1) 170 170 assert_equal DateTime.civil(2005,6,28,15,15,10), DateTime.civil(2005,2,28,15,15,10).advance(:months => 4) 171 assert_equal DateTime.civil(2005,3,21,15,15,10), DateTime.civil(2005,2,28,15,15,10).advance(:weeks => 3) 172 assert_equal DateTime.civil(2005,3,5,15,15,10), DateTime.civil(2005,2,28,15,15,10).advance(:days => 5) 171 173 assert_equal DateTime.civil(2012,9,28,15,15,10), DateTime.civil(2005,2,28,15,15,10).advance(:years => 7, :months => 7) 172 174 assert_equal DateTime.civil(2013,10,3,15,15,10), DateTime.civil(2005,2,28,15,15,10).advance(:years => 7, :months => 19, :days => 5) 175 assert_equal DateTime.civil(2013,10,17,15,15,10), DateTime.civil(2005,2,28,15,15,10).advance(:years => 7, :months => 19, :weeks => 2, :days => 5) 173 176 assert_equal DateTime.civil(2001,12,27,15,15,10), DateTime.civil(2005,2,28,15,15,10).advance(:years => -3, :months => -2, :days => -1) 174 177 assert_equal DateTime.civil(2005,2,28,15,15,10), DateTime.civil(2004,2,29,15,15,10).advance(:years => 1) #leap day plus one year 175 178 assert_equal DateTime.civil(2005,2,28,20,15,10), DateTime.civil(2005,2,28,15,15,10).advance(:hours => 5) … … 177 180 assert_equal DateTime.civil(2005,2,28,15,15,19), DateTime.civil(2005,2,28,15,15,10).advance(:seconds => 9) 178 181 assert_equal DateTime.civil(2005,2,28,20,22,19), DateTime.civil(2005,2,28,15,15,10).advance(:hours => 5, :minutes => 7, :seconds => 9) 179 182 assert_equal DateTime.civil(2005,2,28,10,8,1), DateTime.civil(2005,2,28,15,15,10).advance(:hours => -5, :minutes => -7, :seconds => -9) 180 assert_equal DateTime.civil(2013,10, 3,20,22,19), DateTime.civil(2005,2,28,15,15,10).advance(:years => 7, :months => 19, :days => 5, :hours => 5, :minutes => 7, :seconds => 9)183 assert_equal DateTime.civil(2013,10,17,20,22,19), DateTime.civil(2005,2,28,15,15,10).advance(:years => 7, :months => 19, :weeks => 2, :days => 5, :hours => 5, :minutes => 7, :seconds => 9) 181 184 182 185 end 183 186 -
activesupport/lib/active_support/core_ext/date_time/calculations.rb
old new 28 28 end 29 29 30 30 # Uses Date to provide precise Time calculations for years, months, and days. The +options+ parameter takes a hash with 31 # any of these keys: :years, :months, : days, :hours, :minutes, :seconds.31 # any of these keys: :years, :months, :weeks, :days, :hours, :minutes, :seconds. 32 32 def advance(options) 33 33 d = to_date.advance(options) 34 34 datetime_advanced_by_date = change(:year => d.year, :month => d.month, :day => d.day) -
activesupport/lib/active_support/core_ext/time/calculations.rb
old new 72 72 end 73 73 74 74 # Uses Date to provide precise Time calculations for years, months, and days. The +options+ parameter takes a hash with 75 # any of these keys: :years, :months, : days, :hours, :minutes, :seconds.75 # any of these keys: :years, :months, :weeks, :days, :hours, :minutes, :seconds. 76 76 def advance(options) 77 77 d = to_date.advance(options) 78 78 time_advanced_by_date = change(:year => d.year, :month => d.month, :day => d.day) -
activesupport/lib/active_support/core_ext/date/calculations.rb
old new 68 68 end 69 69 70 70 # Provides precise Date calculations for years, months, and days. The +options+ parameter takes a hash with 71 # any of these keys: : months, :days, :years.71 # any of these keys: :years, :months, :weeks, :days. 72 72 def advance(options) 73 73 d = self 74 74 d = d >> options.delete(:years) * 12 if options[:years] 75 75 d = d >> options.delete(:months) if options[:months] 76 d = d + options.delete(:weeks) * 7 if options[:weeks] 76 77 d = d + options.delete(:days) if options[:days] 77 78 d 78 79 end