Skip to content

Commit

Permalink
Fix comparisons
Browse files Browse the repository at this point in the history
  • Loading branch information
eldruin committed Jan 14, 2020
1 parent c54bf44 commit 67e4ffc
Showing 1 changed file with 34 additions and 27 deletions.
61 changes: 34 additions & 27 deletions src/conversion.rs
Original file line number Diff line number Diff line change
Expand Up @@ -37,37 +37,44 @@ pub fn convert_temp_to_register(temp: f32) -> (u8, u8) {
mod tests {
use super::*;

macro_rules! assert_near {
($a:expr, $b:expr) => {
assert!(($a + 0.1) > $b);
assert!(($a - 0.1) < $b);
};
}

#[test]
fn can_convert_temperature_from_register() {
assert_eq!(convert_temp_from_register(0b0111_1101, 0b0101_1010), 125.0);
assert_eq!(convert_temp_from_register(0b0001_1001, 0b0101_1010), 25.0);
assert_eq!(convert_temp_from_register(0b1110_0111, 0b0101_1010), -25.0);
assert_eq!(convert_temp_from_register(0b1100_1001, 0b0101_1010), -55.0);
assert_near!(convert_temp_from_register(0b0111_1101, 0b0101_1010), 125.0);
assert_near!(convert_temp_from_register(0b0001_1001, 0b0101_1010), 25.0);
assert_near!(convert_temp_from_register(0b1110_0111, 0b0101_1010), -25.0);
assert_near!(convert_temp_from_register(0b1100_1001, 0b0101_1010), -55.0);

assert_eq!(convert_temp_from_register(0b0000_0000, 0b0101_1010), 0.0);
assert_eq!(convert_temp_from_register(0b0000_0000, 0b1101_1010), 0.5);
assert_eq!(convert_temp_from_register(0b0000_0001, 0b0101_1010), 1.0);
assert_eq!(convert_temp_from_register(0b0000_0010, 0b0101_1010), 2.0);
assert_eq!(convert_temp_from_register(0b0000_0100, 0b0101_1010), 4.0);
assert_eq!(convert_temp_from_register(0b0000_1000, 0b0101_1010), 8.0);
assert_eq!(convert_temp_from_register(0b0001_0000, 0b0101_1010), 16.0);
assert_eq!(convert_temp_from_register(0b0010_0000, 0b0101_1010), 32.0);
assert_eq!(convert_temp_from_register(0b0100_0000, 0b0101_1010), 64.0);
assert_eq!(convert_temp_from_register(0b0100_1011, 0b0101_1010), 75.0);
assert_eq!(convert_temp_from_register(0b0101_0000, 0b0101_1010), 80.0);
assert_eq!(convert_temp_from_register(0b0111_1111, 0b1101_1010), 127.5);
assert_near!(convert_temp_from_register(0b0000_0000, 0b0101_1010), 0.0);
assert_near!(convert_temp_from_register(0b0000_0000, 0b1101_1010), 0.5);
assert_near!(convert_temp_from_register(0b0000_0001, 0b0101_1010), 1.0);
assert_near!(convert_temp_from_register(0b0000_0010, 0b0101_1010), 2.0);
assert_near!(convert_temp_from_register(0b0000_0100, 0b0101_1010), 4.0);
assert_near!(convert_temp_from_register(0b0000_1000, 0b0101_1010), 8.0);
assert_near!(convert_temp_from_register(0b0001_0000, 0b0101_1010), 16.0);
assert_near!(convert_temp_from_register(0b0010_0000, 0b0101_1010), 32.0);
assert_near!(convert_temp_from_register(0b0100_0000, 0b0101_1010), 64.0);
assert_near!(convert_temp_from_register(0b0100_1011, 0b0101_1010), 75.0);
assert_near!(convert_temp_from_register(0b0101_0000, 0b0101_1010), 80.0);
assert_near!(convert_temp_from_register(0b0111_1111, 0b1101_1010), 127.5);

assert_eq!(convert_temp_from_register(0b1111_1111, 0b1101_1010), -0.5);
assert_eq!(convert_temp_from_register(0b1111_1111, 0b0101_1010), -1.0);
assert_eq!(convert_temp_from_register(0b1111_1110, 0b0101_1010), -2.0);
assert_eq!(convert_temp_from_register(0b1111_1101, 0b1101_1010), -2.5);
assert_eq!(convert_temp_from_register(0b1111_1100, 0b0101_1010), -4.0);
assert_eq!(convert_temp_from_register(0b1111_1000, 0b0101_1010), -8.0);
assert_eq!(convert_temp_from_register(0b1111_0000, 0b0101_1010), -16.0);
assert_eq!(convert_temp_from_register(0b1110_0000, 0b0101_1010), -32.0);
assert_eq!(convert_temp_from_register(0b1100_0000, 0b0101_1010), -64.0);
assert_eq!(convert_temp_from_register(0b1000_0000, 0b1101_1010), -127.5);
assert_eq!(convert_temp_from_register(0b1000_0000, 0b0101_1010), -128.0);
assert_near!(convert_temp_from_register(0b1111_1111, 0b1101_1010), -0.5);
assert_near!(convert_temp_from_register(0b1111_1111, 0b0101_1010), -1.0);
assert_near!(convert_temp_from_register(0b1111_1110, 0b0101_1010), -2.0);
assert_near!(convert_temp_from_register(0b1111_1101, 0b1101_1010), -2.5);
assert_near!(convert_temp_from_register(0b1111_1100, 0b0101_1010), -4.0);
assert_near!(convert_temp_from_register(0b1111_1000, 0b0101_1010), -8.0);
assert_near!(convert_temp_from_register(0b1111_0000, 0b0101_1010), -16.0);
assert_near!(convert_temp_from_register(0b1110_0000, 0b0101_1010), -32.0);
assert_near!(convert_temp_from_register(0b1100_0000, 0b0101_1010), -64.0);
assert_near!(convert_temp_from_register(0b1000_0000, 0b1101_1010), -127.5);
assert_near!(convert_temp_from_register(0b1000_0000, 0b0101_1010), -128.0);
}

#[test]
Expand Down

0 comments on commit 67e4ffc

Please sign in to comment.