예제 #1
0
    def testEvaluationDate(self):
        referenceDate = Date(2015, 1, 1)
        Settings.evaluationDate = referenceDate
        self.assertEqual(Settings.evaluationDate, referenceDate, "Evaluation Date should be \n"
                                                                 "expected:   {0}\n"
                                                                 "calculated: {1}".format(referenceDate,
                                                                                          Settings.evaluationDate))

        # check wrong input
        with self.assertRaises(ValueError):
            Settings.evaluationDate = 2

        # settings should be a singleton by default
        secondeSettings = SettingsFactory()
        self.assertEqual(Settings.evaluationDate, secondeSettings.evaluationDate, "Settings should be a singleton\n"
                                                                                  "expected:   {0}\n"
                                                                                  "calculated: {1}"
                         .format(Settings.evaluationDate,
                                 secondeSettings.evaluationDate))

        # test forced building
        newSettings = SettingsFactory(forcedBuild=True)
        self.assertEqual(newSettings.evaluationDate, Date.todaysDate(),
                         "Forced built settings should be a fresh object\n"
                         "expected:   {0}\n"
                         "calculated: {1}".format(Date.todaysDate(),
                                                  newSettings.evaluationDate))
예제 #2
0
    def testEvaluationDate(self):
        referenceDate = Date(2015, 1, 1)
        Settings.evaluationDate = referenceDate
        self.assertEqual(
            Settings.evaluationDate, referenceDate,
            "Evaluation Date should be \n"
            "expected:   {0}\n"
            "calculated: {1}".format(referenceDate, Settings.evaluationDate))

        # check wrong input
        with self.assertRaises(ValueError):
            Settings.evaluationDate = 2

        # settings should be a singleton by default
        secondeSettings = SettingsFactory()
        self.assertEqual(
            Settings.evaluationDate, secondeSettings.evaluationDate,
            "Settings should be a singleton\n"
            "expected:   {0}\n"
            "calculated: {1}".format(Settings.evaluationDate,
                                     secondeSettings.evaluationDate))

        # test forced building
        newSettings = SettingsFactory(forcedBuild=True)
        self.assertEqual(
            newSettings.evaluationDate, Date.todaysDate(),
            "Forced built settings should be a fresh object\n"
            "expected:   {0}\n"
            "calculated: {1}".format(Date.todaysDate(),
                                     newSettings.evaluationDate))
예제 #3
0
 def anchorEvaluationDate(self):
     if self._evaluationDate is None:
         self._evaluationDate = Date.todaysDate()
예제 #4
0
 def evaluationDate(self):
     if not self._evaluationDate:
         return Date.todaysDate()
     return self._evaluationDate
예제 #5
0
 def evaluationDate(self):
     if self._evaluationDate is None:
         return Date.todaysDate()
     return self._evaluationDate
