コード例 #1
0
 def test_literal_set_empty(self):
     inp = "{}"
     lexer = parser.get_lexer()
     p = parser.get_parser()
     res = p.parse(inp, lexer=lexer)
     assert isinstance(res, ast.LiteralSet)
     assert res.value == set([])
コード例 #2
0
ファイル: test_parser.py プロジェクト: armon/pypred
 def test_literal_set_empty(self):
     inp = "{}"
     lexer = parser.get_lexer()
     p = parser.get_parser()
     res = p.parse(inp, lexer=lexer)
     assert isinstance(res, ast.LiteralSet)
     assert res.value == set([])
コード例 #3
0
ファイル: test_parser.py プロジェクト: geetarista/pypred
 def test_error_expr(self):
     inp = "a > 1 b > 2"
     lexer = parser.get_lexer()
     p = parser.get_parser()
     lexer.parser = p
     res = p.parse(inp, lexer=lexer)
     assert isinstance(res, ast.CompareOperator)
     assert len(p.errors) == 3
コード例 #4
0
ファイル: test_lexer.py プロジェクト: armon/pypred
 def test_error_multiline(self):
     inp = "\r\nfoo =\nbar !! fun"
     lexer = parser.get_lexer()
     lexer.input(inp)
     tokens = list(lexer)
     assert [t.type for t in tokens] == ['STRING', 'EQUALS', 'STRING', 'STRING']
     assert len(lexer.errors) == 1
     assert lexer.errors[0] == ('!!', 5, 3)
コード例 #5
0
 def test_error_expr(self):
     inp = "a > 1 b > 2"
     lexer = parser.get_lexer()
     p = parser.get_parser()
     lexer.parser = p
     res = p.parse(inp, lexer=lexer)
     assert isinstance(res, ast.CompareOperator)
     assert len(p.errors) == 3
コード例 #6
0
ファイル: test_lexer.py プロジェクト: darkseed/pypred
 def test_error(self):
     inp = "!! foo"
     lexer = parser.get_lexer()
     lexer.input(inp)
     tokens = list(lexer)
     assert [t.type for t in tokens] == ['STRING']
     assert len(lexer.errors) == 1
     assert lexer.errors[0] == ('!!', 0, 1)
コード例 #7
0
 def assert_types(self, inp, expected):
     lexer = parser.get_lexer()
     lexer.input(inp)
     tokens = list(lexer)
     token_types = [t.type for t in tokens]
     assert len(token_types) == len(expected)
     for idx, (real, expect) in enumerate(zip(token_types, expected)):
         assert real == expect
コード例 #8
0
 def test_error(self):
     inp = "!! foo"
     lexer = parser.get_lexer()
     lexer.input(inp)
     tokens = list(lexer)
     assert [t.type for t in tokens] == ['STRING']
     assert len(lexer.errors) == 1
     assert lexer.errors[0] == ('!!', 1, 1)
コード例 #9
0
ファイル: test_lexer.py プロジェクト: darkseed/pypred
 def assert_types(self, inp, expected):
     lexer = parser.get_lexer()
     lexer.input(inp)
     tokens = list(lexer)
     token_types = [t.type for t in tokens]
     assert len(token_types) == len(expected)
     for idx, (real, expect) in enumerate(zip(token_types, expected)):
         assert real == expect
コード例 #10
0
 def test_error_multiline(self):
     inp = "\r\nfoo =\nbar !! fun"
     lexer = parser.get_lexer()
     lexer.input(inp)
     tokens = list(lexer)
     assert [t.type
             for t in tokens] == ['STRING', 'EQUALS', 'STRING', 'STRING']
     assert len(lexer.errors) == 1
     assert lexer.errors[0] == ('!!', 5, 3)
コード例 #11
0
 def test_literal_set(self):
     inp = "{true false 1.0 \"quote\"}"
     lexer = parser.get_lexer()
     p = parser.get_parser()
     res = p.parse(inp, lexer=lexer)
     assert isinstance(res, ast.LiteralSet)
     assert res.value == set([
         ast.Constant(True),
         ast.Constant(False),
         ast.Number(1.0),
         ast.Literal("\"quote\"")
     ])
