metrum 1.1.0

Easily work with and compare temeratures in different units
Documentation
use super::Speed;
use std::ops::Add;

impl Add for Speed {
    type Output = Self;

    fn add(self, other: Self) -> Self {
        Self {
            meters_per_second: self.meters_per_second + other.meters_per_second,
        }
    }
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn test_add_same_unit() {
        let s1 = Speed::from_mps(1.0);
        let s2 = Speed::from_mps(2.0);
        let sum = s1 + s2;
        assert_eq!(sum.as_mps(), 3.0);
    }

    #[test]
    fn test_add_different_units() {
        let s1 = Speed::from_mps(1.0);
        let s2 = Speed::from_kmph(3.6);
        let sum = s1 + s2;
        assert_eq!(sum.as_mps(), 2.0);
    }

    #[test]
    fn test_add_commutative() {
        let s1 = Speed::from_mps(1.0);
        let s2 = Speed::from_kmph(3.6);
        let sum1 = s1 + s2;
        let sum2 = s2 + s1;
        assert_eq!(sum1, sum2);
    }

    #[test]
    fn test_add_associative() {
        let s1 = Speed::from_mps(1.0);
        let s2 = Speed::from_kmph(3.6);
        let s3 = Speed::from_mph(2.23694);
        let sum1 = (s1 + s2) + s3;
        let sum2 = s1 + (s2 + s3);
        assert_eq!(sum1, sum2);
    }
}