Ejemplo n.º 1
0
    def test_parse_repeating_interval_mockbuilder(self):
        mockBuilder = mock.Mock()

        args = {'R': False, 'Rnn': '3',
                'interval': (('1981', '04', '05', None, None, None,
                              'date'),
                             None,
                             (None, None, None, '1', None, None,
                              None, 'duration'),
                             'interval')}

        mockBuilder.build_repeating_interval.return_value = args

        result = parse_repeating_interval('R3/1981-04-05/P1D',
                                          builder=mockBuilder)

        self.assertEqual(result, args)
        mockBuilder.build_repeating_interval.assert_called_once_with(**args)

        mockBuilder = mock.Mock()

        args = {'R': False, 'Rnn': '11',
                'interval': (None,
                             (('1980', '03', '05', None, None, None,
                               'date'),
                              ('01', '01', '00', None, 'time'),
                              'datetime'),
                             (None, None, None, None, '1', '2',
                              None, 'duration'),
                             'interval')}

        mockBuilder.build_repeating_interval.return_value = args

        result = parse_repeating_interval('R11/PT1H2M/1980-03-05T01:01:00',
                                          builder=mockBuilder)

        self.assertEqual(result, args)
        mockBuilder.build_repeating_interval.assert_called_once_with(**args)

        mockBuilder = mock.Mock()

        args = {'R': True, 'Rnn': None,
                'interval': (None,
                             (('1980', '03', '05', None, None, None,
                               'date'),
                              ('01', '01', '00', None, 'time'),
                              'datetime'),
                             (None, None, None, None, '1', '2',
                              None, 'duration'),
                             'interval')}

        mockBuilder.build_repeating_interval.return_value = args

        result = parse_repeating_interval('R/PT1H2M/1980-03-05T01:01:00',
                                          builder=mockBuilder)

        self.assertEqual(result, args)
        mockBuilder.build_repeating_interval.assert_called_once_with(**args)
Ejemplo n.º 2
0
    def test_parse_repeating_interval_mockbuilder(self):
        mockBuilder = mock.Mock()

        args = {'R': False, 'Rnn': '3',
                'interval': (('1981', '04', '05', None, None, None,
                              'date'),
                             None,
                             (None, None, None, '1', None, None,
                              None, 'duration'),
                             'interval')}

        mockBuilder.build_repeating_interval.return_value = args

        result = parse_repeating_interval('R3/1981-04-05/P1D',
                                          builder=mockBuilder)

        self.assertEqual(result, args)
        mockBuilder.build_repeating_interval.assert_called_once_with(**args)

        mockBuilder = mock.Mock()

        args = {'R': False, 'Rnn': '11',
                'interval': (None,
                             (('1980', '03', '05', None, None, None,
                               'date'),
                              ('01', '01', '00', None, 'time'),
                              'datetime'),
                             (None, None, None, None, '1', '2',
                              None, 'duration'),
                             'interval')}

        mockBuilder.build_repeating_interval.return_value = args

        result = parse_repeating_interval('R11/PT1H2M/1980-03-05T01:01:00',
                                          builder=mockBuilder)

        self.assertEqual(result, args)
        mockBuilder.build_repeating_interval.assert_called_once_with(**args)

        mockBuilder = mock.Mock()

        args = {'R': True, 'Rnn': None,
                'interval': (None,
                             (('1980', '03', '05', None, None, None,
                               'date'),
                              ('01', '01', '00', None, 'time'),
                              'datetime'),
                             (None, None, None, None, '1', '2',
                              None, 'duration'),
                             'interval')}

        mockBuilder.build_repeating_interval.return_value = args

        result = parse_repeating_interval('R/PT1H2M/1980-03-05T01:01:00',
                                          builder=mockBuilder)

        self.assertEqual(result, args)
        mockBuilder.build_repeating_interval.assert_called_once_with(**args)
Ejemplo n.º 3
0
    def test_parse_repeating_interval_suffixgarbage(self):
        #Don't allow garbage after the duration
        #https://bitbucket.org/nielsenb/aniso8601/issues/9/durations-with-trailing-garbage-are-parsed
        with self.assertRaises(ValueError):
            parse_repeating_interval('R3/1981-04-05/P1Dasdf')

        with self.assertRaises(ValueError):
            parse_repeating_interval(
                'R3/1981-04-05/P0003-06-04T12:30:05.5asdfasdf')
