| 
1 | 1 | use super::*;  | 
2 | 2 | 
 
  | 
 | 3 | +use expect_test::{expect, Expect};  | 
 | 4 | + | 
3 | 5 | fn check_raw_str(s: &str, expected_hashes: u16, expected_err: Option<RawStrError>) {  | 
4 | 6 |     let s = &format!("r{}", s);  | 
5 | 7 |     let mut cursor = Cursor::new(s);  | 
@@ -120,3 +122,46 @@ fn test_shebang_followed_by_attrib() {  | 
120 | 122 |     let input = "#!/bin/rust-scripts\n#![allow_unused(true)]";  | 
121 | 123 |     assert_eq!(strip_shebang(input), Some(19));  | 
122 | 124 | }  | 
 | 125 | + | 
 | 126 | +fn check_lexing(src: &str, expect: Expect) {  | 
 | 127 | +    let actual: String = tokenize(src).map(|token| format!("{:?}\n", token)).collect();  | 
 | 128 | +    expect.assert_eq(&actual)  | 
 | 129 | +}  | 
 | 130 | + | 
 | 131 | +#[test]  | 
 | 132 | +fn comment_flavors() {  | 
 | 133 | +    check_lexing(  | 
 | 134 | +        r"  | 
 | 135 | +// line  | 
 | 136 | +//// line as well  | 
 | 137 | +/// outer doc line  | 
 | 138 | +//! inner doc line  | 
 | 139 | +/* block */  | 
 | 140 | +/**/  | 
 | 141 | +/*** also block */  | 
 | 142 | +/** outer doc block */  | 
 | 143 | +/*! inner doc block */  | 
 | 144 | +",  | 
 | 145 | +        expect![[r#"  | 
 | 146 | +                Token { kind: Whitespace, len: 1 }  | 
 | 147 | +                Token { kind: LineComment { doc_style: None }, len: 7 }  | 
 | 148 | +                Token { kind: Whitespace, len: 1 }  | 
 | 149 | +                Token { kind: LineComment { doc_style: None }, len: 17 }  | 
 | 150 | +                Token { kind: Whitespace, len: 1 }  | 
 | 151 | +                Token { kind: LineComment { doc_style: Some(Outer) }, len: 18 }  | 
 | 152 | +                Token { kind: Whitespace, len: 1 }  | 
 | 153 | +                Token { kind: LineComment { doc_style: Some(Inner) }, len: 18 }  | 
 | 154 | +                Token { kind: Whitespace, len: 1 }  | 
 | 155 | +                Token { kind: BlockComment { doc_style: None, terminated: true }, len: 11 }  | 
 | 156 | +                Token { kind: Whitespace, len: 1 }  | 
 | 157 | +                Token { kind: BlockComment { doc_style: None, terminated: true }, len: 4 }  | 
 | 158 | +                Token { kind: Whitespace, len: 1 }  | 
 | 159 | +                Token { kind: BlockComment { doc_style: None, terminated: true }, len: 18 }  | 
 | 160 | +                Token { kind: Whitespace, len: 1 }  | 
 | 161 | +                Token { kind: BlockComment { doc_style: Some(Outer), terminated: true }, len: 22 }  | 
 | 162 | +                Token { kind: Whitespace, len: 1 }  | 
 | 163 | +                Token { kind: BlockComment { doc_style: Some(Inner), terminated: true }, len: 22 }  | 
 | 164 | +                Token { kind: Whitespace, len: 1 }  | 
 | 165 | +            "#]],  | 
 | 166 | +    )  | 
 | 167 | +}  | 
0 commit comments