1 use serde_yaml::{Number, Value};
2 use std::f64;
3 
4 #[test]
test_nan()5 fn test_nan() {
6     let pos_nan = serde_yaml::from_str::<Value>(".nan").unwrap();
7     assert!(pos_nan.is_f64());
8     assert_eq!(pos_nan, pos_nan);
9 
10     let neg_fake_nan = serde_yaml::from_str::<Value>("-.nan").unwrap();
11     assert!(neg_fake_nan.is_string());
12 
13     let significand_mask = 0xF_FFFF_FFFF_FFFF;
14     let bits = (f64::NAN.to_bits() ^ significand_mask) | 1;
15     let different_pos_nan = Value::Number(Number::from(f64::from_bits(bits)));
16     assert_eq!(pos_nan, different_pos_nan);
17 }
18