Fix bugs in handling tokens that overlap with separators

This commit is contained in:
Max Brunsfeld 2019-01-15 12:13:42 -08:00
parent b799b46f79
commit d8ab36b2a5
6 changed files with 98 additions and 56 deletions

View file

@ -75,30 +75,10 @@ pub fn run_tests_at_path(
println!("{} failures:", failures.len())
}
println!(
"\n{} / {}",
Colour::Green.paint("expected"),
Colour::Red.paint("actual")
);
print_diff_key();
for (i, (name, actual, expected)) in failures.iter().enumerate() {
println!("\n {}. {}:", i + 1, name);
let changeset = Changeset::new(actual, expected, " ");
print!(" ");
for diff in &changeset.diffs {
match diff {
Difference::Same(part) => {
print!("{}{}", part, changeset.split);
}
Difference::Add(part) => {
print!("{}{}", Colour::Green.paint(part), changeset.split);
}
Difference::Rem(part) => {
print!("{}{}", Colour::Red.paint(part), changeset.split);
}
}
}
println!("");
print_diff(actual, expected);
}
}
@ -106,6 +86,33 @@ pub fn run_tests_at_path(
Ok(())
}
pub fn print_diff_key() {
println!(
"\n{} / {}",
Colour::Green.paint("expected"),
Colour::Red.paint("actual")
);
}
pub fn print_diff(actual: &String, expected: &String) {
let changeset = Changeset::new(actual, expected, " ");
print!(" ");
for diff in &changeset.diffs {
match diff {
Difference::Same(part) => {
print!("{}{}", part, changeset.split);
}
Difference::Add(part) => {
print!("{}{}", Colour::Green.paint(part), changeset.split);
}
Difference::Rem(part) => {
print!("{}{}", Colour::Red.paint(part), changeset.split);
}
}
}
println!("");
}
fn run_tests(
parser: &mut Parser,
test_entry: TestEntry,