예제 #1
0
 def test_wrong_not_operation(self):
     text = "Status !% new"
     lexer = Lexer(text)
     with self.assertRaises(LexerError) as err:
         while lexer.current_char is not None:
             lexer.get_next_token()
     self.assertEqual(err.exception.args,
                      ('Parsing char `!` at position 7', ))
예제 #2
0
 def test_invalid_format(self):
     text = "%%%"
     lexer = Lexer(text)
     with self.assertRaises(LexerError) as err:
         while lexer.current_char is not None:
             lexer.get_next_token()
     self.assertEqual(err.exception.args,
                      ("Parsing char `%s` at position %i" % ('%', 0), ))
예제 #3
0
 def test_invalid_format_peek_is_None(self):
     text = '!'
     lexer = Lexer(text)
     with self.assertRaises(LexerError) as err:
         while lexer.current_char is not None:
             lexer.get_next_token()
     self.assertEqual(err.exception.args,
                      ('Parsing char `!` at position 0', ))
예제 #4
0
    def test_parentheses(self):
        text = "(Status=new | Status=open)"
        lexer = Lexer(text)

        token = lexer.get_next_token()
        self.assertEqual(token, Token(LPAREN, '('))

        while lexer.current_char is not None:
            token = lexer.get_next_token()
        self.assertEqual(token, Token(RPAREN, ')'))
예제 #5
0
    def test_simple(self):
        text = "Status=new"
        lexer = Lexer(text)
        token = lexer.get_next_token()
        self.assertEqual(token, Token(LITERAL, "Status"))

        token = lexer.get_next_token()
        self.assertEqual(token, Token(IS, "="))

        token = lexer.get_next_token()
        self.assertEqual(token, Token(LITERAL, "new"))
예제 #6
0
 def test_literal(self):
     text = 'Queue = composite-literal'
     lexer = Lexer(text)
     token = None
     while lexer.current_char is not None:
         token = lexer.get_next_token()
     self.assertEqual(token, Token(LITERAL, 'composite-literal'))
예제 #7
0
 def test_complex_with_string_literal(self):
     text = "Queue='complex-queue' & Status != resolved"
     lexer = Lexer(text)
     count = 0
     last_token = None
     while lexer.current_char is not None:
         last_token = lexer.get_next_token()
         count += 1
     self.assertEqual(count, 7)
     self.assertIsInstance(last_token, Token)
     self.assertEqual(last_token, Token(LITERAL, "resolved"))
예제 #8
0
    def test_complex(self):
        text = "CF_Tags  ~  release-on-prod & Status != resolved"
        lexer = Lexer(text)
        token = lexer.get_next_token()
        self.assertEqual(token, Token(LITERAL, 'CF_Tags'))

        token = lexer.get_next_token()
        self.assertEqual(token, Token(MATCHES, '~'))

        token = lexer.get_next_token()
        self.assertEqual(token, Token(LITERAL, 'release-on-prod'))

        token = lexer.get_next_token()
        self.assertEqual(token, Token(AND, '&'))

        token = lexer.get_next_token()
        self.assertEqual(token, Token(LITERAL, 'Status'))

        token = lexer.get_next_token()
        self.assertEqual(token, Token(IS_NOT, '!='))

        token = lexer.get_next_token()
        self.assertEqual(token, Token(LITERAL, 'resolved'))
예제 #9
0
 def test_string_escaped_literal(self):
     text = r"'there\'s a text'"
     lexer = Lexer(text)
     token = lexer.get_next_token()
     self.assertEqual(token, Token(STRING_LITERAL, "there's a text"))
예제 #10
0
 def test_string_literal(self):
     text = '"new status for example"'
     lexer = Lexer(text)
     token = lexer.get_next_token()
     self.assertEqual(token, Token(STRING_LITERAL,
                                   "new status for example"))
예제 #11
0
 def test_blank_string_literal(self):
     text = '""'
     lexer = Lexer(text)
     token = lexer.get_next_token()
     self.assertEqual(token, Token(STRING_LITERAL, ''))