Ejemplo n.º 4
0
    def test_parse_repeating_interval_suffixgarbage(self):
        #Don't allow garbage after the duration
        #https://bitbucket.org/nielsenb/aniso8601/issues/9/durations-with-trailing-garbage-are-parsed
        with self.assertRaises(ISOFormatError):
            parse_repeating_interval('R3/1981-04-05/P1Dasdf', builder=None)

        with self.assertRaises(ISOFormatError):
            parse_repeating_interval('R3/'
                                     '1981-04-05/'
                                     'P0003-06-04T12:30:05.5asdfasdf',
                                     builder=None)
Ejemplo n.º 5
0
    def test_parse_repeating_interval_relative(self):
        results = list(
            parse_repeating_interval('R3/1981-04-05/P1D', relative=True))
        self.assertEqual(results[0], datetime.date(year=1981, month=4, day=5))
        self.assertEqual(results[1], datetime.date(year=1981, month=4, day=6))
        self.assertEqual(results[2], datetime.date(year=1981, month=4, day=7))

        results = list(
            parse_repeating_interval('R11/PT1H2M/1980-03-05T01:01:00',
                                     relative=True))

        for dateindex in range(0, 11):
            self.assertEqual(
                results[dateindex],
                datetime.datetime(year=1980, month=3, day=5, hour=1, minute=1)
                - dateindex * datetime.timedelta(hours=1, minutes=2))

        results = list(
            parse_repeating_interval(
                'R2--1980-03-05T01:01:00--1981-04-05T01:01:00',
                intervaldelimiter='--',
                relative=True))
        self.assertEqual(
            results[0],
            datetime.datetime(year=1980, month=3, day=5, hour=1, minute=1))
        self.assertEqual(
            results[1],
            datetime.datetime(year=1981, month=4, day=5, hour=1, minute=1))

        results = list(
            parse_repeating_interval(
                'R2/1980-03-05 01:01:00/1981-04-05 01:01:00',
                datetimedelimiter=' ',
                relative=True))
        self.assertEqual(
            results[0],
            datetime.datetime(year=1980, month=3, day=5, hour=1, minute=1))
        self.assertEqual(
            results[1],
            datetime.datetime(year=1981, month=4, day=5, hour=1, minute=1))

        resultgenerator = parse_repeating_interval(
            'R/PT1H2M/1980-03-05T01:01:00', relative=True)

        for dateindex in range(0, 11):
            self.assertEqual(
                next(resultgenerator),
                datetime.datetime(year=1980, month=3, day=5, hour=1, minute=1)
                - dateindex * datetime.timedelta(hours=1, minutes=2))
Ejemplo n.º 6
0
    def test_parse_repeating_interval_relative_nodateutil(self):
        import sys
        import dateutil

        dateutil_import = dateutil

        sys.modules['dateutil'] = None

        with self.assertRaises(RuntimeError):
            parse_repeating_interval('R3/1981-04-05/P1D', relative=True)

        with self.assertRaises(RuntimeError):
            parse_repeating_interval('R4/2017-04-30T00:00:00/P1M',
                                     relative=True)

        #Reinstall dateutil
        sys.modules['dateutil'] = dateutil
    def test_parse_repeating_interval(self):
        results = list(parse_repeating_interval('R3/1981-04-05/P1D'))
        self.assertEqual(results[0], datetime.date(year=1981, month=4, day=5))
        self.assertEqual(results[1], datetime.date(year=1981, month=4, day=6))
        self.assertEqual(results[2], datetime.date(year=1981, month=4, day=7))

        results = list(parse_repeating_interval('R11/PT1H2M/1980-03-05T01:01:00'))

        for dateindex in range(0, 11):
             self.assertEqual(results[dateindex], datetime.datetime(year=1980, month=3, day=5, hour=1, minute=1) - dateindex * datetime.timedelta(hours=1, minutes=2))

        results = list(parse_repeating_interval('R2--1980-03-05T01:01:00--1981-04-05T01:01:00', intervaldelimiter='--'))
        self.assertEqual(results[0], datetime.datetime(year=1980, month=3, day=5, hour=1, minute=1))
        self.assertEqual(results[1], datetime.datetime(year=1981, month=4, day=5, hour=1, minute=1))

        results = list(parse_repeating_interval('R2/1980-03-05 01:01:00/1981-04-05 01:01:00', datetimedelimiter=' '))
        self.assertEqual(results[0], datetime.datetime(year=1980, month=3, day=5, hour=1, minute=1))
        self.assertEqual(results[1], datetime.datetime(year=1981, month=4, day=5, hour=1, minute=1))

        resultgenerator = parse_repeating_interval('R/PT1H2M/1980-03-05T01:01:00')

        for dateindex in range(0, 11):
             self.assertEqual(next(resultgenerator), datetime.datetime(year=1980, month=3, day=5, hour=1, minute=1) - dateindex * datetime.timedelta(hours=1, minutes=2))
