Add support for long tons
This commit is contained in:
parent
f69177edca
commit
9badd90b91
|
@ -69,6 +69,11 @@ fn get_conversion(unit: NonMetric) -> Conversion {
|
||||||
from: pound_from,
|
from: pound_from,
|
||||||
to: MetricQuantity { amount: 2000.0 * pound_to, unit: Metric::Gram },
|
to: MetricQuantity { amount: 2000.0 * pound_to, unit: Metric::Gram },
|
||||||
},
|
},
|
||||||
|
NonMetric::LongTon => Conversion {
|
||||||
|
offset: 0.0,
|
||||||
|
from: pound_from,
|
||||||
|
to: MetricQuantity { amount: 2240.0 * pound_to, unit: Metric::Gram },
|
||||||
|
},
|
||||||
// Temperature
|
// Temperature
|
||||||
NonMetric::Fahrenheit => Conversion {
|
NonMetric::Fahrenheit => Conversion {
|
||||||
offset: 32.0,
|
offset: 32.0,
|
||||||
|
@ -190,6 +195,7 @@ mod test {
|
||||||
Test(NonMetric::Pound, 453.59237),
|
Test(NonMetric::Pound, 453.59237),
|
||||||
Test(NonMetric::Stone, 6350.29318),
|
Test(NonMetric::Stone, 6350.29318),
|
||||||
Test(NonMetric::ShortTon, 907184.74),
|
Test(NonMetric::ShortTon, 907184.74),
|
||||||
|
Test(NonMetric::LongTon, 1016046.9088),
|
||||||
];
|
];
|
||||||
run_tests(&tests, Metric::Gram);
|
run_tests(&tests, Metric::Gram);
|
||||||
}
|
}
|
||||||
|
|
|
@ -78,6 +78,7 @@ fn unit_to_name(unit: NonMetric) -> &'static str {
|
||||||
NonMetric::Pound => "pounds",
|
NonMetric::Pound => "pounds",
|
||||||
NonMetric::Stone => "stones",
|
NonMetric::Stone => "stones",
|
||||||
NonMetric::ShortTon => "short tons",
|
NonMetric::ShortTon => "short tons",
|
||||||
|
NonMetric::LongTon => "long tons",
|
||||||
// Temperature
|
// Temperature
|
||||||
NonMetric::Fahrenheit => "degrees Fahrenheit",
|
NonMetric::Fahrenheit => "degrees Fahrenheit",
|
||||||
// Area
|
// Area
|
||||||
|
@ -131,6 +132,7 @@ mod test {
|
||||||
assert_eq!(run("1 lb"), Ok("453.6 g".to_string()));
|
assert_eq!(run("1 lb"), Ok("453.6 g".to_string()));
|
||||||
assert_eq!(run("1 st"), Ok("6.35 kg".to_string()));
|
assert_eq!(run("1 st"), Ok("6.35 kg".to_string()));
|
||||||
assert_eq!(run("1 short ton"), Ok("907.2 kg".to_string()));
|
assert_eq!(run("1 short ton"), Ok("907.2 kg".to_string()));
|
||||||
|
assert_eq!(run("1 long ton"), Ok("1 016 kg".to_string()));
|
||||||
// Temperature
|
// Temperature
|
||||||
assert_eq!(run("-40 °F"), Ok("-40 °C".to_string()));
|
assert_eq!(run("-40 °F"), Ok("-40 °C".to_string()));
|
||||||
assert_eq!(run("0 °F"), Ok("-17.78 °C".to_string()));
|
assert_eq!(run("0 °F"), Ok("-17.78 °C".to_string()));
|
||||||
|
|
16
src/parse.rs
16
src/parse.rs
|
@ -105,6 +105,13 @@ fn parse_unit(input: String) -> Result<NonMetric, ParseError> {
|
||||||
"us ton" => Ok(NonMetric::ShortTon),
|
"us ton" => Ok(NonMetric::ShortTon),
|
||||||
"us tons" => Ok(NonMetric::ShortTon),
|
"us tons" => Ok(NonMetric::ShortTon),
|
||||||
|
|
||||||
|
"long ton" => Ok(NonMetric::LongTon),
|
||||||
|
"long tons" => Ok(NonMetric::LongTon),
|
||||||
|
"imperial ton" => Ok(NonMetric::LongTon),
|
||||||
|
"imperial tons" => Ok(NonMetric::LongTon),
|
||||||
|
"imp ton" => Ok(NonMetric::LongTon),
|
||||||
|
"imp tons" => Ok(NonMetric::LongTon),
|
||||||
|
|
||||||
// Temperature
|
// Temperature
|
||||||
"degree Fahrenheit" => Ok(NonMetric::Fahrenheit),
|
"degree Fahrenheit" => Ok(NonMetric::Fahrenheit),
|
||||||
"degrees Fahrenheit" => Ok(NonMetric::Fahrenheit),
|
"degrees Fahrenheit" => Ok(NonMetric::Fahrenheit),
|
||||||
|
@ -479,6 +486,15 @@ mod test {
|
||||||
"us tons",
|
"us tons",
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
test_units(NonMetric::LongTon, &[
|
||||||
|
"long ton",
|
||||||
|
"long tons",
|
||||||
|
"imperial ton",
|
||||||
|
"imperial tons",
|
||||||
|
"imp ton",
|
||||||
|
"imp tons",
|
||||||
|
]);
|
||||||
|
|
||||||
// Temperature
|
// Temperature
|
||||||
test_units(NonMetric::Fahrenheit, &[
|
test_units(NonMetric::Fahrenheit, &[
|
||||||
"degree Fahrenheit",
|
"degree Fahrenheit",
|
||||||
|
|
|
@ -20,6 +20,7 @@ pub enum NonMetric {
|
||||||
Pound,
|
Pound,
|
||||||
Stone,
|
Stone,
|
||||||
ShortTon,
|
ShortTon,
|
||||||
|
LongTon,
|
||||||
// Temperature
|
// Temperature
|
||||||
Fahrenheit,
|
Fahrenheit,
|
||||||
// Area
|
// Area
|
||||||
|
|
Loading…
Reference in New Issue