aboutsummaryrefslogtreecommitdiff
path: root/tests/lexer.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/lexer.rs')
-rw-r--r--tests/lexer.rs12
1 files changed, 9 insertions, 3 deletions
diff --git a/tests/lexer.rs b/tests/lexer.rs
index a3c8916b1..6a9bab66b 100644
--- a/tests/lexer.rs
+++ b/tests/lexer.rs
@@ -31,6 +31,7 @@ fn lexer_test_cases() -> Vec<PathBuf> {
31 acc.push(path); 31 acc.push(path);
32 } 32 }
33 } 33 }
34 acc.sort();
34 acc 35 acc
35} 36}
36 37
@@ -38,7 +39,7 @@ fn lexer_test_case(path: &Path) {
38 let actual = { 39 let actual = {
39 let text = file::get_text(path).unwrap(); 40 let text = file::get_text(path).unwrap();
40 let tokens = tokenize(&text); 41 let tokens = tokenize(&text);
41 dump_tokens(&tokens) 42 dump_tokens(&tokens, &text)
42 }; 43 };
43 let expected = file::get_text(&path.with_extension("txt")).unwrap(); 44 let expected = file::get_text(&path.with_extension("txt")).unwrap();
44 let expected = expected.as_str(); 45 let expected = expected.as_str();
@@ -64,10 +65,15 @@ fn tokenize(text: &str) -> Vec<Token> {
64 acc 65 acc
65} 66}
66 67
67fn dump_tokens(tokens: &[Token]) -> String { 68fn dump_tokens(tokens: &[Token], text: &str) -> String {
68 let mut acc = String::new(); 69 let mut acc = String::new();
70 let mut offset = 0;
69 for token in tokens { 71 for token in tokens {
70 write!(acc, "{:?} {}\n", token.kind, token.len).unwrap() 72 let len: u32 = token.len.into();
73 let len = len as usize;
74 let token_text = &text[offset..offset + len];
75 offset += len;
76 write!(acc, "{:?} {} {:?}\n", token.kind, token.len, token_text).unwrap()
71 } 77 }
72 acc 78 acc
73} \ No newline at end of file 79} \ No newline at end of file