Ejemplo n.º 8
0
    def test_parse_repeating_interval_badstr(self):
        testtuples = ('bad', '')

        for testtuple in testtuples:
            with self.assertRaises(ISOFormatError):
                parse_repeating_interval(testtuple, builder=None)
Ejemplo n.º 9
0
    def test_parse_repeating_interval_relative(self):
        with mock.patch.object(aniso8601.builder.RelativeTimeBuilder,
                               'build_repeating_interval') as mockBuild:
            expectedargs = {'R': False, 'Rnn': '3',
                            'interval': (('1981', '04', '05', None, None, None,
                                          'date'),
                                         None,
                                         (None, None, None, '1', None, None,
                                          None, 'duration'),
                                         'interval')}

            mockBuild.return_value = expectedargs

            result = parse_repeating_interval('R3/1981-04-05/P1D', relative=True)

            self.assertEqual(result, expectedargs)
            mockBuild.assert_called_once_with(**expectedargs)

        with mock.patch.object(aniso8601.builder.RelativeTimeBuilder,
                               'build_repeating_interval') as mockBuild:
            expectedargs = {'R': False, 'Rnn': '11',
                            'interval': (None,
                                         (('1980', '03', '05', None, None,
                                           None, 'date'),
                                          ('01', '01', '00', None, 'time'),
                                          'datetime'),
                                         (None, None, None, None, '1', '2',
                                          None, 'duration'),
                                         'interval')}

            mockBuild.return_value = expectedargs

            result = parse_repeating_interval('R11/'
                                              'PT1H2M/'
                                              '1980-03-05T01:01:00',
                                              relative=True)

            self.assertEqual(result, expectedargs)
            mockBuild.assert_called_once_with(**expectedargs)

        with mock.patch.object(aniso8601.builder.RelativeTimeBuilder,
                               'build_repeating_interval') as mockBuild:
            expectedargs = {'R': True, 'Rnn': None,
                            'interval': (None,
                                         (('1980', '03', '05', None, None,
                                           None, 'date'),
                                          ('01', '01', '00', None, 'time'),
                                          'datetime'),
                                         (None, None, None, None, '1', '2',
                                          None, 'duration'),
                                         'interval')}

            mockBuild.return_value = expectedargs

            result = parse_repeating_interval('R/'
                                              'PT1H2M/'
                                              '1980-03-05T01:01:00',
                                              relative=True)

            self.assertEqual(result, expectedargs)
            mockBuild.assert_called_once_with(**expectedargs)
