mechanical-engineering 0.0.0

Mechanical engineering calculation library and terminal based GUI
Documentation
#[cfg(test)]
mod pressure_tests {
    use mechanical_engineering::units::pressure::*;

    #[test]
    fn create_pressure() {
        let value = 150.0;
        let p = Pressure::new(value, Unit::Psi, true);
        assert_eq!(p.value(), value);
    }

    #[test]
    fn convert_pressure_psi() {
        let mut p = Pressure::new(100.0, Unit::Psi, true);

        p.convert_unit(Unit::Psi);
        let p_expected = 100.0;
        let diff = p_expected - p.value();
        assert!(diff < 0.001);
    }

    #[test]
    fn convert_pressure_kpa() {
        let mut p = Pressure::new(100.0, Unit::Psi, true);

        p.convert_unit(Unit::Kpa);
        let p_expected = 689.475729;
        let diff = p_expected - p.value();
        assert!(diff < 0.001);
    }

    #[test]
    fn convert_pressure_pa() {
        let mut p = Pressure::new(100.0, Unit::Psi, true);

        p.convert_unit(Unit::Pa);
        let p_expected = 689475.729;
        let diff = p_expected - p.value();
        assert!(diff < 0.1);
    }

    #[test]
    fn convert_pressure_bar() {
        let mut p = Pressure::new(100.0, Unit::Psi, true);

        p.convert_unit(Unit::Bar);
        let p_expected = 6.894757;
        let diff = p_expected - p.value();
        assert!(diff < 0.001);
    }

    #[test]
    fn add_pressure_psi() {
        let p1 = Pressure::new(100.0, Unit::Psi, true);
        let p2 = Pressure::new(100.0, Unit::Psi, true);
        let p1 = p1.add_pressure(&p2);
        assert_eq!(200.0, p1.value());
        assert!(p1.is_absolute());
        assert!(p2.is_absolute());
    }

    #[test]
    fn add_pressure_kpa() {
        let p1 = Pressure::new(100.0, Unit::Psi, true);
        let p2 = Pressure::new(100.0, Unit::Kpa, false);
        let p1 = p1.add_pressure(&p2);
        let diff = p1.value() - 114.50377;
        assert!(diff < 0.0001);
        assert!(p1.is_absolute());
        assert!(!p2.is_absolute());
    }

    #[test]
    fn add_pressure_pa() {
        let p1 = Pressure::new(100.0, Unit::Psi, false);
        let p2 = Pressure::new(10000.0, Unit::Pa, false);
        let p1 = p1.add_pressure(&p2);
        let diff = p1.value() - 101.450377;
        assert!(diff < 0.0001);
        assert!(!p1.is_absolute());
        assert!(!p2.is_absolute());
    }

    #[test]
    fn add_pressure_bar() {
        let p1 = Pressure::new(100.0, Unit::Psi, true);
        let p2 = Pressure::new(10.0, Unit::Bar, false);
        let p1 = p1.add_pressure(&p2);
        let diff = p1.value() - 245.037738;
        assert!(diff < 0.0001);
        assert!(p1.is_absolute());
        assert!(!p2.is_absolute());
    }

    #[test]
    fn sub_pressure_psi() {
        let p1 = Pressure::new(100.0, Unit::Psi, false);
        let p2 = Pressure::new(100.0, Unit::Psi, true);
        let p1 = p1.subtract_pressure(&p2);
        assert_eq!(0.0, p1.value());
        assert!(!p1.is_absolute());
        assert!(p2.is_absolute());
    }

    #[test]
    fn sub_pressure_kpa() {
        let p1 = Pressure::new(100.0, Unit::Psi, true);
        let p2 = Pressure::new(100.0, Unit::Kpa, true);
        let p1 = p1.subtract_pressure(&p2);
        let diff = p1.value() - 85.49622;
        assert!(diff < 0.0001);
        assert!(p1.is_absolute());
        assert!(p2.is_absolute());
    }

