Added unit of power

This commit is contained in:
Kasper 2020-01-11 04:46:43 +01:00
parent 0758611dfb
commit 539568c5b5
2 changed files with 39 additions and 0 deletions

View File

@ -227,6 +227,16 @@ pub fn lex(input: &str) -> Result<TokenVector, String> {
"twh" | "terawatt hour" | "terawatt hours" => tokens.push(Token::Unit(TerawattHour)),
"pwh" | "petawatt hour" | "petawatt hours" => tokens.push(Token::Unit(PetawattHour)),
"milliwatt" | "milliwatts" => tokens.push(Token::Unit(Milliwatt)),
"w" | "watt" | "watts" => tokens.push(Token::Unit(Watt)),
"kw" | "kilowatt" | "kilowatts" => tokens.push(Token::Unit(Kilowatt)),
"mw" | "megawatt" | "megawatts" => tokens.push(Token::Unit(Megawatt)),
"gw" | "gigawatt" | "gigawatts" => tokens.push(Token::Unit(Gigawatt)),
"tw" | "terawatt" | "terawatts" => tokens.push(Token::Unit(Terawatt)),
"pw" | "petawatt" | "petawatts" => tokens.push(Token::Unit(Petawatt)),
"hp" | "hps" | "horsepower" | "horsepowers" => tokens.push(Token::Unit(Horsepower)),
"mhp" | "hpm" | "metric hp" | "metric hps" | "metric horsepower" | "metric horsepowers" => tokens.push(Token::Unit(MetricHorsepower)),
"kph" | "kmh" => tokens.push(Token::Unit(KilometersPerHour)),
"mps" => tokens.push(Token::Unit(MetersPerSecond)),
"mph" => tokens.push(Token::Unit(MilesPerHour)),
@ -348,6 +358,12 @@ pub fn lex(input: &str) -> Result<TokenVector, String> {
(Token::Unit(Foot), Token::Per, Token::Unit(Second)) => {
tokens[token_index-2] = Token::Unit(FeetPerSecond);
},
(Token::Unit(BritishThermalUnit), Token::Per, Token::Unit(Minute)) => {
tokens[token_index-2] = Token::Unit(BritishThermalUnitsPerMinute);
},
(Token::Unit(BritishThermalUnit), Token::Per, Token::Unit(Hour)) => {
tokens[token_index-2] = Token::Unit(BritishThermalUnitsPerHour);
},
_ => {
replaced = false;
},

View File

@ -10,6 +10,7 @@ pub enum UnitType {
Mass,
Information,
Energy,
Power,
Speed,
Temperature,
}
@ -170,6 +171,18 @@ create_units!(
TerawattHour: (Energy, d128!(3600000000000000)),
PetawattHour: (Energy, d128!(3600000000000000000)),
Milliwatt: (Power, d128!(0.001)),
Watt: (Power, d128!(1)),
Kilowatt: (Power, d128!(1000)),
Megawatt: (Power, d128!(1000000)),
Gigawatt: (Power, d128!(1000000000)),
Terawatt: (Power, d128!(1000000000000)),
Petawatt: (Power, d128!(1000000000000000)),
BritishThermalUnitsPerMinute: (Power, d128!(0.0568690272188)), // probably inexact
BritishThermalUnitsPerHour: (Power, d128!(3.412141633128)), // probably inexact
Horsepower: (Power, d128!(745.69987158227022)), // exact according to wikipedia
MetricHorsepower: (Power, d128!(735.49875)),
KilometersPerHour: (Speed, d128!(1)),
MetersPerSecond: (Speed, d128!(3.6)),
MilesPerHour: (Speed, d128!(1.609344)),
@ -361,6 +374,16 @@ mod tests {
assert_eq!(convert_test(1000.0, GigawattHour, TerawattHour), 1.0);
assert_eq!(convert_test(1000.0, TerawattHour, PetawattHour), 1.0);
assert_eq!(convert_test(1000.0, Watt, Kilowatt), 1.0);
assert_eq!(convert_test(1000.0, Kilowatt, Megawatt), 1.0);
assert_eq!(convert_test(1000.0, Megawatt, Gigawatt), 1.0);
assert_eq!(convert_test(1000.0, Gigawatt, Terawatt), 1.0);
assert_eq!(convert_test(1000.0, Terawatt, Petawatt), 1.0);
assert_eq!(convert_test(0.0568690272188, Watt, BritishThermalUnitsPerMinute), 1.0);
assert_eq!(convert_test(60.0, BritishThermalUnitsPerMinute, BritishThermalUnitsPerHour), 1.0);
assert_eq!(convert_test(745.6998715822702, Watt, Horsepower), 1.0);
assert_eq!(convert_test(735.49875, Watt, MetricHorsepower), 1.0);
assert_eq!(convert_test(3.6, KilometersPerHour, MetersPerSecond), 1.0);
assert_eq!(convert_test(0.3048, MetersPerSecond, FeetPerSecond), 1.0);
assert_eq!(convert_test(1.609344, KilometersPerHour, MilesPerHour), 1.0);