fn tokenize_nested_multiline_comment()

in src/tokenizer.rs [3155:3203]


    fn tokenize_nested_multiline_comment() {
        let dialect = GenericDialect {};
        let test_cases = vec![
            (
                "0/*multi-line\n* \n/* comment \n /*comment*/*/ */ /comment*/1",
                vec![
                    Token::Number("0".to_string(), false),
                    Token::Whitespace(Whitespace::MultiLineComment(
                        "multi-line\n* \n/* comment \n /*comment*/*/ ".into(),
                    )),
                    Token::Whitespace(Whitespace::Space),
                    Token::Div,
                    Token::Word(Word {
                        value: "comment".to_string(),
                        quote_style: None,
                        keyword: Keyword::COMMENT,
                    }),
                    Token::Mul,
                    Token::Div,
                    Token::Number("1".to_string(), false),
                ],
            ),
            (
                "0/*multi-line\n* \n/* comment \n /*comment/**/ */ /comment*/*/1",
                vec![
                    Token::Number("0".to_string(), false),
                    Token::Whitespace(Whitespace::MultiLineComment(
                        "multi-line\n* \n/* comment \n /*comment/**/ */ /comment*/".into(),
                    )),
                    Token::Number("1".to_string(), false),
                ],
            ),
            (
                "SELECT 1/* a /* b */ c */0",
                vec![
                    Token::make_keyword("SELECT"),
                    Token::Whitespace(Whitespace::Space),
                    Token::Number("1".to_string(), false),
                    Token::Whitespace(Whitespace::MultiLineComment(" a /* b */ c ".to_string())),
                    Token::Number("0".to_string(), false),
                ],
            ),
        ];

        for (sql, expected) in test_cases {
            let tokens = Tokenizer::new(&dialect, sql).tokenize().unwrap();
            compare(expected, tokens);
        }
    }