#[cfg(test)]
mod test {
use nan_default::NanDefault;
const ARRAY_SIZE: usize = 17;
#[derive(NanDefault)]
struct Data {
a: f32,
b: f64,
c: i32,
x: [f32; ARRAY_SIZE],
s: String,
}
#[test]
fn all_defaults() {
let d = Data::default();
assert!(d.a.is_nan());
assert!(d.b.is_nan());
assert_eq!(d.c, 0);
assert_eq!(d.x.len(), ARRAY_SIZE);
assert!(d.x[ARRAY_SIZE - 1].is_nan());
assert!(d.s.is_empty());
}
#[test]
fn some_defaults() {
let d = Data {
c: 33,
b: 355f64 / 113f64,
..Default::default()
};
assert!(d.a.is_nan());
assert!(!d.b.is_nan());
assert_eq!(d.c, 33);
}
#[test]
fn no_defaults() {
let d = Data {
a: 1.0,
b: 2.0,
c: 33,
x: [1.618; ARRAY_SIZE],
s: "phi".to_string(),
};
assert_eq!(d.a, 1.0);
assert_eq!(d.b, 2.0);
assert_eq!(d.c, 33);
}
}