extendr-api 0.9.0

Safe and user friendly bindings to the R programming language.
Documentation
use extendr_api::prelude::*;

#[test]
fn test_float_na_is_na() {
    test! {
        assert!(f64::na().is_na());
        assert!(Rfloat::na().is_na());
    }
}

#[test]
fn test_float_from_bits_is_na() {
    test! {
        let na_bits = 0x7ff00000u64 << 32 | 1954;
        let na_r = Rfloat::from(f64::from_bits(na_bits));
        let na_f64 = f64::from_bits(na_bits);
        assert!(na_r.is_na());
        assert!(na_f64.is_na());
    }
}

#[test]
fn test_float_not_na_is_not_na() {
    test! {
        assert!(!Rfloat::from(42f64).is_na());
        assert!(!Rfloat::from(f64::NAN).is_na());
        assert!(!Rfloat::from(f64::INFINITY).is_na());
        assert!(!Rfloat::from(f64::NEG_INFINITY).is_na());
        assert!(!Rfloat::from(f64::MAX).is_na());
        assert!(!Rfloat::from(f64::MIN).is_na());
        assert!(!Rfloat::from(f64::MIN_POSITIVE).is_na());

        assert!(!42f64.is_na());
        assert!(!f64::NAN.is_na());
        assert!(!f64::INFINITY.is_na());
        assert!(!f64::NEG_INFINITY.is_na());
        assert!(!f64::MAX.is_na());
        assert!(!f64::MIN.is_na());
        assert!(!f64::MIN_POSITIVE.is_na());
    }
}