Mercurial > p > roundup > code
comparison test/test_dates.py @ 1896:b3f63a0615db maint-0.6
backport of Date arithmetic fixes from trunk
| author | Anthony Baxter <anthonybaxter@users.sourceforge.net> |
|---|---|
| date | Tue, 04 Nov 2003 12:39:54 +0000 |
| parents | cc96bf971b33 |
| children |
comparison
equal
deleted
inserted
replaced
| 1895:11010aae4ef0 | 1896:b3f63a0615db |
|---|---|
| 13 # BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS | 13 # BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS |
| 14 # FOR A PARTICULAR PURPOSE. THE CODE PROVIDED HEREUNDER IS ON AN "AS IS" | 14 # FOR A PARTICULAR PURPOSE. THE CODE PROVIDED HEREUNDER IS ON AN "AS IS" |
| 15 # BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE, | 15 # BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE, |
| 16 # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. | 16 # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. |
| 17 # | 17 # |
| 18 # $Id: test_dates.py,v 1.24 2003-04-22 20:53:54 kedder Exp $ | 18 # $Id: test_dates.py,v 1.24.2.1 2003-11-04 12:39:54 anthonybaxter Exp $ |
| 19 | 19 |
| 20 import unittest, time | 20 import unittest, time |
| 21 | 21 |
| 22 from roundup.date import Date, Interval, Range, fixTimeOverflow | 22 from roundup.date import Date, Interval, Range, fixTimeOverflow |
| 23 | 23 |
| 171 def testIntervalInitDate(self): | 171 def testIntervalInitDate(self): |
| 172 ae = self.assertEqual | 172 ae = self.assertEqual |
| 173 now = Date('.') | 173 now = Date('.') |
| 174 now.hour = now.minute = now.second = 0 | 174 now.hour = now.minute = now.second = 0 |
| 175 then = now + Interval('2d') | 175 then = now + Interval('2d') |
| 176 ae(str(Interval(str(then))), '+ 2d') | 176 ae((Interval(str(then))), Interval('- 2d')) |
| 177 then = now - Interval('2d') | 177 then = now - Interval('2d') |
| 178 ae(str(Interval(str(then))), '- 2d') | 178 ae(Interval(str(then)), Interval('+ 2d')) |
| 179 | |
| 180 def testIntervalAddMonthBoundary(self): | |
| 181 # force the transition over a month boundary | |
| 182 now = Date('2003-10-30.00:00:00') | |
| 183 then = now + Interval('2d') | |
| 184 self.assertEqual(str(then), '2003-11-01.00:00:00') | |
| 185 now = Date('2004-02-28.00:00:00') | |
| 186 then = now + Interval('1d') | |
| 187 self.assertEqual(str(then), '2004-02-29.00:00:00') | |
| 188 now = Date('2003-02-28.00:00:00') | |
| 189 then = now + Interval('1d') | |
| 190 self.assertEqual(str(then), '2003-03-01.00:00:00') | |
| 191 now = Date('2003-01-01.00:00:00') | |
| 192 then = now + Interval('59d') | |
| 193 self.assertEqual(str(then), '2003-03-01.00:00:00') | |
| 194 now = Date('2004-01-01.00:00:00') | |
| 195 then = now + Interval('59d') | |
| 196 self.assertEqual(str(then), '2004-02-29.00:00:00') | |
| 197 | |
| 198 def testIntervalSubtractMonthBoundary(self): | |
| 199 # force the transition over a month boundary | |
| 200 now = Date('2003-11-01.00:00:00') | |
| 201 then = now - Interval('2d') | |
| 202 self.assertEqual(str(then), '2003-10-30.00:00:00') | |
| 203 now = Date('2004-02-29.00:00:00') | |
| 204 then = now - Interval('1d') | |
| 205 self.assertEqual(str(then), '2004-02-28.00:00:00') | |
| 206 now = Date('2003-03-01.00:00:00') | |
| 207 then = now - Interval('1d') | |
| 208 self.assertEqual(str(then), '2003-02-28.00:00:00') | |
| 209 now = Date('2003-03-01.00:00:00') | |
| 210 then = now - Interval('59d') | |
| 211 self.assertEqual(str(then), '2003-01-01.00:00:00') | |
| 212 now = Date('2004-02-29.00:00:00') | |
| 213 then = now - Interval('59d') | |
| 214 self.assertEqual(str(then), '2004-01-01.00:00:00') | |
| 215 | |
| 216 def testIntervalAddYearBoundary(self): | |
| 217 # force the transition over a year boundary | |
| 218 now = Date('2003-12-30.00:00:00') | |
| 219 then = now + Interval('2d') | |
| 220 self.assertEqual(str(then), '2004-01-01.00:00:00') | |
| 221 now = Date('2003-01-01.00:00:00') | |
| 222 then = now + Interval('365d') | |
| 223 self.assertEqual(str(then), '2004-01-01.00:00:00') | |
| 224 now = Date('2004-01-01.00:00:00') | |
| 225 then = now + Interval('366d') | |
| 226 self.assertEqual(str(then), '2005-01-01.00:00:00') | |
| 227 | |
| 228 def testIntervalSubtractYearBoundary(self): | |
| 229 # force the transition over a year boundary | |
| 230 now = Date('2003-01-01.00:00:00') | |
| 231 then = now - Interval('2d') | |
| 232 self.assertEqual(str(then), '2002-12-30.00:00:00') | |
| 233 now = Date('2004-02-01.00:00:00') | |
| 234 then = now - Interval('365d') | |
| 235 self.assertEqual(str(then), '2003-02-01.00:00:00') | |
| 236 now = Date('2005-02-01.00:00:00') | |
| 237 then = now - Interval('365d') | |
| 238 self.assertEqual(str(then), '2004-02-02.00:00:00') | |
| 239 | |
| 240 def testDateSubtract(self): | |
| 241 # These are thoroughly broken right now. | |
| 242 i = Date('2003-03-15.00:00:00') - Date('2003-03-10.00:00:00') | |
| 243 self.assertEqual(i, Interval('5d')) | |
| 244 i = Date('2003-02-01.00:00:00') - Date('2003-03-01.00:00:00') | |
| 245 self.assertEqual(i, Interval('-28d')) | |
| 246 i = Date('2003-03-01.00:00:00') - Date('2003-02-01.00:00:00') | |
| 247 self.assertEqual(i, Interval('28d')) | |
| 248 i = Date('2003-03-03.00:00:00') - Date('2003-02-01.00:00:00') | |
| 249 self.assertEqual(i, Interval('30d')) | |
| 250 i = Date('2003-03-03.00:00:00') - Date('2002-02-01.00:00:00') | |
| 251 self.assertEqual(i, Interval('395d')) | |
| 252 i = Date('2003-03-03.00:00:00') - Date('2003-04-01.00:00:00') | |
| 253 self.assertEqual(i, Interval('-29d')) | |
| 254 i = Date('2003-03-01.00:00:00') - Date('2003-02-01.00:00:00') | |
| 255 self.assertEqual(i, Interval('28d')) | |
| 256 # force the transition over a year boundary | |
| 257 i = Date('2003-01-01.00:00:00') - Date('2002-01-01.00:00:00') | |
| 258 self.assertEqual(i, Interval('365d')) | |
| 179 | 259 |
| 180 def testIntervalAdd(self): | 260 def testIntervalAdd(self): |
| 181 ae = self.assertEqual | 261 ae = self.assertEqual |
| 182 ae(str(Interval('1y') + Interval('1y')), '+ 2y') | 262 ae(str(Interval('1y') + Interval('1y')), '+ 2y') |
| 183 ae(str(Interval('1y') + Interval('1m')), '+ 1y 1m') | 263 ae(str(Interval('1y') + Interval('1m')), '+ 1y 1m') |
| 255 ae(str(Date('2003-5', add_granularity=1)), '2003-05-31.23:59:59') | 335 ae(str(Date('2003-5', add_granularity=1)), '2003-05-31.23:59:59') |
| 256 ae(str(Interval('+1w', add_granularity=1)), '+ 14d') | 336 ae(str(Interval('+1w', add_granularity=1)), '+ 14d') |
| 257 ae(str(Interval('-2m 3w', add_granularity=1)), '- 2m 14d') | 337 ae(str(Interval('-2m 3w', add_granularity=1)), '- 2m 14d') |
| 258 | 338 |
| 259 def suite(): | 339 def suite(): |
| 260 return unittest.makeSuite(DateTestCase, 'test') | 340 return unittest.makeSuite(DateTestCase, 'test') |
| 261 | 341 |
| 262 | 342 |
| 263 # vim: set filetype=python ts=4 sw=4 et si | 343 # vim: set filetype=python ts=4 sw=4 et si |