Ejemplo n.º 10
0
    def test_parse_repeating_interval(self):
        with mock.patch.object(aniso8601.interval.PythonTimeBuilder,
                               'build_repeating_interval') as mockBuilder:
            expectedargs = {'R': False, 'Rnn': '3',
                            'interval': (('1981', '04', '05', None, None, None,
                                          'date'),
                                         None,
                                         (None, None, None, '1', None, None,
                                          None, 'duration'),
                                         'interval')}

            mockBuilder.return_value = expectedargs

            result = parse_repeating_interval('R3/1981-04-05/P1D')

            self.assertEqual(result, expectedargs)
            mockBuilder.assert_called_once_with(**expectedargs)

        with mock.patch.object(aniso8601.interval.PythonTimeBuilder,
                               'build_repeating_interval') as mockBuilder:
            expectedargs = {'R': False, 'Rnn': '11',
                            'interval': (None,
                                         (('1980', '03', '05', None, None,
                                           None, 'date'),
                                          ('01', '01', '00', None, 'time'),
                                          'datetime'),
                                         (None, None, None, None, '1', '2',
                                          None, 'duration'),
                                         'interval')}

            mockBuilder.return_value = expectedargs

            result = parse_repeating_interval('R11/PT1H2M/1980-03-05T01:01:00')

            self.assertEqual(result, expectedargs)
            mockBuilder.assert_called_once_with(**expectedargs)

        with mock.patch.object(aniso8601.interval.PythonTimeBuilder,
                               'build_repeating_interval') as mockBuilder:
            expectedargs = {'R': False, 'Rnn': '2',
                            'interval': ((('1980', '03', '05', None, None,
                                           None, 'date'),
                                          ('01', '01', '00', None, 'time'),
                                          'datetime'),
                                         (('1981', '04', '05', None, None,
                                           None, 'date'),
                                          ('01', '01', '00', None, 'time'),
                                          'datetime'),
                                         None,
                                         'interval')}

            mockBuilder.return_value = expectedargs

            result = parse_repeating_interval('R2--1980-03-05T01:01:00--'
                                              '1981-04-05T01:01:00',
                                              intervaldelimiter='--')

            self.assertEqual(result, expectedargs)
            mockBuilder.assert_called_once_with(**expectedargs)

        with mock.patch.object(aniso8601.interval.PythonTimeBuilder,
                               'build_repeating_interval') as mockBuilder:
            expectedargs = {'R': False, 'Rnn': '2',
                            'interval': ((('1980', '03', '05', None, None,
                                           None, 'date'),
                                          ('01', '01', '00', None, 'time'),
                                          'datetime'),
                                         (('1981', '04', '05', None, None,
                                           None, 'date'),
                                          ('01', '01', '00', None, 'time'),
                                          'datetime'),
                                         None,
                                         'interval')}

            mockBuilder.return_value = expectedargs

            result = parse_repeating_interval('R2/'
                                              '1980-03-05 01:01:00/'
                                              '1981-04-05 01:01:00',
                                              datetimedelimiter=' ')

            self.assertEqual(result, expectedargs)
            mockBuilder.assert_called_once_with(**expectedargs)

        with mock.patch.object(aniso8601.interval.PythonTimeBuilder,
                               'build_repeating_interval') as mockBuilder:
            expectedargs = {'R': True, 'Rnn': None,
                            'interval': (None,
                                         (('1980', '03', '05', None, None,
                                           None, 'date'),
                                          ('01', '01', '00', None, 'time'),
                                          'datetime'),
                                         (None, None, None, None, '1', '2',
                                          None, 'duration'),
                                         'interval')}

            mockBuilder.return_value = expectedargs

            result = parse_repeating_interval('R/PT1H2M/1980-03-05T01:01:00')

            self.assertEqual(result, expectedargs)
            mockBuilder.assert_called_once_with(**expectedargs)
Ejemplo n.º 11
0
    def test_parse_repeating_interval_badtype(self):
        testtuples = (None, 1, False, 1.234)

        for testtuple in testtuples:
            with self.assertRaises(ValueError):
                parse_repeating_interval(testtuple, builder=None)
Ejemplo n.º 12
0
    def test_parse_repeating_interval_relative(self):
        results = list(
            parse_repeating_interval('R3/1981-04-05/P1D', relative=True))
        self.assertEqual(results[0], datetime.date(year=1981, month=4, day=5))
        self.assertEqual(results[1], datetime.date(year=1981, month=4, day=6))
        self.assertEqual(results[2], datetime.date(year=1981, month=4, day=7))

        results = list(
            parse_repeating_interval('R11/PT1H2M/1980-03-05T01:01:00',
                                     relative=True))

        for dateindex in compat.range(0, 11):
            self.assertEqual(
                results[dateindex],
                datetime.datetime(year=1980, month=3, day=5, hour=1, minute=1)
                - dateindex * datetime.timedelta(hours=1, minutes=2))

        results = list(
            parse_repeating_interval(
                'R2--1980-03-05T01:01:00--1981-04-05T01:01:00',
                intervaldelimiter='--',
                relative=True))
        self.assertEqual(
            results[0],
            datetime.datetime(year=1980, month=3, day=5, hour=1, minute=1))
        self.assertEqual(
            results[1],
            datetime.datetime(year=1981, month=4, day=5, hour=1, minute=1))

        results = list(
            parse_repeating_interval(
                'R2/1980-03-05 01:01:00/1981-04-05 01:01:00',
                datetimedelimiter=' ',
                relative=True))
        self.assertEqual(
            results[0],
            datetime.datetime(year=1980, month=3, day=5, hour=1, minute=1))
        self.assertEqual(
            results[1],
            datetime.datetime(year=1981, month=4, day=5, hour=1, minute=1))

        #Make sure relative is correctly applied for months
        #https://bitbucket.org/nielsenb/aniso8601/issues/12/month-intervals-calculated-incorrectly-or
        results = list(
            parse_repeating_interval('R4/2017-04-30T00:00:00/P1M',
                                     relative=True))
        self.assertEqual(results[0],
                         datetime.datetime(year=2017, month=4, day=30))
        self.assertEqual(results[1],
                         datetime.datetime(year=2017, month=5, day=30))
        self.assertEqual(results[2],
                         datetime.datetime(year=2017, month=6, day=30))
        self.assertEqual(results[3],
                         datetime.datetime(year=2017, month=7, day=30))

        resultgenerator = parse_repeating_interval(
            'R/PT1H2M/1980-03-05T01:01:00', relative=True)

        for dateindex in compat.range(0, 11):
            self.assertEqual(
                next(resultgenerator),
                datetime.datetime(year=1980, month=3, day=5, hour=1, minute=1)
                - dateindex * datetime.timedelta(hours=1, minutes=2))
