Add marathon

This commit is contained in:
Kasper 2022-12-30 11:04:47 +01:00
parent 17db26c685
commit de79887331
No known key found for this signature in database
GPG Key ID: 356D5C59EDCEC2D1
2 changed files with 4 additions and 0 deletions

View File

@ -240,6 +240,7 @@ fn parse_word(word: &str, lexer: &mut Lexer) -> Result<(), String> {
"ft" | "foot" | "feet" => Token::Unit(Foot), "ft" | "foot" | "feet" => Token::Unit(Foot),
"yd" | "yard" | "yards" => Token::Unit(Yard), "yd" | "yard" | "yards" => Token::Unit(Yard),
"mi" | "mile" | "miles" => Token::Unit(Mile), "mi" | "mile" | "miles" => Token::Unit(Mile),
"marathon" | "marathons" => Token::Unit(Marathon),
"nmi" => Token::Unit(NauticalMile), "nmi" => Token::Unit(NauticalMile),
"nautical" => { "nautical" => {
match read_word("", lexer).as_str() { match read_word("", lexer).as_str() {
@ -980,6 +981,7 @@ mod tests {
}; };
run_lex("88 kilometres * 2", vec![numtok!(88), Token::Unit(Kilometer), Token::Operator(Multiply), numtok!(2)]); run_lex("88 kilometres * 2", vec![numtok!(88), Token::Unit(Kilometer), Token::Operator(Multiply), numtok!(2)]);
run_lex("0.5 marathon", vec![numtok!(0.5), Token::Unit(Marathon)]);
run_lex("100 nmi", vec![numtok!(100), Token::Unit(NauticalMile)]); run_lex("100 nmi", vec![numtok!(100), Token::Unit(NauticalMile)]);
run_lex("101 nautical miles", vec![numtok!(101), Token::Unit(NauticalMile)]); run_lex("101 nautical miles", vec![numtok!(101), Token::Unit(NauticalMile)]);
run_lex("2 lightyears", vec![numtok!(2), Token::Unit(LightYear)]); run_lex("2 lightyears", vec![numtok!(2), Token::Unit(LightYear)]);

View File

@ -101,6 +101,7 @@ create_units!(
Yard: (Length, d128!(914.4)), Yard: (Length, d128!(914.4)),
Mile: (Length, d128!(1609344)), Mile: (Length, d128!(1609344)),
// 1-dimensional only: // 1-dimensional only:
Marathon: (Length, d128!(42195000)),
NauticalMile: (Length, d128!(1852000)), NauticalMile: (Length, d128!(1852000)),
LightYear: (Length, d128!(9460730472580800000)), LightYear: (Length, d128!(9460730472580800000)),
LightSecond: (Length, d128!(299792458000)), LightSecond: (Length, d128!(299792458000)),
@ -845,6 +846,7 @@ mod tests {
assert_float_eq!(convert_test(12.0, Inch, Foot), 1.0); assert_float_eq!(convert_test(12.0, Inch, Foot), 1.0);
assert_float_eq!(convert_test(3.0, Foot, Yard), 1.0); assert_float_eq!(convert_test(3.0, Foot, Yard), 1.0);
assert_float_eq!(convert_test(1760.0, Yard, Mile), 1.0); assert_float_eq!(convert_test(1760.0, Yard, Mile), 1.0);
assert_float_eq!(convert_test(42195.0, Meter, Marathon), 1.0);
assert_float_eq!(convert_test(1852.0, Meter, NauticalMile), 1.0); assert_float_eq!(convert_test(1852.0, Meter, NauticalMile), 1.0);
assert_float_eq!(convert_test(9460730472580800.0, Meter, LightYear), 1.0); assert_float_eq!(convert_test(9460730472580800.0, Meter, LightYear), 1.0);
assert_float_eq!(convert_test(299792458.0, Meter, LightSecond), 1.0); assert_float_eq!(convert_test(299792458.0, Meter, LightSecond), 1.0);