예제 #6
0
    def testBasicFunctions(self):
        year = 2015
        month = 7
        day = 24
        strRepr = "{0}-{1:02d}-{2:02d}".format(year, month, day)
        innerRepr = "Date({0}, {1}, {2})".format(year, month, day)

        testDate = Date(year, month, day)
        self.assertEqual(
            str(testDate), strRepr, "date string:\n"
            "expected:   {0:s}\n"
            "calculated: {1:s}".format(strRepr, str(testDate)))

        self.assertEqual(
            repr(testDate), innerRepr, "date representation:\n"
            "expected:   {0:s}\n"
            "calculated: {1:s}".format(innerRepr, repr(testDate)))

        self.assertEqual(
            testDate.year(), year, "date year:\n"
            "expected:   {0:d}\n"
            "calculated: {1:d}".format(year, testDate.year()))

        self.assertEqual(
            testDate.month(), month, "date month:\n"
            "expected:   {0:d}\n"
            "calculated: {1:d}".format(month, testDate.month()))

        self.assertEqual(
            testDate.dayOfMonth(), day, "date day:\n"
            "expected:   {0:d}\n"
            "calculated: {1:d}".format(day, testDate.dayOfMonth()))

        self.assertEqual(
            testDate.dayOfYear(), testDate - Date(2015, 1, 1) + 1,
            "date day:\n"
            "expected:   {0:d}\n"
            "calculated: {1:d}".format(testDate - Date(2015, 1, 1) + 1,
                                       testDate.dayOfYear()))
        self.assertEqual(
            testDate.weekday(), 6, "date weekday:\n"
            "expected:   {0:d}\n"
            "calculated: {1:d}".format(5, testDate.weekday()))

        self.assertEqual(
            testDate.toDateTime(), dt.datetime(year, month, day),
            "date datetime representation\n"
            "expected:   {0}\n"
            "calculated: {1}".format(dt.datetime(year, month, day),
                                     testDate.toDateTime()))

        serialNumber = testDate.serialNumber
        serialDate = Date(serialNumber=serialNumber)

        self.assertEqual(
            serialDate, testDate, "date excel serial number representation\n"
            "expected:   {0:d}"
            "calculated: {1:d}".format(serialDate.serialNumber,
                                       testDate.serialNumber))

        # test comparisons
        previousDate = testDate - 1
        self.assertTrue(
            previousDate < testDate,
            "{0} is not earlier than {1}".format(previousDate, testDate))
        self.assertFalse(
            previousDate >= testDate,
            "{0} should not be later than or equal to {1}".format(
                previousDate, testDate))
        self.assertTrue((previousDate + 1) == testDate,
                        "{0} plus one day should be equal to {1}".format(
                            previousDate, testDate))

        # check static members
        self.assertEqual(Date.minDate(), Date(1901, 1, 1), "min date is wrong")
        self.assertEqual(Date.maxDate(), Date(2199, 12, 31),
                         "max date is wrong")
        self.assertEqual(Date.endOfMonth(testDate), Date(year, month, 31),
                         "end of month is wrong")
        self.assertTrue(Date.isEndOfMonth(Date(year, month, 31)),
                        "{0} should be the end of month")
        self.assertEqual(
            Date.nextWeekday(testDate, testDate.weekday()), testDate,
            "{0}'s next same week day should be {1}".format(
                testDate, testDate))
        expectedDate = dt.date.today()
        expectedDate = dt.datetime(expectedDate.year, expectedDate.month,
                                   expectedDate.day)
        self.assertEqual(
            Date.todaysDate().toDateTime(), expectedDate, "today's date\n"
            "expected:   {0}\n"
            "calculated: {1}".format(expectedDate, Date.todaysDate()))

        # nth-week day
        with self.assertRaises(ValueError):
            _ = Date.nthWeekday(0, Weekdays.Friday, 1, 2015)

        with self.assertRaises(ValueError):
            _ = Date.nthWeekday(6, Weekdays.Friday, 1, 2015)

        self.assertEqual(Date.nthWeekday(3, Weekdays.Wednesday, 8, 2015),
                         Date(2015, 8, 19))

        # check plus/sub

        threeWeeksAfter = testDate + '3W'
        expectedDate = testDate + 21
        self.assertEqual(
            threeWeeksAfter, expectedDate, "date + 3w period\n"
            "expected:   {0}\n"
            "calculated: {1}".format(expectedDate, threeWeeksAfter))

        threeMonthsBefore = testDate - "3M"
        expectedDate = Date(year, month - 3, day)
        self.assertEqual(
            threeMonthsBefore, expectedDate, "date - 3m period\n"
            "expected:   {0}\n"
            "calculated: {1}".format(expectedDate, threeMonthsBefore))

        threeMonthsBefore = testDate - Period("3M")
        expectedDate = Date(year, month - 3, day)
        self.assertEqual(
            threeMonthsBefore, expectedDate, "date - 3m period\n"
            "expected:   {0}\n"
            "calculated: {1}".format(expectedDate, threeMonthsBefore))

        threeMonthsAfter = testDate + "3m"
        expectedDate = Date(year, month + 3, day)
        self.assertEqual(
            threeMonthsAfter, expectedDate, "date + 3m period\n"
            "expected:   {0}\n"
            "calculated: {1}".format(expectedDate, threeMonthsAfter))

        oneYearAndTwoMonthsBefore = testDate - "14m"
        expectedDate = Date(year - 1, month - 2, day)
        self.assertEqual(
            oneYearAndTwoMonthsBefore, expectedDate, "date - 14m period\n"
            "expected:   {0}\n"
            "calculated: {1}".format(expectedDate, threeMonthsBefore))

        oneYearAndTwoMonthsBefore = testDate + "14m"
        expectedDate = Date(year + 1, month + 2, day)
        self.assertEqual(
            oneYearAndTwoMonthsBefore, expectedDate, "date + 14m period\n"
            "expected:   {0}\n"
            "calculated: {1}".format(expectedDate, threeMonthsBefore))

        fiveMonthsAfter = testDate + "5m"
        expectedDate = Date(year, month + 5, day)
        self.assertEqual(
            fiveMonthsAfter, expectedDate, "date + 5m period\n"
            "expected:   {0}\n"
            "calculated: {1}".format(expectedDate, fiveMonthsAfter))
