cargo clippy + fmt
This commit is contained in:
@@ -1,159 +1,159 @@
|
||||
use parsing::{AutoComplete, Hint, Movement};
|
||||
|
||||
enum Action<'a> {
|
||||
AssertIndex(usize),
|
||||
AssertString(&'a str),
|
||||
AssertHint(&'a str),
|
||||
SetString(&'a str),
|
||||
Move(Movement),
|
||||
AssertIndex(usize),
|
||||
AssertString(&'a str),
|
||||
AssertHint(&'a str),
|
||||
SetString(&'a str),
|
||||
Move(Movement),
|
||||
}
|
||||
use Action::*;
|
||||
|
||||
fn ac_tester(actions: &[Action]) {
|
||||
let mut ac = AutoComplete::default();
|
||||
for action in actions.iter() {
|
||||
match action {
|
||||
AssertIndex(target_i) => {
|
||||
if &ac.i != target_i {
|
||||
panic!(
|
||||
"AssertIndex failed: Current: '{}' Expected: '{}'",
|
||||
ac.i, target_i
|
||||
)
|
||||
}
|
||||
}
|
||||
AssertString(target_string) => {
|
||||
if &ac.string != target_string {
|
||||
panic!(
|
||||
"AssertString failed: Current: '{}' Expected: '{}'",
|
||||
ac.string, target_string
|
||||
)
|
||||
}
|
||||
}
|
||||
AssertHint(target_hint) => match ac.hint {
|
||||
Hint::None => {
|
||||
if !target_hint.is_empty() {
|
||||
panic!(
|
||||
"AssertHint failed on `Hint::None`: Expected: {}",
|
||||
target_hint
|
||||
);
|
||||
}
|
||||
}
|
||||
Hint::Many(hints) => {
|
||||
let hint = hints[ac.i];
|
||||
if &hint != target_hint {
|
||||
panic!(
|
||||
"AssertHint failed on `Hint::Many`: Current: '{}' (index: {}) Expected: '{}'",
|
||||
hint, ac.i, target_hint
|
||||
)
|
||||
}
|
||||
}
|
||||
Hint::Single(hint) => {
|
||||
if hint != target_hint {
|
||||
panic!(
|
||||
"AssertHint failed on `Hint::Single`: Current: '{}' Expected: '{}'",
|
||||
hint, target_hint
|
||||
)
|
||||
}
|
||||
}
|
||||
},
|
||||
SetString(target_string) => {
|
||||
ac.update_string(target_string);
|
||||
}
|
||||
Move(target_movement) => {
|
||||
ac.register_movement(target_movement);
|
||||
}
|
||||
}
|
||||
}
|
||||
let mut ac = AutoComplete::default();
|
||||
for action in actions.iter() {
|
||||
match action {
|
||||
AssertIndex(target_i) => {
|
||||
if &ac.i != target_i {
|
||||
panic!(
|
||||
"AssertIndex failed: Current: '{}' Expected: '{}'",
|
||||
ac.i, target_i
|
||||
)
|
||||
}
|
||||
}
|
||||
AssertString(target_string) => {
|
||||
if &ac.string != target_string {
|
||||
panic!(
|
||||
"AssertString failed: Current: '{}' Expected: '{}'",
|
||||
ac.string, target_string
|
||||
)
|
||||
}
|
||||
}
|
||||
AssertHint(target_hint) => match ac.hint {
|
||||
Hint::None => {
|
||||
if !target_hint.is_empty() {
|
||||
panic!(
|
||||
"AssertHint failed on `Hint::None`: Expected: {}",
|
||||
target_hint
|
||||
);
|
||||
}
|
||||
}
|
||||
Hint::Many(hints) => {
|
||||
let hint = hints[ac.i];
|
||||
if &hint != target_hint {
|
||||
panic!(
|
||||
"AssertHint failed on `Hint::Many`: Current: '{}' (index: {}) Expected: '{}'",
|
||||
hint, ac.i, target_hint
|
||||
)
|
||||
}
|
||||
}
|
||||
Hint::Single(hint) => {
|
||||
if hint != target_hint {
|
||||
panic!(
|
||||
"AssertHint failed on `Hint::Single`: Current: '{}' Expected: '{}'",
|
||||
hint, target_hint
|
||||
)
|
||||
}
|
||||
}
|
||||
},
|
||||
SetString(target_string) => {
|
||||
ac.update_string(target_string);
|
||||
}
|
||||
Move(target_movement) => {
|
||||
ac.register_movement(target_movement);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn single() {
|
||||
ac_tester(&[
|
||||
SetString(""),
|
||||
AssertHint("x^2"),
|
||||
Move(Movement::Up),
|
||||
AssertIndex(0),
|
||||
AssertString(""),
|
||||
AssertHint("x^2"),
|
||||
Move(Movement::Down),
|
||||
AssertIndex(0),
|
||||
AssertString(""),
|
||||
AssertHint("x^2"),
|
||||
Move(Movement::Complete),
|
||||
AssertString("x^2"),
|
||||
AssertHint(""),
|
||||
AssertIndex(0),
|
||||
]);
|
||||
ac_tester(&[
|
||||
SetString(""),
|
||||
AssertHint("x^2"),
|
||||
Move(Movement::Up),
|
||||
AssertIndex(0),
|
||||
AssertString(""),
|
||||
AssertHint("x^2"),
|
||||
Move(Movement::Down),
|
||||
AssertIndex(0),
|
||||
AssertString(""),
|
||||
AssertHint("x^2"),
|
||||
Move(Movement::Complete),
|
||||
AssertString("x^2"),
|
||||
AssertHint(""),
|
||||
AssertIndex(0),
|
||||
]);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn multi() {
|
||||
ac_tester(&[
|
||||
SetString("s"),
|
||||
AssertHint("in("),
|
||||
Move(Movement::Up),
|
||||
AssertIndex(3),
|
||||
AssertString("s"),
|
||||
AssertHint("ignum("),
|
||||
Move(Movement::Down),
|
||||
AssertIndex(0),
|
||||
AssertString("s"),
|
||||
AssertHint("in("),
|
||||
Move(Movement::Down),
|
||||
AssertIndex(1),
|
||||
AssertString("s"),
|
||||
AssertHint("qrt("),
|
||||
Move(Movement::Up),
|
||||
AssertIndex(0),
|
||||
AssertString("s"),
|
||||
AssertHint("in("),
|
||||
Move(Movement::Complete),
|
||||
AssertString("sin("),
|
||||
AssertHint(")"),
|
||||
AssertIndex(0),
|
||||
]);
|
||||
ac_tester(&[
|
||||
SetString("s"),
|
||||
AssertHint("in("),
|
||||
Move(Movement::Up),
|
||||
AssertIndex(3),
|
||||
AssertString("s"),
|
||||
AssertHint("ignum("),
|
||||
Move(Movement::Down),
|
||||
AssertIndex(0),
|
||||
AssertString("s"),
|
||||
AssertHint("in("),
|
||||
Move(Movement::Down),
|
||||
AssertIndex(1),
|
||||
AssertString("s"),
|
||||
AssertHint("qrt("),
|
||||
Move(Movement::Up),
|
||||
AssertIndex(0),
|
||||
AssertString("s"),
|
||||
AssertHint("in("),
|
||||
Move(Movement::Complete),
|
||||
AssertString("sin("),
|
||||
AssertHint(")"),
|
||||
AssertIndex(0),
|
||||
]);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn none() {
|
||||
// string that should give no hints
|
||||
let random = "qwert987gybhj";
|
||||
assert_eq!(parsing::generate_hint(random), &Hint::None);
|
||||
// string that should give no hints
|
||||
let random = "qwert987gybhj";
|
||||
assert_eq!(parsing::generate_hint(random), &Hint::None);
|
||||
|
||||
ac_tester(&[
|
||||
SetString(random),
|
||||
AssertHint(""),
|
||||
Move(Movement::Up),
|
||||
AssertIndex(0),
|
||||
AssertString(random),
|
||||
AssertHint(""),
|
||||
Move(Movement::Down),
|
||||
AssertIndex(0),
|
||||
AssertString(random),
|
||||
AssertHint(""),
|
||||
Move(Movement::Complete),
|
||||
AssertString(random),
|
||||
AssertHint(""),
|
||||
AssertIndex(0),
|
||||
]);
|
||||
ac_tester(&[
|
||||
SetString(random),
|
||||
AssertHint(""),
|
||||
Move(Movement::Up),
|
||||
AssertIndex(0),
|
||||
AssertString(random),
|
||||
AssertHint(""),
|
||||
Move(Movement::Down),
|
||||
AssertIndex(0),
|
||||
AssertString(random),
|
||||
AssertHint(""),
|
||||
Move(Movement::Complete),
|
||||
AssertString(random),
|
||||
AssertHint(""),
|
||||
AssertIndex(0),
|
||||
]);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn parens() {
|
||||
ac_tester(&[
|
||||
SetString("sin(x"),
|
||||
AssertHint(")"),
|
||||
Move(Movement::Up),
|
||||
AssertIndex(0),
|
||||
AssertString("sin(x"),
|
||||
AssertHint(")"),
|
||||
Move(Movement::Down),
|
||||
AssertIndex(0),
|
||||
AssertString("sin(x"),
|
||||
AssertHint(")"),
|
||||
Move(Movement::Complete),
|
||||
AssertString("sin(x)"),
|
||||
AssertHint(""),
|
||||
AssertIndex(0),
|
||||
]);
|
||||
ac_tester(&[
|
||||
SetString("sin(x"),
|
||||
AssertHint(")"),
|
||||
Move(Movement::Up),
|
||||
AssertIndex(0),
|
||||
AssertString("sin(x"),
|
||||
AssertHint(")"),
|
||||
Move(Movement::Down),
|
||||
AssertIndex(0),
|
||||
AssertString("sin(x"),
|
||||
AssertHint(")"),
|
||||
Move(Movement::Complete),
|
||||
AssertString("sin(x)"),
|
||||
AssertHint(""),
|
||||
AssertIndex(0),
|
||||
]);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user