diff --git a/src/conversions.rs b/src/conversions.rs index 1585057..f0bac88 100644 --- a/src/conversions.rs +++ b/src/conversions.rs @@ -123,6 +123,11 @@ fn get_conversion(unit: NonMetric) -> Conversion { from: imperial_gallon_from, to: MetricQuantity { amount: imperial_gallon_to, unit: Metric::Litre }, }, + NonMetric::USLiquidPint => Conversion { + offset: 0.0, + from: 2.0 * 4.0 * us_gallon_from, + to: MetricQuantity { amount: us_gallon_to, unit: Metric::Litre }, + }, NonMetric::USLiquidQuart => Conversion { offset: 0.0, from: 4.0 * us_gallon_from, @@ -208,6 +213,7 @@ mod test { Test(NonMetric::ImperialPint, 0.56826125), Test(NonMetric::ImperialQuart, 1.1365225), Test(NonMetric::ImperialGallon, 4.54609), + Test(NonMetric::USLiquidPint, 0.473176473), Test(NonMetric::USLiquidQuart, 0.946352946), Test(NonMetric::USGallon, 3.785411784), ]; diff --git a/src/lib.rs b/src/lib.rs index eb257a9..1d65e44 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -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::USLiquidPint => "US liquid pints", NonMetric::USLiquidQuart => "US liquid quarts", NonMetric::USGallon => "US gallons", } @@ -137,6 +138,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 pt"), Ok("4.732 dl".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())); } diff --git a/src/parse.rs b/src/parse.rs index 01d1a15..72ebdff 100644 --- a/src/parse.rs +++ b/src/parse.rs @@ -205,6 +205,19 @@ fn parse_unit(input: String) -> Result { "imperial gallons" => Ok(NonMetric::ImperialGallon), "imp gal" => Ok(NonMetric::ImperialGallon), + "US liquid pint" => Ok(NonMetric::USLiquidPint), + "US liquid pints" => Ok(NonMetric::USLiquidPint), + "US pint" => Ok(NonMetric::USLiquidPint), + "US pints" => Ok(NonMetric::USLiquidPint), + "US pt" => Ok(NonMetric::USLiquidPint), + "US p" => Ok(NonMetric::USLiquidPint), + "us liquid pint" => Ok(NonMetric::USLiquidPint), + "us liquid pints" => Ok(NonMetric::USLiquidPint), + "us pint" => Ok(NonMetric::USLiquidPint), + "us pints" => Ok(NonMetric::USLiquidPint), + "us pt" => Ok(NonMetric::USLiquidPint), + "us p" => Ok(NonMetric::USLiquidPint), + "US liquid quart" => Ok(NonMetric::USLiquidQuart), "US liquid quarts" => Ok(NonMetric::USLiquidQuart), "US quart" => Ok(NonMetric::USLiquidQuart), @@ -477,6 +490,19 @@ 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 pint".to_string()), Ok(NonMetric::USLiquidPint)); + assert_eq!(parse_unit("US liquid pints".to_string()), Ok(NonMetric::USLiquidPint)); + assert_eq!(parse_unit("US pint".to_string()), Ok(NonMetric::USLiquidPint)); + assert_eq!(parse_unit("US pints".to_string()), Ok(NonMetric::USLiquidPint)); + assert_eq!(parse_unit("US pt".to_string()), Ok(NonMetric::USLiquidPint)); + assert_eq!(parse_unit("US p".to_string()), Ok(NonMetric::USLiquidPint)); + assert_eq!(parse_unit("us liquid pint".to_string()), Ok(NonMetric::USLiquidPint)); + assert_eq!(parse_unit("us liquid pints".to_string()), Ok(NonMetric::USLiquidPint)); + assert_eq!(parse_unit("us pint".to_string()), Ok(NonMetric::USLiquidPint)); + assert_eq!(parse_unit("us pints".to_string()), Ok(NonMetric::USLiquidPint)); + assert_eq!(parse_unit("us pt".to_string()), Ok(NonMetric::USLiquidPint)); + assert_eq!(parse_unit("us p".to_string()), Ok(NonMetric::USLiquidPint)); + 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)); diff --git a/src/units.rs b/src/units.rs index 3d3f5d3..00d6da4 100644 --- a/src/units.rs +++ b/src/units.rs @@ -34,6 +34,7 @@ pub enum NonMetric { ImperialPint, ImperialQuart, ImperialGallon, + USLiquidPint, USLiquidQuart, USGallon, }