def test_week(self): # >>> datetime.date(2012, 1, 1).isocalendar() # (2011, 52, 7) # >>> datetime.date(2012, 12, 31).isocalendar() # (2013, 1, 1) di = DI().parse('2011-W52') self.assertEqual(di.dates(), [ datetime.date(2011, 12, 26) + datetime.timedelta(i) for i in range(7) ]) self.assertEqual(di.next().dates(), [ datetime.date(2012, 1, 2) + datetime.timedelta(i) for i in range(7) ]) self.assertEqual(str(di), '2011-W52') di = DI().parse('2013-W01') self.assertEqual(di.dates(), [ datetime.date(2012, 12, 31) + datetime.timedelta(i) for i in range(7) ]) self.assertEqual(di.prev().dates(), [ datetime.date(2012, 12, 24) + datetime.timedelta(i) for i in range(7) ]) self.assertEqual(str(di), '2013-W01')
def test_comparison(self): a = DI().parse('2011') b = DI().parse('2013') c = DI().parse('2012') self.assertTrue(a < b) self.assertTrue(a < c) self.assertTrue(b > c) d = DI().parse('2012') self.assertTrue(d == c) self.assertEqual(d, min(c, b)) self.assertEqual(3, len(set([a, b, c, d])))
def test_cmp(self): operators = [ lambda x, y: x == y, lambda x, y: x != y, lambda x, y: x < y, lambda x, y: x > y, lambda x, y: x <= y, lambda x, y: x >= y ] dates = [(1, 30, DI().parse('2015-01-01-2015-01-30')), (1, 15, DI().parse('2015-01-01-2015-01-15')), (10, 20, DI().parse('2015-01-10-2015-01-20')), (20, 30, DI().parse('2015-01-20-2015-01-30'))] for from_a, to_a, di_a in dates: for from_b, to_b, di_b in dates: for op in operators: self.assertEqual(op((from_a, to_a), (from_b, to_b)), op(di_a, di_b))
def test_interval(self): di = DI().parse('2012-01-01-2012-02-01') self.assertEqual(di.dates(), [ datetime.date(2012, 1, 1) + datetime.timedelta(i) for i in xrange(31) ]) self.assertRaises(NotImplementedError, di.next) self.assertRaises(NotImplementedError, di.prev)
def test_year(self): di = DI().parse('2012') self.assertEqual(di.dates(), [ datetime.date(2012, 1, 1) + datetime.timedelta(i) for i in range(366) ]) self.assertEqual(di.next().dates(), [ datetime.date(2013, 1, 1) + datetime.timedelta(i) for i in range(365) ]) self.assertEqual(di.prev().dates(), [ datetime.date(2011, 1, 1) + datetime.timedelta(i) for i in range(365) ]) self.assertEqual(str(di), '2012')
def test_month(self): di = DI().parse('2012-01') self.assertEqual(di.dates(), [ datetime.date(2012, 1, 1) + datetime.timedelta(i) for i in range(31) ]) self.assertEqual(di.next().dates(), [ datetime.date(2012, 2, 1) + datetime.timedelta(i) for i in range(29) ]) self.assertEqual(di.prev().dates(), [ datetime.date(2011, 12, 1) + datetime.timedelta(i) for i in range(31) ]) self.assertEqual(str(di), '2012-01')
def test_date(self): di = DI().parse('2012-01-01') self.assertEqual(di.dates(), [datetime.date(2012, 1, 1)]) self.assertEqual(di.next().dates(), [datetime.date(2012, 1, 2)]) self.assertEqual(di.prev().dates(), [datetime.date(2011, 12, 31)]) self.assertEqual(str(di), '2012-01-01')
def test_hours(self): d = DI().parse('2015') self.assertEqual(len(list(d.hours())), 24 * 365)
class MyTaskNoDefault(luigi.Task): di = DI()
class MyTask(luigi.Task): di = DI(default=month)
def test_comparison_different_types(self): x = DI().parse('2012') y = DI().parse('2012-01-01-2013-01-01') self.assertRaises(TypeError, lambda: x == y)
def test_exception(self): self.assertRaises(ValueError, DI().parse, 'xyz')