Ejemplo n.º 13
0
    def test_parse_repeating_interval_relative(self):
        with mock.patch.object(aniso8601.builder.RelativeTimeBuilder,
                               'build_repeating_interval') as mockBuild:
            expectedargs = {
                'R':
                False,
                'Rnn':
                '3',
                'interval': (('1981', '04', '05', None, None, None, 'date'),
                             None, (None, None, None, '1', None, None, None,
                                    'duration'), 'interval')
            }

            mockBuild.return_value = expectedargs

            result = parse_repeating_interval('R3/1981-04-05/P1D',
                                              relative=True)

            self.assertEqual(result, expectedargs)
            mockBuild.assert_called_once_with(**expectedargs)

        with mock.patch.object(aniso8601.builder.RelativeTimeBuilder,
                               'build_repeating_interval') as mockBuild:
            expectedargs = {
                'R':
                False,
                'Rnn':
                '11',
                'interval':
                (None, (('1980', '03', '05', None, None, None, 'date'),
                        ('01', '01', '00', None, 'time'), 'datetime'),
                 (None, None, None, None, '1', '2', None,
                  'duration'), 'interval')
            }

            mockBuild.return_value = expectedargs

            result = parse_repeating_interval(
                'R11/'
                'PT1H2M/'
                '1980-03-05T01:01:00', relative=True)

            self.assertEqual(result, expectedargs)
            mockBuild.assert_called_once_with(**expectedargs)

        with mock.patch.object(aniso8601.builder.RelativeTimeBuilder,
                               'build_repeating_interval') as mockBuild:
            expectedargs = {
                'R':
                True,
                'Rnn':
                None,
                'interval':
                (None, (('1980', '03', '05', None, None, None, 'date'),
                        ('01', '01', '00', None, 'time'), 'datetime'),
                 (None, None, None, None, '1', '2', None,
                  'duration'), 'interval')
            }

            mockBuild.return_value = expectedargs

            result = parse_repeating_interval(
                'R/'
                'PT1H2M/'
                '1980-03-05T01:01:00', relative=True)

            self.assertEqual(result, expectedargs)
            mockBuild.assert_called_once_with(**expectedargs)
Ejemplo n.º 14
0
    def test_parse_repeating_interval_mockbuilder(self):
        mockBuilder = mock.Mock()

        args = {
            "R":
            False,
            "Rnn":
            "3",
            "interval": (
                ("1981", "04", "05", None, None, None, "date"),
                None,
                (None, None, None, "1", None, None, None, "duration"),
                "interval",
            ),
        }

        mockBuilder.build_repeating_interval.return_value = args

        result = parse_repeating_interval("R3/1981-04-05/P1D",
                                          builder=mockBuilder)

        self.assertEqual(result, args)
        mockBuilder.build_repeating_interval.assert_called_once_with(**args)

        mockBuilder = mock.Mock()

        args = {
            "R":
            False,
            "Rnn":
            "11",
            "interval": (
                None,
                (
                    ("1980", "03", "05", None, None, None, "date"),
                    ("01", "01", "00", None, "time"),
                    "datetime",
                ),
                (None, None, None, None, "1", "2", None, "duration"),
                "interval",
            ),
        }

        mockBuilder.build_repeating_interval.return_value = args

        result = parse_repeating_interval("R11/PT1H2M/1980-03-05T01:01:00",
                                          builder=mockBuilder)

        self.assertEqual(result, args)
        mockBuilder.build_repeating_interval.assert_called_once_with(**args)

        mockBuilder = mock.Mock()

        args = {
            "R":
            True,
            "Rnn":
            None,
            "interval": (
                None,
                (
                    ("1980", "03", "05", None, None, None, "date"),
                    ("01", "01", "00", None, "time"),
                    "datetime",
                ),
                (None, None, None, None, "1", "2", None, "duration"),
                "interval",
            ),
        }

        mockBuilder.build_repeating_interval.return_value = args

        result = parse_repeating_interval("R/PT1H2M/1980-03-05T01:01:00",
                                          builder=mockBuilder)

        self.assertEqual(result, args)
        mockBuilder.build_repeating_interval.assert_called_once_with(**args)
