diny_test 0.2.4

Test serializer format for the diny framework
Documentation
#![cfg_attr(not(feature = "std"), no_std)]

#![feature(generic_associated_types)]

mod common;

use common::method::eq::*;

#[test]
fn can_serialize_unit() {
    test_serialize_exact::<(), 0>(());
}

#[test]
fn can_serialize_bool() {
    const LEN: usize = 1;
    test_serialize_exact::<bool, LEN>(true);
    test_serialize_exact::<bool, LEN>(false);

}

#[test]
fn can_serialize_u8() {
    const LEN: usize = 1;
    test_serialize_exact::<u8 , LEN>(u8::MIN  );
    test_serialize_exact::<u8 , LEN>(u8::MIN+1);
    test_serialize_exact::<u8 , LEN>(u8::MAX-1);
    test_serialize_exact::<u8 , LEN>(u8::MAX  );
}

#[test]
fn can_serialize_u16() {
    const LEN: usize = 2;
    test_serialize_exact::<u16, LEN>(u16::MIN  );
    test_serialize_exact::<u16, LEN>(u16::MIN+1);
    test_serialize_exact::<u16, LEN>(u16::MAX-1);
    test_serialize_exact::<u16, LEN>(u16::MAX  );
}

#[test]
fn can_serialize_u32() {
    const LEN: usize = 4;
    test_serialize_exact::<u32, LEN>(u32::MIN  );
    test_serialize_exact::<u32, LEN>(u32::MIN+1);
    test_serialize_exact::<u32, LEN>(u32::MAX-1);
    test_serialize_exact::<u32, LEN>(u32::MAX  );
}

#[test]
fn can_serialize_u64() {
    const LEN: usize = 8;
    test_serialize_exact::<u64, LEN>(u64::MIN  );
    test_serialize_exact::<u64, LEN>(u64::MIN+1);
    test_serialize_exact::<u64, LEN>(u64::MAX-1);
    test_serialize_exact::<u64, LEN>(u64::MAX  );
}

#[test]
fn can_serialize_u128() {
    const LEN: usize = 16;
    test_serialize_exact::<u128, LEN>(u128::MIN  );
    test_serialize_exact::<u128, LEN>(u128::MIN+1);
    test_serialize_exact::<u128, LEN>(u128::MAX-1);
    test_serialize_exact::<u128, LEN>(u128::MAX  );
}

#[test]
fn can_serialize_i8() {
    const LEN: usize = 1;
    test_serialize_exact::<i8 , LEN>(i8::MIN );
    test_serialize_exact::<i8 , LEN>(i8::MIN+1);
    test_serialize_exact::<i8 , LEN>(i8::MAX-1);
    test_serialize_exact::<i8 , LEN>(i8::MAX );
    test_serialize_exact::<i8 , LEN>(-1);
    test_serialize_exact::<i8 , LEN>(0);
    test_serialize_exact::<i8 , LEN>(1);
}

#[test]
fn can_serialize_i16() {
    const LEN: usize = 2;
    test_serialize_exact::<i16, LEN>(i16::MIN );
    test_serialize_exact::<i16, LEN>(i16::MIN+1);
    test_serialize_exact::<i16, LEN>(i16::MAX-1);
    test_serialize_exact::<i16, LEN>(i16::MAX );
    test_serialize_exact::<i16, LEN>(-1);
    test_serialize_exact::<i16, LEN>(0);
    test_serialize_exact::<i16, LEN>(1);
}

#[test]
fn can_serialize_i32() {
    const LEN: usize = 4;
    test_serialize_exact::<i32, LEN>(i32::MIN  );
    test_serialize_exact::<i32, LEN>(i32::MIN+1);
    test_serialize_exact::<i32, LEN>(i32::MAX-1);
    test_serialize_exact::<i32, LEN>(i32::MAX  );
    test_serialize_exact::<i32, LEN>(-1);
    test_serialize_exact::<i32, LEN>(0);
    test_serialize_exact::<i32, LEN>(1);
}

#[test]
fn can_serialize_i64() {
    const LEN: usize = 8;
    test_serialize_exact::<i64, LEN>(i64::MIN  );
    test_serialize_exact::<i64, LEN>(i64::MIN+1);
    test_serialize_exact::<i64, LEN>(i64::MAX-1);
    test_serialize_exact::<i64, LEN>(i64::MAX  );
    test_serialize_exact::<i64, LEN>(-1);
    test_serialize_exact::<i64, LEN>(0);
    test_serialize_exact::<i64, LEN>(1);
}

#[test]
fn can_serialize_i128() {
    const LEN: usize = 16;
    test_serialize_exact::<i128, LEN>(i128::MIN  );
    test_serialize_exact::<i128, LEN>(i128::MIN+1);
    test_serialize_exact::<i128, LEN>(i128::MAX-1);
    test_serialize_exact::<i128, LEN>(i128::MAX  );
}

#[test]
fn can_serialize_f32() {
    const LEN: usize = 4;
    test_serialize_exact::<f32, LEN>(  f32::MIN);
    test_serialize_exact::<f32, LEN>(  f32::MAX);
    test_serialize_exact::<f32, LEN>(-1f32);
    test_serialize_exact::<f32, LEN>( 0f32);
    test_serialize_exact::<f32, LEN>( 1f32);
    assert!(test_serialize_exact_no_cmp::<f32, LEN>(f32::NAN).is_nan());
}

#[test]
fn can_serialize_f64() {
    const LEN: usize = 8;
    test_serialize_exact::<f64, LEN>(  f64::MIN);
    test_serialize_exact::<f64, LEN>(  f64::MAX);
    test_serialize_exact::<f64, LEN>(-1f64);
    test_serialize_exact::<f64, LEN>( 0f64);
    test_serialize_exact::<f64, LEN>( 1f64);
    assert!(test_serialize_exact_no_cmp::<f64, LEN>(f64::NAN).is_nan());
}

#[test]
fn can_serialize_char() {
    const LEN: usize = 4;
    test_serialize_exact::<char, LEN>(' ');
    test_serialize_exact::<char, LEN>('🔥');    
}