コード例 #12
0
ファイル: test_parser.py プロジェクト: armon/pypred
 def test_literal_set(self):
     inp = "{true false 1.0 \"quote\"}"
     lexer = parser.get_lexer()
     p = parser.get_parser()
     res = p.parse(inp, lexer=lexer)
     assert isinstance(res, ast.LiteralSet)
     assert res.value == set([
         ast.Constant(True),
         ast.Constant(False),
         ast.Number(1.0),
         ast.Literal("\"quote\"")
     ])
コード例 #13
0
ファイル: test_parser.py プロジェクト: geetarista/pypred
    def assert_nodes(self, inp, exp_nodes):
        lexer = parser.get_lexer()
        p = parser.get_parser()
        res = p.parse(inp, lexer=lexer)
        assert isinstance(res, ast.Node)

        # Do a pre-order traversal
        nodes = []
        res.pre(lambda n: nodes.append(n))

        # Get the class names
        names = [repr(n) for n in nodes]
        #assert len(names) == len(exp_nodes)
        assert names == exp_nodes
コード例 #14
0
    def assert_nodes(self, inp, exp_nodes):
        lexer = parser.get_lexer()
        p = parser.get_parser()
        res = p.parse(inp, lexer=lexer)
        assert isinstance(res, ast.Node)

        # Do a pre-order traversal
        nodes = []
        res.pre(lambda n: nodes.append(n))

        # Get the class names
        names = [repr(n) for n in nodes]
        #assert len(names) == len(exp_nodes)
        assert names == exp_nodes
コード例 #15
0
ファイル: predicate_converter.py プロジェクト: Dogild/garuda
    def convert(self, source):
        """
        """
        ast = None
        lexer = pypred_parser.get_lexer()
        parser = pypred_parser.get_parser()

        try:
            ast = parser.parse(source, lexer)
        except AttributeError:
            raise SyntaxError('Could not convert predicate %s' % source)

        if parser.errors or lexer.errors:
            raise SyntaxError('Could not convert due to the following errors %s' % (parser.errors + lexer.errors))

        if type(ast) == Literal:
            raise SyntaxError('Invalid predicate %s' % source)

        return self.convert_tree(ast)  # pragma: no cover
コード例 #16
0
    def convert(self, source):
        """
        """
        ast = None
        lexer = pypred_parser.get_lexer()
        parser = pypred_parser.get_parser()

        try:
            ast = parser.parse(source, lexer)
        except AttributeError:
            raise SyntaxError('Could not convert predicate %s' % source)

        if parser.errors or lexer.errors:
            raise SyntaxError(
                'Could not convert due to the following errors %s' %
                (parser.errors + lexer.errors))

        if type(ast) == Literal:
            raise SyntaxError('Invalid predicate %s' % source)

        return self.convert_tree(ast)  # pragma: no cover
コード例 #17
0
ファイル: test_ast.py プロジェクト: armon/pypred
 def ast(self, inp):
     lexer = parser.get_lexer()
     p = parser.get_parser(lexer=lexer)
     return p.parse(inp, lexer=lexer)
コード例 #18
0
ファイル: test_ast.py プロジェクト: dungba88/pypred
 def ast(self, inp):
     lexer = parser.get_lexer()
     p = parser.get_parser(lexer=lexer)
     return p.parse(inp, lexer=lexer)
コード例 #19
0
 def test_error_end(self):
     inp = "false and"
     lexer = parser.get_lexer()
     p = parser.get_parser()
     with pytest.raises(SyntaxError):
         p.parse(inp, lexer=lexer)
コード例 #20
0
 def test_comments(self):
     inp = "# foo is bar\nfoo and bar"
     lexer = parser.get_lexer()
     lexer.input(inp)
     tokens = list(lexer)
     assert [t.type for t in tokens] == ['STRING', 'AND', 'STRING']
コード例 #21
0
ファイル: test_parser.py プロジェクト: geetarista/pypred
 def test_error_end(self):
     inp = "false and"
     lexer = parser.get_lexer()
     p = parser.get_parser()
     with pytest.raises(SyntaxError):
         p.parse(inp, lexer=lexer)
コード例 #22
0
ファイル: test_lexer.py プロジェクト: darkseed/pypred
 def test_comments(self):
     inp = "# foo is bar\nfoo and bar"
     lexer = parser.get_lexer()
     lexer.input(inp)
     tokens = list(lexer)
     assert [t.type for t in tokens] == ['STRING', 'AND', 'STRING']