Ejemplo n.º 15
0
    def test_parse_repeating_interval(self):
        with mock.patch.object(aniso8601.interval.PythonTimeBuilder,
                               "build_repeating_interval") as mockBuilder:
            expectedargs = {
                "R":
                False,
                "Rnn":
                "3",
                "interval": (
                    ("1981", "04", "05", None, None, None, "date"),
                    None,
                    (None, None, None, "1", None, None, None, "duration"),
                    "interval",
                ),
            }

            mockBuilder.return_value = expectedargs

            result = parse_repeating_interval("R3/1981-04-05/P1D")

            self.assertEqual(result, expectedargs)
            mockBuilder.assert_called_once_with(**expectedargs)

        with mock.patch.object(aniso8601.interval.PythonTimeBuilder,
                               "build_repeating_interval") as mockBuilder:
            expectedargs = {
                "R":
                False,
                "Rnn":
                "11",
                "interval": (
                    None,
                    (
                        ("1980", "03", "05", None, None, None, "date"),
                        ("01", "01", "00", None, "time"),
                        "datetime",
                    ),
                    (None, None, None, None, "1", "2", None, "duration"),
                    "interval",
                ),
            }

            mockBuilder.return_value = expectedargs

            result = parse_repeating_interval("R11/PT1H2M/1980-03-05T01:01:00")

            self.assertEqual(result, expectedargs)
            mockBuilder.assert_called_once_with(**expectedargs)

        with mock.patch.object(aniso8601.interval.PythonTimeBuilder,
                               "build_repeating_interval") as mockBuilder:
            expectedargs = {
                "R":
                False,
                "Rnn":
                "2",
                "interval": (
                    (
                        ("1980", "03", "05", None, None, None, "date"),
                        ("01", "01", "00", None, "time"),
                        "datetime",
                    ),
                    (
                        ("1981", "04", "05", None, None, None, "date"),
                        ("01", "01", "00", None, "time"),
                        "datetime",
                    ),
                    None,
                    "interval",
                ),
            }

            mockBuilder.return_value = expectedargs

            result = parse_repeating_interval(
                "R2--1980-03-05T01:01:00--"
                "1981-04-05T01:01:00",
                intervaldelimiter="--")

            self.assertEqual(result, expectedargs)
            mockBuilder.assert_called_once_with(**expectedargs)

        with mock.patch.object(aniso8601.interval.PythonTimeBuilder,
                               "build_repeating_interval") as mockBuilder:
            expectedargs = {
                "R":
                False,
                "Rnn":
                "2",
                "interval": (
                    (
                        ("1980", "03", "05", None, None, None, "date"),
                        ("01", "01", "00", None, "time"),
                        "datetime",
                    ),
                    (
                        ("1981", "04", "05", None, None, None, "date"),
                        ("01", "01", "00", None, "time"),
                        "datetime",
                    ),
                    None,
                    "interval",
                ),
            }

            mockBuilder.return_value = expectedargs

            result = parse_repeating_interval(
                "R2/"
                "1980-03-05 01:01:00/"
                "1981-04-05 01:01:00",
                datetimedelimiter=" ")

            self.assertEqual(result, expectedargs)
            mockBuilder.assert_called_once_with(**expectedargs)

        with mock.patch.object(aniso8601.interval.PythonTimeBuilder,
                               "build_repeating_interval") as mockBuilder:
            expectedargs = {
                "R":
                True,
                "Rnn":
                None,
                "interval": (
                    None,
                    (
                        ("1980", "03", "05", None, None, None, "date"),
                        ("01", "01", "00", None, "time"),
                        "datetime",
                    ),
                    (None, None, None, None, "1", "2", None, "duration"),
                    "interval",
                ),
            }

            mockBuilder.return_value = expectedargs

            result = parse_repeating_interval("R/PT1H2M/1980-03-05T01:01:00")

            self.assertEqual(result, expectedargs)
            mockBuilder.assert_called_once_with(**expectedargs)
