diff --git a/src/parse.rs b/src/parse.rs index 119a420..2faef00 100644 --- a/src/parse.rs +++ b/src/parse.rs @@ -145,9 +145,18 @@ fn parse_unit(input: String) -> Result { "acres" => Ok(NonMetric::Acre), "ac" => Ok(NonMetric::Acre), + "square mile" => Ok(NonMetric::SquareMile), + "square miles" => Ok(NonMetric::SquareMile), + "square mi" => Ok(NonMetric::SquareMile), + "sq mile" => Ok(NonMetric::SquareMile), + "sq miles" => Ok(NonMetric::SquareMile), + "sq mi" => Ok(NonMetric::SquareMile), "mile²" => Ok(NonMetric::SquareMile), "miles²" => Ok(NonMetric::SquareMile), "mi²" => Ok(NonMetric::SquareMile), + "mile^2" => Ok(NonMetric::SquareMile), + "miles^2" => Ok(NonMetric::SquareMile), + "mi^2" => Ok(NonMetric::SquareMile), _ => Err(ParseError::UnknownUnit(input)), } @@ -343,9 +352,18 @@ mod test { assert_eq!(parse_unit("acres".to_string()), Ok(NonMetric::Acre)); assert_eq!(parse_unit("ac".to_string()), Ok(NonMetric::Acre)); + assert_eq!(parse_unit("square mile".to_string()), Ok(NonMetric::SquareMile)); + assert_eq!(parse_unit("square miles".to_string()), Ok(NonMetric::SquareMile)); + assert_eq!(parse_unit("square mi".to_string()), Ok(NonMetric::SquareMile)); + assert_eq!(parse_unit("sq mile".to_string()), Ok(NonMetric::SquareMile)); + assert_eq!(parse_unit("sq miles".to_string()), Ok(NonMetric::SquareMile)); + assert_eq!(parse_unit("sq mi".to_string()), Ok(NonMetric::SquareMile)); assert_eq!(parse_unit("mile²".to_string()), Ok(NonMetric::SquareMile)); assert_eq!(parse_unit("miles²".to_string()), Ok(NonMetric::SquareMile)); assert_eq!(parse_unit("mi²".to_string()), Ok(NonMetric::SquareMile)); + assert_eq!(parse_unit("mile^2".to_string()), Ok(NonMetric::SquareMile)); + assert_eq!(parse_unit("miles^2".to_string()), Ok(NonMetric::SquareMile)); + assert_eq!(parse_unit("mi^2".to_string()), Ok(NonMetric::SquareMile)); // Unknown unit assert_eq!(parse_unit("hutenosa".to_string()), Err(ParseError::UnknownUnit("hutenosa".to_string())));