|
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