Skip to content

Commit

Permalink
Test or zero and one or more.
Browse files Browse the repository at this point in the history
  • Loading branch information
eerimoq committed Jul 22, 2018
1 parent 4c463a3 commit 83eb8c2
Showing 1 changed file with 45 additions and 0 deletions.
45 changes: 45 additions & 0 deletions tests/test_textparser.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
import textparser
from textparser import Grammar
from textparser import Sequence
from textparser import OneOrMore
from textparser import ZeroOrMore
from textparser import DelimitedList
from textparser import Token
from textparser import TokenizerError
Expand Down Expand Up @@ -50,6 +52,49 @@ def test_delimited_list(self):
tree = grammar.parse(tokens)
self.assertEqual(tree, expected_tree)

def test_zero_or_more(self):
grammar = Grammar(ZeroOrMore('WORD'))

datas = [
([], []),
([('WORD', 'foo')], ['foo']),
([('WORD', 'foo'), ('WORD', 'bar')], ['foo', 'bar'])
]

for tokens, expected_tree in datas:
tokens = tokenize(tokens + [('__EOF__', '')])
tree = grammar.parse(tokens)
self.assertEqual(tree, expected_tree)

def test_one_or_more(self):
grammar = Grammar(OneOrMore('WORD'))

datas = [
([('WORD', 'foo')], ['foo']),
([('WORD', 'foo'), ('WORD', 'bar')], ['foo', 'bar'])
]

for tokens, expected_tree in datas:
tokens = tokenize(tokens + [('__EOF__', '')])
tree = grammar.parse(tokens)
self.assertEqual(tree, expected_tree)

def test_one_or_more_mismatch(self):
grammar = Grammar(OneOrMore('WORD'))

datas = [
[],
[('NUMBER', 'foo')]
]

for tokens in datas:
tokens = tokenize(tokens + [('__EOF__', '')])

with self.assertRaises(textparser.Error) as cm:
grammar.parse(tokens)

self.assertEqual(str(cm.exception), '')

def test_tokenizer_error(self):
datas = [
(2, 'hej', 'he>>!<<j'),
Expand Down

0 comments on commit 83eb8c2

Please sign in to comment.