Simplify parse::test::ambiguous_units
This commit is contained in:
parent
f354fbe555
commit
a297d87ff1
96
src/parse.rs
96
src/parse.rs
|
@ -635,103 +635,45 @@ mod test {
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn ambiguous_units() {
|
fn ambiguous_units() {
|
||||||
assert_eq!(
|
test_ambiguous_units(NonMetric::ImperialFluidOunce, NonMetric::USFluidOunce, &[
|
||||||
parse_unit("fluid ounce".to_string()),
|
|
||||||
Err(ParseError::AmbiguousUnit("fluid ounce".to_string(), "imperial", "US"))
|
|
||||||
);
|
|
||||||
assert_eq!(
|
|
||||||
parse_unit("fluid ounces".to_string()),
|
|
||||||
Err(ParseError::AmbiguousUnit("fluid ounces".to_string(), "imperial", "US"))
|
|
||||||
);
|
|
||||||
assert_eq!(
|
|
||||||
parse_unit("fl oz".to_string()),
|
|
||||||
Err(ParseError::AmbiguousUnit("fl oz".to_string(), "imp", "US"))
|
|
||||||
);
|
|
||||||
assert_eq!(
|
|
||||||
parse_unit("fl. oz.".to_string()),
|
|
||||||
Err(ParseError::AmbiguousUnit("fl. oz.".to_string(), "imp", "US"))
|
|
||||||
);
|
|
||||||
assert_eq!(
|
|
||||||
parse_unit("oz. fl.".to_string()),
|
|
||||||
Err(ParseError::AmbiguousUnit("oz. fl.".to_string(), "imp", "US"))
|
|
||||||
);
|
|
||||||
|
|
||||||
assert_eq!(
|
|
||||||
parse_unit("pint".to_string()),
|
|
||||||
Err(ParseError::AmbiguousUnit("pint".to_string(), "imperial", "US"))
|
|
||||||
);
|
|
||||||
assert_eq!(
|
|
||||||
parse_unit("pints".to_string()),
|
|
||||||
Err(ParseError::AmbiguousUnit("pints".to_string(), "imperial", "US"))
|
|
||||||
);
|
|
||||||
assert_eq!(
|
|
||||||
parse_unit("pt".to_string()),
|
|
||||||
Err(ParseError::AmbiguousUnit("pt".to_string(), "imp", "US"))
|
|
||||||
);
|
|
||||||
assert_eq!(
|
|
||||||
parse_unit("p".to_string()),
|
|
||||||
Err(ParseError::AmbiguousUnit("p".to_string(), "imp", "US"))
|
|
||||||
);
|
|
||||||
|
|
||||||
assert_eq!(
|
|
||||||
parse_unit("quart".to_string()),
|
|
||||||
Err(ParseError::AmbiguousUnit("quart".to_string(), "imperial", "US"))
|
|
||||||
);
|
|
||||||
assert_eq!(
|
|
||||||
parse_unit("quarts".to_string()),
|
|
||||||
Err(ParseError::AmbiguousUnit("quarts".to_string(), "imperial", "US"))
|
|
||||||
);
|
|
||||||
assert_eq!(
|
|
||||||
parse_unit("qt".to_string()),
|
|
||||||
Err(ParseError::AmbiguousUnit("qt".to_string(), "imp", "US"))
|
|
||||||
);
|
|
||||||
|
|
||||||
assert_eq!(
|
|
||||||
parse_unit("gallon".to_string()),
|
|
||||||
Err(ParseError::AmbiguousUnit("gallon".to_string(), "imperial", "US"))
|
|
||||||
);
|
|
||||||
assert_eq!(
|
|
||||||
parse_unit("gallons".to_string()),
|
|
||||||
Err(ParseError::AmbiguousUnit("gallons".to_string(), "imperial", "US"))
|
|
||||||
);
|
|
||||||
assert_eq!(
|
|
||||||
parse_unit("gal".to_string()),
|
|
||||||
Err(ParseError::AmbiguousUnit("gal".to_string(), "imp", "US"))
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn ambiguous_unit_suggestions() {
|
|
||||||
let ambiguous_units = [
|
|
||||||
"fluid ounce",
|
"fluid ounce",
|
||||||
"fluid ounces",
|
"fluid ounces",
|
||||||
"fl oz",
|
"fl oz",
|
||||||
"fl. oz.",
|
"fl. oz.",
|
||||||
"oz. fl.",
|
"oz. fl.",
|
||||||
|
]);
|
||||||
|
|
||||||
|
test_ambiguous_units(NonMetric::ImperialPint, NonMetric::USLiquidPint, &[
|
||||||
"pint",
|
"pint",
|
||||||
"pints",
|
"pints",
|
||||||
"pt",
|
"pt",
|
||||||
"p",
|
"p",
|
||||||
|
]);
|
||||||
|
|
||||||
|
test_ambiguous_units(NonMetric::ImperialQuart, NonMetric::USLiquidQuart, &[
|
||||||
"quart",
|
"quart",
|
||||||
"quarts",
|
"quarts",
|
||||||
"qt",
|
"qt",
|
||||||
|
]);
|
||||||
|
|
||||||
|
test_ambiguous_units(NonMetric::ImperialGallon, NonMetric::USGallon, &[
|
||||||
"gallon",
|
"gallon",
|
||||||
"gallons",
|
"gallons",
|
||||||
"gal",
|
"gal",
|
||||||
];
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
for unit in ambiguous_units {
|
fn test_ambiguous_units(unit1: NonMetric, unit2: NonMetric, spellings: &[&str]) {
|
||||||
let parsed = parse_unit(unit.to_string());
|
for spelling in spellings {
|
||||||
if let Err(ParseError::AmbiguousUnit(unit, prefix1, prefix2)) = parsed {
|
let parsed = parse_unit(spelling.to_string());
|
||||||
let suggestion1 = format!("{prefix1} {unit}");
|
if let Err(ParseError::AmbiguousUnit(unit_name, prefix1, prefix2)) = parsed {
|
||||||
let suggestion2 = format!("{prefix2} {unit}");
|
assert_eq!(&unit_name, spelling);
|
||||||
assert!(parse_unit(suggestion1).is_ok());
|
let suggestion1 = format!("{prefix1} {unit_name}");
|
||||||
assert!(parse_unit(suggestion2).is_ok());
|
let suggestion2 = format!("{prefix2} {unit_name}");
|
||||||
|
assert_eq!(parse_unit(suggestion1), Ok(unit1));
|
||||||
|
assert_eq!(parse_unit(suggestion2), Ok(unit2));
|
||||||
} else {
|
} else {
|
||||||
unreachable!();
|
panic!("units passed to test_ambiguous_units() must be ambiguous");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue