|  | 
| 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