Add support for imperial pints
This commit is contained in:
parent
8d50c9643a
commit
f9975903aa
4 changed files with 17 additions and 0 deletions
|
@ -110,6 +110,11 @@ fn get_conversion(unit: NonMetric) -> Conversion {
|
||||||
from: 4.0 * imperial_gallon_from,
|
from: 4.0 * imperial_gallon_from,
|
||||||
to: MetricQuantity { amount: imperial_gallon_to, unit: Metric::Litre },
|
to: MetricQuantity { amount: imperial_gallon_to, unit: Metric::Litre },
|
||||||
},
|
},
|
||||||
|
NonMetric::ImperialPint => Conversion {
|
||||||
|
offset: 0.0,
|
||||||
|
from: 2.0 * 4.0 * imperial_gallon_from,
|
||||||
|
to: MetricQuantity { amount: imperial_gallon_to, unit: Metric::Litre },
|
||||||
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -183,6 +188,7 @@ mod test {
|
||||||
let tests = [
|
let tests = [
|
||||||
Test(NonMetric::ImperialGallon, 4.54609),
|
Test(NonMetric::ImperialGallon, 4.54609),
|
||||||
Test(NonMetric::ImperialQuart, 1.1365225),
|
Test(NonMetric::ImperialQuart, 1.1365225),
|
||||||
|
Test(NonMetric::ImperialPint, 0.56826125),
|
||||||
];
|
];
|
||||||
run_tests(&tests, Metric::Litre);
|
run_tests(&tests, Metric::Litre);
|
||||||
}
|
}
|
||||||
|
|
|
@ -87,6 +87,7 @@ fn unit_to_name(unit: NonMetric) -> &'static str {
|
||||||
// Fluid volume
|
// Fluid volume
|
||||||
NonMetric::ImperialGallon => "imperial gallons",
|
NonMetric::ImperialGallon => "imperial gallons",
|
||||||
NonMetric::ImperialQuart => "imperial quarts",
|
NonMetric::ImperialQuart => "imperial quarts",
|
||||||
|
NonMetric::ImperialPint => "imperial pints",
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -131,5 +132,6 @@ mod test {
|
||||||
// Fluid volume
|
// Fluid volume
|
||||||
assert_eq!(run("1 imp gal"), Ok("4.546 l".to_string()));
|
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 qt"), Ok("1.137 l".to_string()));
|
||||||
|
assert_eq!(run("1 imp pt"), Ok("5.683 dl".to_string()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -194,6 +194,10 @@ fn parse_unit(input: String) -> Result<NonMetric, ParseError> {
|
||||||
"imperial quarts" => Ok(NonMetric::ImperialQuart),
|
"imperial quarts" => Ok(NonMetric::ImperialQuart),
|
||||||
"imp qt" => Ok(NonMetric::ImperialQuart),
|
"imp qt" => Ok(NonMetric::ImperialQuart),
|
||||||
|
|
||||||
|
"imperial pint" => Ok(NonMetric::ImperialPint),
|
||||||
|
"imperial pints" => Ok(NonMetric::ImperialPint),
|
||||||
|
"imp pt" => Ok(NonMetric::ImperialPint),
|
||||||
|
|
||||||
_ => Err(ParseError::UnknownUnit(input)),
|
_ => Err(ParseError::UnknownUnit(input)),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -437,6 +441,10 @@ mod test {
|
||||||
assert_eq!(parse_unit("imperial quarts".to_string()), Ok(NonMetric::ImperialQuart));
|
assert_eq!(parse_unit("imperial quarts".to_string()), Ok(NonMetric::ImperialQuart));
|
||||||
assert_eq!(parse_unit("imp qt".to_string()), Ok(NonMetric::ImperialQuart));
|
assert_eq!(parse_unit("imp qt".to_string()), Ok(NonMetric::ImperialQuart));
|
||||||
|
|
||||||
|
assert_eq!(parse_unit("imperial pint".to_string()), Ok(NonMetric::ImperialPint));
|
||||||
|
assert_eq!(parse_unit("imperial pints".to_string()), Ok(NonMetric::ImperialPint));
|
||||||
|
assert_eq!(parse_unit("imp pt".to_string()), Ok(NonMetric::ImperialPint));
|
||||||
|
|
||||||
// Unknown unit
|
// Unknown unit
|
||||||
assert_eq!(parse_unit("hutenosa".to_string()), Err(ParseError::UnknownUnit("hutenosa".to_string())));
|
assert_eq!(parse_unit("hutenosa".to_string()), Err(ParseError::UnknownUnit("hutenosa".to_string())));
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,6 +32,7 @@ pub enum NonMetric {
|
||||||
// Fluid volume
|
// Fluid volume
|
||||||
ImperialGallon,
|
ImperialGallon,
|
||||||
ImperialQuart,
|
ImperialQuart,
|
||||||
|
ImperialPint,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone, Copy, Debug, PartialEq)]
|
#[derive(Clone, Copy, Debug, PartialEq)]
|
||||||
|
|
Loading…
Reference in a new issue