    #[test]
    fn sub_pressure_pa() {
        let p1 = Pressure::new(100.0, Unit::Psi, false);
        let p2 = Pressure::new(10000.0, Unit::Pa, false);
        let p1 = p1.subtract_pressure(&p2);
        let diff = p1.value() - 98.549623;
        assert!(diff < 0.0001);
        assert!(!p1.is_absolute());
        assert!(!p2.is_absolute());
    }

    #[test]
    fn sub_pressure_bar() {
        let p1 = Pressure::new(100.0, Unit::Psi, true);
        let p2 = Pressure::new(0.5, Unit::Bar, false);
        let p1 = p1.subtract_pressure(&p2);
        let diff = p1.value() - 92.74811311;
        assert!(diff < 0.0001);
        assert!(p1.is_absolute());
        assert!(!p2.is_absolute());
    }
}

#[cfg(test)]
mod pressure_ratio_tests {
    use mechanical_engineering::units::pressure::*;

    #[test]
    fn ratio_pressure_psi() {
        let p1 = Pressure::new(100.0, Unit::Psi, true);
        let p2 = Pressure::new(100.0, Unit::Psi, true);
        let pr = Pressure::pressure_ratio(&p1, &p2).unwrap();
        assert_eq!(1.0, pr);
        assert!(p1.is_absolute());
        assert!(p2.is_absolute());
    }

    #[test]
    fn ratio_pressure_kpa() {
        let p1 = Pressure::new(100.0, Unit::Psi, true);
        let p2 = Pressure::new(100.0, Unit::Kpa, true);
        let pr = Pressure::pressure_ratio(&p1, &p2).unwrap();
        let diff = pr - 0.854962262;
        assert!(diff < 0.0001);
        assert!(p1.is_absolute());
        assert!(p2.is_absolute());
    }

    #[test]
    fn ratio_pressure_pa() {
        let p1 = Pressure::new(100.0, Unit::Psi, true);
        let p2 = Pressure::new(100_000.0, Unit::Pa, true);
        let pr = Pressure::pressure_ratio(&p1, &p2).unwrap();
        let diff = pr - 0.854962262;
        assert!(diff < 0.0001);
        assert!(p1.is_absolute());
        assert!(p2.is_absolute());
    }

    #[test]
    fn ratio_pressure_bar() {
        let p1 = Pressure::new(100.0, Unit::Psi, true);
        let p2 = Pressure::new(1.5, Unit::Bar, true);
        let pr = Pressure::pressure_ratio(&p1, &p2).unwrap();
        let diff = pr - 0.782443393;
        assert!(diff < 0.0001);
        assert!(p1.is_absolute());
        assert!(p2.is_absolute());
    }

    #[test]
    fn ratio_pressure_non_abs_1() {
        let p1 = Pressure::new(100.0, Unit::Psi, false);
        let p2 = Pressure::new(1.5, Unit::Bar, true);
        let pr = Pressure::pressure_ratio(&p1, &p2);
        assert!(pr.is_err());
        assert!(!p1.is_absolute());
        assert!(p2.is_absolute());
    }

    #[test]
    fn ratio_pressure_non_abs_2() {
        let p1 = Pressure::new(100.0, Unit::Psi, true);
        let p2 = Pressure::new(1.5, Unit::Bar, false);
        let pr = Pressure::pressure_ratio(&p1, &p2);
        assert!(pr.is_err());
        assert!(p1.is_absolute());
        assert!(!p2.is_absolute());
    }

    #[test]
    fn ratio_pressure_non_abs_3() {
        let p1 = Pressure::new(100.0, Unit::Psi, false);
        let p2 = Pressure::new(1.5, Unit::Bar, false);
        let pr = Pressure::pressure_ratio(&p1, &p2);
        assert!(pr.is_err());
        assert!(!p1.is_absolute());
        assert!(!p2.is_absolute());
    }
}