Пример #1
0
    def test_parse_pclass_func_args(self):
        should_pass = (
            '(1+2)',
            '(1 + (2 * 4))',
            '(-n+2)'
        )

        for input in should_pass:

            tokens = jsonselect.lex(input)
            cpy = list(tokens)
            self.assertEqual(
                self.parser.parse_pclass_func_args(tokens),
                cpy,
                input
            )
            self.assertFalse(len(tokens))

        tokens = jsonselect.lex('(n+2), object')
        self.assertEqual(
            self.parser.parse_pclass_func_args(tokens),
            [('operator', '('), ('var', 'n'), ('binop', '+'), ('int', 2), ('operator', ')')]
        )
        self.assertEqual(
            tokens,
            [('operator', ','), ('type', 'object')]
        )

        tokens = jsonselect.lex('(import sys; sys.exit(0))')
        self.assertRaises(jsonselect.SelectorSyntaxError,
                          self.parser.parse_pclass_func_args, tokens)

        tokens = jsonselect.lex('(1 + ( 2 - 3)')
        self.assertRaises(jsonselect.SelectorSyntaxError,
                          self.parser.parse_pclass_func_args, tokens)
Пример #2
0
    def test_lex_expr(self):

        tokens = jsonselect.lex('(n+2), object')
        self.assertEqual(tokens, [('expr', '(n+2)'), ('operator', ','),
                                  ('type', 'object')])

        self.assertRaises(jsonselect.LexingError, jsonselect.lex,
                          '(import sys; sys.exit(0))')
Пример #3
0
    def test_lex_expr(self):

        tokens = jsonselect.lex('(n+2), object')
        self.assertEqual(
            tokens,
            [('expr', '(n+2)'), ('operator', ','), ('type', 'object')]
        )

        self.assertRaises(jsonselect.LexingError,
                          jsonselect.lex, '(import sys; sys.exit(0))')
Пример #4
0
 def test_eval_args(self):
     tokens = jsonselect.lex('(1 + 2)')
     self.assertTrue(3, self.parser.eval_args(tokens, n=3))