예제 #7
0
 def anchorEvaluationDate(self):
     if self._evaluationDate is None:
         self._evaluationDate = Date.todaysDate()
예제 #8
0
 def evaluationDate(self):
     if self._evaluationDate is None:
         return Date.todaysDate()
     return self._evaluationDate
예제 #9
0
    def testBasicFunctions(self):
        year = 2015
        month = 7
        day = 24
        strRepr = "{0}-{1:02d}-{2:02d}".format(year, month, day)
        innerRepr = "Date({0}, {1}, {2})".format(year, month, day)

        testDate = Date(year, month, day)
        self.assertEqual(str(testDate), strRepr, "date string:\n"
                                                 "expected:   {0:s}\n"
                                                 "calculated: {1:s}".format(strRepr, str(testDate)))

        self.assertEqual(repr(testDate), innerRepr, "date representation:\n"
                                                    "expected:   {0:s}\n"
                                                    "calculated: {1:s}".format(innerRepr, repr(testDate)))

        self.assertEqual(testDate.year(), year, "date year:\n"
                                                "expected:   {0:d}\n"
                                                "calculated: {1:d}".format(year, testDate.year()))

        self.assertEqual(testDate.month(), month, "date month:\n"
                                                  "expected:   {0:d}\n"
                                                  "calculated: {1:d}".format(month, testDate.month()))

        self.assertEqual(testDate.dayOfMonth(), day, "date day:\n"
                                                     "expected:   {0:d}\n"
                                                     "calculated: {1:d}".format(day, testDate.dayOfMonth()))

        self.assertEqual(testDate.dayOfYear(), testDate - Date(2015, 1, 1) + 1, "date day:\n"
                                                                                "expected:   {0:d}\n"
                                                                                "calculated: {1:d}"
                         .format(testDate - Date(2015, 1, 1) + 1, testDate.dayOfYear()))
        self.assertEqual(testDate.weekday(), 6, "date weekday:\n"
                                                "expected:   {0:d}\n"
                                                "calculated: {1:d}".format(5, testDate.weekday()))

        self.assertEqual(testDate.toDateTime(), dt.date(year, month, day), "date datetime representation\n"
                                                                           "expected:   {0}\n"
                                                                           "calculated: {1}".format(
            dt.datetime(year, month, day), testDate.toDateTime()))

        serialNumber = testDate.serialNumber
        serialDate = Date(serialNumber=serialNumber)

        self.assertEqual(serialDate, testDate, "date excel serial number representation\n"
                                               "expected:   {0:d}"
                                               "calculated: {1:d}".format(serialDate.serialNumber,
                                                                          testDate.serialNumber))

        # test comparisons
        previousDate = testDate - 1
        self.assertTrue(previousDate < testDate, "{0} is not earlier than {1}".format(previousDate, testDate))
        self.assertFalse(previousDate >= testDate,
                         "{0} should not be later than or equal to {1}".format(previousDate, testDate))
        self.assertTrue((previousDate + 1) == testDate,
                        "{0} plus one day should be equal to {1}".format(previousDate, testDate))

        # check static members
        self.assertEqual(Date.minDate(), Date(1901, 1, 1), "min date is wrong")
        self.assertEqual(Date.maxDate(), Date(2199, 12, 31), "max date is wrong")
        self.assertEqual(Date.endOfMonth(testDate), Date(year, month, 31), "end of month is wrong")
        self.assertTrue(Date.isEndOfMonth(Date(year, month, 31)), "{0} should be the end of month")
        self.assertEqual(Date.nextWeekday(testDate, testDate.weekday()), testDate,
                         "{0}'s next same week day should be {1}"
                         .format(testDate, testDate))
        self.assertEqual(Date.todaysDate().toDateTime(), dt.date.today(), "today's date\n"
                                                                          "expected:   {0}\n"
                                                                          "calculated: {1}".format(dt.date.today(),
                                                                                                   Date.todaysDate()))

        # nth-week day
        with self.assertRaises(ValueError):
            _ = Date.nthWeekday(0, Weekdays.Friday, 1, 2015)

        with self.assertRaises(ValueError):
            _ = Date.nthWeekday(6, Weekdays.Friday, 1, 2015)

        self.assertEqual(Date.nthWeekday(3, Weekdays.Wednesday, 8, 2015), Date(2015, 8, 19))

        # check plus/sub

        threeWeeksAfter = testDate + '3W'
        expectedDate = testDate + 21
        self.assertEqual(threeWeeksAfter, expectedDate, "date + 3w period\n"
                                                        "expected:   {0}\n"
                                                        "calculated: {1}".format(expectedDate, threeWeeksAfter))

        threeMonthsBefore = testDate - "3M"
        expectedDate = Date(year, month - 3, day)
        self.assertEqual(threeMonthsBefore, expectedDate, "date - 3m period\n"
                                                          "expected:   {0}\n"
                                                          "calculated: {1}".format(expectedDate, threeMonthsBefore))

        threeMonthsBefore = testDate - Period("3M")
        expectedDate = Date(year, month - 3, day)
        self.assertEqual(threeMonthsBefore, expectedDate, "date - 3m period\n"
                                                          "expected:   {0}\n"
                                                          "calculated: {1}".format(expectedDate, threeMonthsBefore))

        threeMonthsAfter = testDate + "3m"
        expectedDate = Date(year, month + 3, day)
        self.assertEqual(threeMonthsAfter, expectedDate, "date + 3m period\n"
                                                         "expected:   {0}\n"
                                                         "calculated: {1}".format(expectedDate, threeMonthsAfter))

        oneYearAndTwoMonthsBefore = testDate - "14m"
        expectedDate = Date(year - 1, month - 2, day)
        self.assertEqual(oneYearAndTwoMonthsBefore, expectedDate, "date - 14m period\n"
                                                                  "expected:   {0}\n"
                                                                  "calculated: {1}".format(expectedDate,
                                                                                           threeMonthsBefore))

        oneYearAndTwoMonthsBefore = testDate + "14m"
        expectedDate = Date(year + 1, month + 2, day)
        self.assertEqual(oneYearAndTwoMonthsBefore, expectedDate, "date + 14m period\n"
                                                                  "expected:   {0}\n"
                                                                  "calculated: {1}".format(expectedDate,
                                                                                           threeMonthsBefore))

        fiveMonthsAfter = testDate + "5m"
        expectedDate = Date(year, month + 5, day)
        self.assertEqual(fiveMonthsAfter, expectedDate, "date + 5m period\n"
                                                        "expected:   {0}\n"
                                                        "calculated: {1}".format(expectedDate, fiveMonthsAfter))