Add support for US liquid quarts

This commit is contained in:
Juhani Krekelä 2023-05-31 17:42:18 +03:00
parent 8a3002a8ad
commit 6acd8b0e82
4 changed files with 31 additions and 0 deletions

View File

@ -123,6 +123,11 @@ fn get_conversion(unit: NonMetric) -> Conversion {
from: imperial_gallon_from,
to: MetricQuantity { amount: imperial_gallon_to, unit: Metric::Litre },
},
NonMetric::USLiquidQuart => Conversion {
offset: 0.0,
from: 4.0 * us_gallon_from,
to: MetricQuantity { amount: us_gallon_to, unit: Metric::Litre },
},
NonMetric::USGallon => Conversion {
offset: 0.0,
from: us_gallon_from,
@ -203,6 +208,7 @@ mod test {
Test(NonMetric::ImperialPint, 0.56826125),
Test(NonMetric::ImperialQuart, 1.1365225),
Test(NonMetric::ImperialGallon, 4.54609),
Test(NonMetric::USLiquidQuart, 0.946352946),
Test(NonMetric::USGallon, 3.785411784),
];
run_tests(&tests, Metric::Litre);

View File

@ -89,6 +89,7 @@ fn unit_to_name(unit: NonMetric) -> &'static str {
NonMetric::ImperialPint => "imperial pints",
NonMetric::ImperialQuart => "imperial quarts",
NonMetric::ImperialGallon => "imperial gallons",
NonMetric::USLiquidQuart => "US liquid quarts",
NonMetric::USGallon => "US gallons",
}
}
@ -136,6 +137,7 @@ mod test {
assert_eq!(run("1 imp pt"), Ok("5.683 dl".to_string()));
assert_eq!(run("1 imp qt"), Ok("1.137 l".to_string()));
assert_eq!(run("1 imp gal"), Ok("4.546 l".to_string()));
assert_eq!(run("1 US qt"), Ok("9.464 dl".to_string()));
assert_eq!(run("1 US gal"), Ok("3.785 l".to_string()));
}
}

View File

@ -204,6 +204,17 @@ fn parse_unit(input: String) -> Result<NonMetric, ParseError> {
"imperial gallons" => Ok(NonMetric::ImperialGallon),
"imp gal" => Ok(NonMetric::ImperialGallon),
"US liquid quart" => Ok(NonMetric::USLiquidQuart),
"US liquid quarts" => Ok(NonMetric::USLiquidQuart),
"US quart" => Ok(NonMetric::USLiquidQuart),
"US quarts" => Ok(NonMetric::USLiquidQuart),
"US qt" => Ok(NonMetric::USLiquidQuart),
"us liquid quart" => Ok(NonMetric::USLiquidQuart),
"us liquid quarts" => Ok(NonMetric::USLiquidQuart),
"us quart" => Ok(NonMetric::USLiquidQuart),
"us quarts" => Ok(NonMetric::USLiquidQuart),
"us qt" => Ok(NonMetric::USLiquidQuart),
"US gallon" => Ok(NonMetric::USGallon),
"US gallons" => Ok(NonMetric::USGallon),
"US gal" => Ok(NonMetric::USGallon),
@ -464,6 +475,17 @@ mod test {
assert_eq!(parse_unit("imperial gallons".to_string()), Ok(NonMetric::ImperialGallon));
assert_eq!(parse_unit("imp gal".to_string()), Ok(NonMetric::ImperialGallon));
assert_eq!(parse_unit("US liquid quart".to_string()), Ok(NonMetric::USLiquidQuart));
assert_eq!(parse_unit("US liquid quarts".to_string()), Ok(NonMetric::USLiquidQuart));
assert_eq!(parse_unit("US quart".to_string()), Ok(NonMetric::USLiquidQuart));
assert_eq!(parse_unit("US quarts".to_string()), Ok(NonMetric::USLiquidQuart));
assert_eq!(parse_unit("US qt".to_string()), Ok(NonMetric::USLiquidQuart));
assert_eq!(parse_unit("us liquid quart".to_string()), Ok(NonMetric::USLiquidQuart));
assert_eq!(parse_unit("us liquid quarts".to_string()), Ok(NonMetric::USLiquidQuart));
assert_eq!(parse_unit("us quart".to_string()), Ok(NonMetric::USLiquidQuart));
assert_eq!(parse_unit("us quarts".to_string()), Ok(NonMetric::USLiquidQuart));
assert_eq!(parse_unit("us qt".to_string()), Ok(NonMetric::USLiquidQuart));
assert_eq!(parse_unit("US gallon".to_string()), Ok(NonMetric::USGallon));
assert_eq!(parse_unit("US gallons".to_string()), Ok(NonMetric::USGallon));
assert_eq!(parse_unit("US gal".to_string()), Ok(NonMetric::USGallon));

View File

@ -34,6 +34,7 @@ pub enum NonMetric {
ImperialPint,
ImperialQuart,
ImperialGallon,
USLiquidQuart,
USGallon,
}