Exemplo n.º 1
0
    def test_more_calculations(self):

        periods = list()
        for y in range(5):
            for m in range(13):
                for d in list(range(5)) + list(range(25, 33)) + list(
                        range(58, 66)):
                    periods.append(
                        BusinessPeriod(
                            str(y) + 'y' + str(m) + 'm' + str(d) + 'd'))

        for d in self.dates:
            for p in periods:
                dp = d + p
                q = dp - d
                dq = d + q
                if d.day < 28 and p.days < 28:
                    self.assertEqual(q, p, (q, d, p, dp))

                # only idempotent pairs work always (e.g. above)
                self.assertEqual(dq, dp, (dq, d, p, dp, q))
                self.assertEqual((dq - d), q, (dq - d, d, q, dq))

        a = BusinessDate('20150228')
        for y in range(3):
            for m in range(0, 7, 5):
                for d in range(0, 13, 5):
                    b = a + BusinessPeriod(years=y, months=m, days=d)
                    self.assertEqual(-b._diff_in_days(a), a._diff_in_days(b))
Exemplo n.º 2
0
    def test_calculations(self):
        self.assertEqual(self.jan01._add_days(1), self.jan02)
        self.assertEqual(self.jan01._add_ymd(0, 1, 0), self.feb01)
        self.assertEqual(str(self.jan01._add_ymd(1, 0, 0)), '20170101')
        self.assertEqual(self.jan01.add_period('2D'),
                         self.jan02 + BusinessPeriod('1D'))
        self.assertEqual(self.jan02.add_period('-2D'),
                         self.jan01 - BusinessPeriod('1D'))
        self.assertEqual(self.jan02.add_period('-1b'),
                         self.jan01 - BusinessPeriod('1b'))
        #        self.assertNotEqual(BusinessDate(20160630).add_period(BusinessPeriod('2B')),
        #                            BusinessDate(20160630).add_period(BusinessPeriod('2B'), BusinessHolidays(['20160704'])))
        self.assertNotEqual(
            BusinessDate(20160630).add_period(BusinessPeriod('2B')),
            BusinessDate(20160630).add_period(
                BusinessPeriod('2B'),
                BusinessHolidays(BusinessDate(['20160704']))))
        n = 111
        a, b = BusinessDate(), BusinessDate() + BusinessPeriod(days=n)
        self.assertEqual(n, a._diff_in_days(b))
        self.assertEqual(-n, b._diff_in_days(a))

        a, b = BusinessDate(20150630), BusinessDate(20150630) + BusinessPeriod(
            years=1, months=27, days=46)
        self.assertEqual(1234, a._diff_in_days(b))
        self.assertEqual(-1234, b._diff_in_days(a))

        self.assertRaises(TypeError, BusinessDate().__add__, 'rtzwrwetzwe')
        self.assertRaises(TypeError, BusinessDate().__sub__, 'rtzwrwetzwe')
        self.assertEqual(self.jan01 + '1b', self.jan02 + '1b')

        d, p = BusinessDate('20160229'), BusinessPeriod('1Y1M1D')
        self.assertEqual((d + p - d), p, (d + p - d, d, p, d + p))
        d, p = BusinessDate('20150129'), BusinessPeriod('1Y2M1D')
        self.assertEqual((d + p - d), p, (d + p - d, d, p, d + p))
        d, p = BusinessDate('20150129'), BusinessPeriod('1Y1M1D')
        self.assertEqual((d + p - d), p, (d + p - d, d, p, d + p))
        # non idepotent pairs
        d, p = BusinessDate('20150129'), BusinessPeriod('1M29D')
        # self.assertEqual((d + p - d), p, (d + p - d, d, p, d + p))
        d, p = BusinessDate('20160129'), BusinessPeriod('1M29D')
Exemplo n.º 3
0
 def test_diff(self):
     s = BusinessDate('20160101')
     self.assertEqual(
         BusinessDate._diff_in_days(s, BusinessDate('20160102')),
         BusinessPeriod(days=1).days)