Add suport for imperial fluid ounces
This commit is contained in:
parent
f9975903aa
commit
bec9e494b5
|
@ -115,6 +115,11 @@ fn get_conversion(unit: NonMetric) -> Conversion {
|
|||
from: 2.0 * 4.0 * imperial_gallon_from,
|
||||
to: MetricQuantity { amount: imperial_gallon_to, unit: Metric::Litre },
|
||||
},
|
||||
NonMetric::ImperialFluidOunce => Conversion {
|
||||
offset: 0.0,
|
||||
from: 20.0 * 2.0 * 4.0 * imperial_gallon_from,
|
||||
to: MetricQuantity { amount: imperial_gallon_to, unit: Metric::Litre },
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -189,6 +194,7 @@ mod test {
|
|||
Test(NonMetric::ImperialGallon, 4.54609),
|
||||
Test(NonMetric::ImperialQuart, 1.1365225),
|
||||
Test(NonMetric::ImperialPint, 0.56826125),
|
||||
Test(NonMetric::ImperialFluidOunce, 0.0284130625),
|
||||
];
|
||||
run_tests(&tests, Metric::Litre);
|
||||
}
|
||||
|
|
|
@ -88,6 +88,7 @@ fn unit_to_name(unit: NonMetric) -> &'static str {
|
|||
NonMetric::ImperialGallon => "imperial gallons",
|
||||
NonMetric::ImperialQuart => "imperial quarts",
|
||||
NonMetric::ImperialPint => "imperial pints",
|
||||
NonMetric::ImperialFluidOunce => "imperial fluid ounces",
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -133,5 +134,6 @@ mod test {
|
|||
assert_eq!(run("1 imp gal"), Ok("4.546 l".to_string()));
|
||||
assert_eq!(run("1 imp qt"), Ok("1.137 l".to_string()));
|
||||
assert_eq!(run("1 imp pt"), Ok("5.683 dl".to_string()));
|
||||
assert_eq!(run("1 imp fl oz"), Ok("2.841 cl".to_string()));
|
||||
}
|
||||
}
|
||||
|
|
12
src/parse.rs
12
src/parse.rs
|
@ -198,6 +198,12 @@ fn parse_unit(input: String) -> Result<NonMetric, ParseError> {
|
|||
"imperial pints" => Ok(NonMetric::ImperialPint),
|
||||
"imp pt" => Ok(NonMetric::ImperialPint),
|
||||
|
||||
"imperial fluid ounce" => Ok(NonMetric::ImperialFluidOunce),
|
||||
"imperial fluid ounces" => Ok(NonMetric::ImperialFluidOunce),
|
||||
"imp fl oz" => Ok(NonMetric::ImperialFluidOunce),
|
||||
"imp fl. oz." => Ok(NonMetric::ImperialFluidOunce),
|
||||
"imp oz. fl." => Ok(NonMetric::ImperialFluidOunce),
|
||||
|
||||
_ => Err(ParseError::UnknownUnit(input)),
|
||||
}
|
||||
}
|
||||
|
@ -445,6 +451,12 @@ mod test {
|
|||
assert_eq!(parse_unit("imperial pints".to_string()), Ok(NonMetric::ImperialPint));
|
||||
assert_eq!(parse_unit("imp pt".to_string()), Ok(NonMetric::ImperialPint));
|
||||
|
||||
assert_eq!(parse_unit("imperial fluid ounce".to_string()), Ok(NonMetric::ImperialFluidOunce));
|
||||
assert_eq!(parse_unit("imperial fluid ounces".to_string()), Ok(NonMetric::ImperialFluidOunce));
|
||||
assert_eq!(parse_unit("imp fl oz".to_string()), Ok(NonMetric::ImperialFluidOunce));
|
||||
assert_eq!(parse_unit("imp fl. oz.".to_string()), Ok(NonMetric::ImperialFluidOunce));
|
||||
assert_eq!(parse_unit("imp oz. fl.".to_string()), Ok(NonMetric::ImperialFluidOunce));
|
||||
|
||||
// Unknown unit
|
||||
assert_eq!(parse_unit("hutenosa".to_string()), Err(ParseError::UnknownUnit("hutenosa".to_string())));
|
||||
}
|
||||
|
|
|
@ -33,6 +33,7 @@ pub enum NonMetric {
|
|||
ImperialGallon,
|
||||
ImperialQuart,
|
||||
ImperialPint,
|
||||
ImperialFluidOunce,
|
||||
}
|
||||
|
||||
#[derive(Clone, Copy, Debug, PartialEq)]
|
||||
|
|
Loading…
Reference in New Issue