Ejemplo n.º 16
0
    def test_parse_repeating_interval(self):
        with mock.patch.object(aniso8601.builder.PythonTimeBuilder,
                               'build_repeating_interval') as mockBuilder:
            expectedargs = {'R': False, 'Rnn': '3',
                            'interval': (('1981', '04', '05', None, None, None,
                                          'date'),
                                         None,
                                         (None, None, None, '1', None, None,
                                          None, 'duration'),
                                         'interval')}

            mockBuilder.return_value = expectedargs

            result = parse_repeating_interval('R3/1981-04-05/P1D')

            self.assertEqual(result, expectedargs)
            mockBuilder.assert_called_once_with(**expectedargs)

        with mock.patch.object(aniso8601.builder.PythonTimeBuilder,
                               'build_repeating_interval') as mockBuilder:
            expectedargs = {'R': False, 'Rnn': '11',
                            'interval': (None,
                                         (('1980', '03', '05', None, None,
                                           None, 'date'),
                                          ('01', '01', '00', None, 'time'),
                                          'datetime'),
                                         (None, None, None, None, '1', '2',
                                          None, 'duration'),
                                         'interval')}

            mockBuilder.return_value = expectedargs

            result = parse_repeating_interval('R11/PT1H2M/1980-03-05T01:01:00')

            self.assertEqual(result, expectedargs)
            mockBuilder.assert_called_once_with(**expectedargs)

        with mock.patch.object(aniso8601.builder.PythonTimeBuilder,
                               'build_repeating_interval') as mockBuilder:
            expectedargs = {'R': False, 'Rnn': '2',
                            'interval': ((('1980', '03', '05', None, None,
                                           None, 'date'),
                                          ('01', '01', '00', None, 'time'),
                                          'datetime'),
                                         (('1981', '04', '05', None, None,
                                           None, 'date'),
                                          ('01', '01', '00', None, 'time'),
                                          'datetime'),
                                         None,
                                         'interval')}

            mockBuilder.return_value = expectedargs

            result = parse_repeating_interval('R2--1980-03-05T01:01:00--'
                                              '1981-04-05T01:01:00',
                                              intervaldelimiter='--')

            self.assertEqual(result, expectedargs)
            mockBuilder.assert_called_once_with(**expectedargs)

        with mock.patch.object(aniso8601.builder.PythonTimeBuilder,
                               'build_repeating_interval') as mockBuilder:
            expectedargs = {'R': False, 'Rnn': '2',
                            'interval': ((('1980', '03', '05', None, None,
                                           None, 'date'),
                                          ('01', '01', '00', None, 'time'),
                                          'datetime'),
                                         (('1981', '04', '05', None, None,
                                           None, 'date'),
                                          ('01', '01', '00', None, 'time'),
                                          'datetime'),
                                         None,
                                         'interval')}

            mockBuilder.return_value = expectedargs

            result = parse_repeating_interval('R2/'
                                              '1980-03-05 01:01:00/'
                                              '1981-04-05 01:01:00',
                                              datetimedelimiter=' ')

            self.assertEqual(result, expectedargs)
            mockBuilder.assert_called_once_with(**expectedargs)

        with mock.patch.object(aniso8601.builder.PythonTimeBuilder,
                               'build_repeating_interval') as mockBuilder:
            expectedargs = {'R': True, 'Rnn': None,
                            'interval': (None,
                                         (('1980', '03', '05', None, None,
                                           None, 'date'),
                                          ('01', '01', '00', None, 'time'),
                                          'datetime'),
                                         (None, None, None, None, '1', '2',
                                          None, 'duration'),
                                         'interval')}

            mockBuilder.return_value = expectedargs

            result = parse_repeating_interval('R/PT1H2M/1980-03-05T01:01:00')

            self.assertEqual(result, expectedargs)
            mockBuilder.assert_called_once_with(**expectedargs)
Ejemplo n.º 17
0
    def test_parse_repeating_interval_baddelimiter(self):
        testtuples = ('R,PT1H2M,1980-03-05T01:01:00', 'R3 1981-04-05 P1D')

        for testtuple in testtuples:
            with self.assertRaises(ISOFormatError):
                parse_repeating_interval(testtuple, builder=None)