File: TestSimpleOffsetsHours.py

package info (click to toggle)
parsedatetime 2.6-3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 568 kB
  • sloc: python: 5,161; makefile: 44
file content (117 lines) | stat: -rw-r--r-- 4,235 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
# -*- coding: utf-8 -*-
"""
Test parsing of 'simple' offsets
"""
from __future__ import unicode_literals

import sys
import time
import datetime
import parsedatetime as pdt
from . import utils

if sys.version_info < (2, 7):
    import unittest2 as unittest
else:
    import unittest


class test(unittest.TestCase):

    @utils.assertEqualWithComparator
    def assertExpectedResult(self, result, check, **kwargs):
        return utils.compareResultByTimeTuplesAndFlags(result, check, **kwargs)

    def setUp(self):
        self.cal = pdt.Calendar()
        (self.yr, self.mth, self.dy, self.hr,
         self.mn, self.sec, self.wd, self.yd, self.isdst) = time.localtime()

    def testHoursFromNow(self):
        s = datetime.datetime.now()
        t = s + datetime.timedelta(hours=5)

        start = s.timetuple()
        target = t.timetuple()

        self.assertExpectedResult(
            self.cal.parse('5 hours from now', start), (target, 2))
        self.assertExpectedResult(
            self.cal.parse('5 hour from now', start), (target, 2))
        self.assertExpectedResult(
            self.cal.parse('5 hr from now', start), (target, 2))
        self.assertExpectedResult(
            self.cal.parse('in 5 hours', start), (target, 2))
        self.assertExpectedResult(
            self.cal.parse('in 5 hour', start), (target, 2))
        self.assertExpectedResult(
            self.cal.parse('5 hours', start), (target, 2))
        self.assertExpectedResult(self.cal.parse('5 hr', start), (target, 2))
        self.assertExpectedResult(self.cal.parse('5h', start), (target, 2))

        self.assertExpectedResult(
            self.cal.parse('five hours from now', start), (target, 2))
        self.assertExpectedResult(
            self.cal.parse('five hour from now', start), (target, 2))
        self.assertExpectedResult(
            self.cal.parse('five hr from now', start), (target, 2))
        self.assertExpectedResult(
            self.cal.parse('in five hours', start), (target, 2))
        self.assertExpectedResult(
            self.cal.parse('in five hour', start), (target, 2))
        self.assertExpectedResult(
            self.cal.parse('five hours', start), (target, 2))
        self.assertExpectedResult(
            self.cal.parse('five hr', start), (target, 2))

        # Test "an"
        t = s + datetime.timedelta(hours=1)
        target = t.timetuple()

        self.assertExpectedResult(
            self.cal.parse('an hour from now', start), (target, 2))
        self.assertExpectedResult(
            self.cal.parse('in an hour', start), (target, 2))
        self.assertExpectedResult(
            self.cal.parse('an hour', start), (target, 2))
        self.assertExpectedResult(self.cal.parse('an hr', start), (target, 2))
        self.assertExpectedResult(self.cal.parse('an h', start), (target, 2))

        # No match, should require a word boundary
        self.assertExpectedResult(self.cal.parse('anhour', start), (start, 0))
        self.assertExpectedResult(
            self.cal.parse('an hamburger', start), (start, 0))

    def testHoursBeforeNow(self):
        s = datetime.datetime.now()
        t = s + datetime.timedelta(hours=-5)

        start = s.timetuple()
        target = t.timetuple()

        self.assertExpectedResult(
            self.cal.parse('5 hours before now', start), (target, 2))
        self.assertExpectedResult(
            self.cal.parse('5 hr before now', start), (target, 2))
        self.assertExpectedResult(
            self.cal.parse('5h before now', start), (target, 2))

        self.assertExpectedResult(
            self.cal.parse('five hours before now', start), (target, 2))
        self.assertExpectedResult(
            self.cal.parse('five hr before now', start), (target, 2))

        # Test "an"
        t = s + datetime.timedelta(hours=-1)
        target = t.timetuple()

        self.assertExpectedResult(
            self.cal.parse('an hour before now', start), (target, 2))
        self.assertExpectedResult(
            self.cal.parse('an hr before now', start), (target, 2))
        self.assertExpectedResult(
            self.cal.parse('an h before now', start), (target, 2))


if __name__ == "__main__":
    unittest.main()