コード例 #1
0
ファイル: test_sexpressions.py プロジェクト: EdTsft/ggp
 def setUp(self):
     self.parser = SExpressionParser()
コード例 #2
0
ファイル: test_sexpressions.py プロジェクト: EdTsft/ggp
class TestSExpressionParser():
    def setUp(self):
        self.parser = SExpressionParser()

    def test_expression_one_word(self):
        assert_equal(self.parser.parse_expression('word'),
                     'word')

    def test_expression_empty_string(self):
        with assert_raises(ParseException):
            self.parser.parse_expression('')

    def test_expression_multiple_words(self):
        with assert_raises(ParseException):
            self.parser.parse_expression('two words')

    def test_expression_compound_empty(self):
        assert_equal(self.parser.parse_expression('()'),
                     SExpression(()))

    def test_expression_compound_one_arg(self):
        assert_equal(self.parser.parse_expression('(foo)'),
                     SExpression(('foo',)))

    def test_expression_compound_three_args(self):
        assert_equal(self.parser.parse_expression('(arg0 arg1 arg2)'),
                     SExpression(('arg0', 'arg1', 'arg2')))

    def test_expression_compound_nested_once(self):
        assert_equal(self.parser.parse_expression('((foo))'),
                     SExpression((SExpression(('foo',)),)))

    def test_expression_compound_nested_deep(self):
        depth = 100
        expected = 'foo'
        for _ in range(depth):
            expected = SExpression((expected,))
        assert_equal(
            self.parser.parse_expression('(' * depth + 'foo' + ')' * depth),
            expected)

    def test_expression_compound_nested_complex(self):
        assert_equal(self.parser.parse_expression('((foo 1) (bar (baz 2)))'),
                     SExpression((SExpression(('foo', '1')),
                                  SExpression(('bar',
                                               SExpression(('baz', '2')))))))