Beispiel #1
0
 def test_parse(self):
     parser = Parser()
     tokens = [
         Token(Token.STR, 'asd'),
         Token(Token.LBRS),
         Token(Token.NUM, '1990'),
         Token(Token.RBRS),
         Token(Token.STR, ' '),
         Token(Token.LBRS),
         Token(Token.NUM, '2'),
         Token(Token.RBRS),
         Token(Token.STR, ' #^& '),
         Token(Token.LBRS),
         Token(Token.NUM, '33'),
         Token(Token.MINUS),
         Token(Token.NUM, '44'),
         Token(Token.RBRS),
     ]
     expected_nodes = [
         Node(Node.STR, value='asd'),
         Node(Node.SLICE, stop=1990),
         Node(Node.STR, value=' '),
         Node(Node.SLICE, stop=2),
         Node(Node.STR, value=' #^& '),
         Node(Node.SLICE, start=33, stop=44),
     ]
     nodes = parser.parse(tokens)
     self.assertEqual(expected_nodes, nodes)
Beispiel #2
0
    def test_parse_with_error_unexpected_token(self):
        parser = Parser()

        # token != Token.STR ot token != Token.LBRS
        test_tokens = [Token(Token.NUM, '1')]
        with self.assertRaises(ParseError) as cm:
            parser.parse(test_tokens)
        self.assertEqual(
            u"Unexpected token Token(Number, '1') after None, pos=0",
            cm.exception.message)

        test_tokens = [Token(Token.LBRS), Token(Token.STR, 'a')]
        with self.assertRaises(ParseError) as cm:
            parser.parse(test_tokens)
        self.assertEqual(
            u"Unexpected token Token(String, 'a') after Token(LeftBracketSquare), pos=1",
            cm.exception.message)

        test_tokens = [
            Token(Token.LBRS), Token(Token.NUM, '1'), Token(Token.STR, 'a')]
        with self.assertRaises(ParseError) as cm:
            parser.parse(test_tokens)
        self.assertEqual(
            u"Unexpected token Token(String, 'a') after Token(Number, '1'), pos=2",
            cm.exception.message)

        test_tokens = [Token(Token.LBRS), Token(Token.NUM, '1'), Token(Token.MINUS), Token(Token.STR, 'a')]
        with self.assertRaises(ParseError) as cm:
            parser.parse(test_tokens)
        self.assertEqual(
            u"Unexpected token Token(String, 'a') after Token(Minus), pos=3",
            cm.exception.message)

        test_tokens = [
            Token(Token.LBRS), Token(Token.NUM, '1'),
            Token(Token.MINUS), Token(Token.NUM, '2'), Token(Token.STR, 'a')]
        with self.assertRaises(ParseError) as cm:
            parser.parse(test_tokens)
        self.assertEqual(
            u"Unexpected token Token(String, 'a') after Token(Number, '2'), pos=4",
            cm.exception.message)
Beispiel #3
0
    def test_parse_with_error_unexpected_end(self):
        parser = Parser()
        test_tokens = [Token(Token.LBRS)]
        with self.assertRaises(ParseError) as cm:
            parser.parse(test_tokens)
        self.assertEqual(u"Unexpected end of tokens", cm.exception.message)

        test_tokens = [Token(Token.LBRS), Token(Token.NUM, '1')]
        with self.assertRaises(ParseError) as cm:
            parser.parse(test_tokens)
        self.assertEqual(u"Unexpected end of tokens", cm.exception.message)

        test_tokens = [
            Token(Token.LBRS), Token(Token.NUM, '1'), Token(Token.MINUS)]
        with self.assertRaises(ParseError) as cm:
            parser.parse(test_tokens)
        self.assertEqual(u"Unexpected end of tokens", cm.exception.message)

        test_tokens = [
            Token(Token.LBRS), Token(Token.NUM, '1'),
            Token(Token.MINUS), Token(Token.NUM, '2')]
        with self.assertRaises(ParseError) as cm:
            parser.parse(test_tokens)
        self.assertEqual(u"Unexpected end of tokens", cm.exception.message)