-class TestParser(unittest.TestCase):
-
- def test_tokenizer(self):
- p = Parser(Game())
- self.assertEqual(p.tokenize(''), [])
- self.assertEqual(p.tokenize(' '), [])
- self.assertEqual(p.tokenize('abc'), ['abc'])
- self.assertEqual(p.tokenize('a b\nc "d"'), ['a', 'b', 'c', 'd'])
- self.assertEqual(p.tokenize('a "b\nc d"'), ['a', 'b\nc d'])
- self.assertEqual(p.tokenize('a"b"c'), ['abc'])
- self.assertEqual(p.tokenize('a\\b'), ['a\\b'])
- self.assertEqual(p.tokenize('"a\\b"'), ['ab'])
- self.assertEqual(p.tokenize('a"b'), ['ab'])
- self.assertEqual(p.tokenize('a"\\"b'), ['a"b'])
-
- def test_unhandled(self):
- p = Parser(Game())
- self.assertEqual(p.parse(''), None)
- self.assertEqual(p.parse(' '), None)
- self.assertEqual(p.parse('x'), None)
-
- def test_argsparse(self):
- p = Parser(Game())
- assertErr = partial(self.assertRaises, ParseError, p.argsparse)
- assertErr('', ['foo'])
- assertErr('string', [])
- assertErr('string string', ['foo'])
- self.assertEqual(p.argsparse('string', ('foo',)),
- (['foo'], {}))
- self.assertEqual(p.argsparse('string string', ('foo', 'bar')),
- (['foo', 'bar'], {}))
- assertErr('int:nonneg', [''])
- assertErr('int:nonneg', ['x'])
- assertErr('int:nonneg', ['-1'])
- assertErr('int:nonneg', ['0.1'])
- self.assertEqual(p.argsparse('int:nonneg', ('0',)),
- ([0], {}))
- assertErr('yx_tuple:nonneg', ['x'])
- assertErr('yx_tuple:nonneg', ['Y:0,X:1'])
- assertErr('yx_tuple:nonneg', ['Y:1,X:0'])
- assertErr('yx_tuple:nonneg', ['Y:1.1,X:1'])
- assertErr('yx_tuple:nonneg', ['Y:1,X:1.1'])
- self.assertEqual(p.argsparse('yx_tuple:nonneg', ('Y:1,X:2',)),
- ([(1, 2)], {}))
-
-