Skip to content

Commit

Permalink
added tests
Browse files Browse the repository at this point in the history
  • Loading branch information
Dillon Dixon committed Dec 1, 2016
1 parent 9b91649 commit aa7d08f
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 1 deletion.
2 changes: 1 addition & 1 deletion arrow/parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ def _generate_pattern_re(self, fmt):
offset = 0

# Extract the bracketed expressions to be reinserted later.
escaped_fmt = re.sub(self._ESCAPE_RE, "#" , fmt)
escaped_fmt = re.sub(self._ESCAPE_RE, "#", fmt)
# Any number of S is the same as one.
escaped_fmt = re.sub('S+', 'S', escaped_fmt)
escaped_data = re.findall(self._ESCAPE_RE, fmt)
Expand Down
39 changes: 39 additions & 0 deletions tests/parser_tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,45 @@ def test_parse_token_invalid_meridians(self):
self.parser._parse_token('a', 'p..m', parts)
assertEqual(parts, {})

def test_parser_no_caching(self):
expect(parser.DateTimeParser._generate_pattern_re).args('fmt_a').times(100)

self.parser = parser.DateTimeParser(cache_size=0)

for _ in range(100):
self.parser._generate_pattern_re('fmt_a')

def test_parser_1_line_caching(self):

expect(parser.DateTimeParser._generate_pattern_re).args('fmt_a').times(1)
self.parser = parser.DateTimeParser(cache_size=1)
for _ in range(100):
self.parser._generate_pattern_re('fmt_a')

expect(parser.DateTimeParser._generate_pattern_re).args('fmt_b').times(1)
for _ in range(100):
self.parser._generate_pattern_re('fmt_a')
self.parser._generate_pattern_re('fmt_b')

expect(parser.DateTimeParser._generate_pattern_re).args('fmt_a').times(1)
for _ in range(100):
self.parser._generate_pattern_re('fmt_a')

def test_parser_multiple_line_caching(self):

expect(parser.DateTimeParser._generate_pattern_re).args('fmt_a').times(1)
self.parser = parser.DateTimeParser(cache_size=2)
for _ in range(100):
self.parser._generate_pattern_re('fmt_a')

expect(parser.DateTimeParser._generate_pattern_re).args('fmt_b').times(1)
for _ in range(100):
self.parser._generate_pattern_re('fmt_a')
self.parser._generate_pattern_re('fmt_b')

expect(parser.DateTimeParser._generate_pattern_re).args('fmt_a').times(0)
for _ in range(100):
self.parser._generate_pattern_re('fmt_a')


class DateTimeParserParseTests(Chai):
Expand Down

0 comments on commit aa7d08f

Please sign in to comment.