confique 0.4.0

Type-safe, layered, light-weight, `serde`-based configuration library
Documentation
use super::*;

fn de<'de, T: serde::Deserialize<'de>>(v: &'static str) -> Result<T, DeError> {
    T::deserialize(Deserializer { value: v.into() })
}


#[test]
fn boolean() {
    assert_eq!(de("1"), Ok(true));
    assert_eq!(de("true "), Ok(true));
    assert_eq!(de(" True "), Ok(true));
    assert_eq!(de("  TRUE"), Ok(true));
    assert_eq!(de("yes"), Ok(true));
    assert_eq!(de(" Yes"), Ok(true));
    assert_eq!(de("YES "), Ok(true));

    assert_eq!(de("0  "), Ok(false));
    assert_eq!(de(" false"), Ok(false));
    assert_eq!(de(" False "), Ok(false));
    assert_eq!(de("FALSE "), Ok(false));
    assert_eq!(de("no"), Ok(false));
    assert_eq!(de(" No"), Ok(false));
    assert_eq!(de("NO "), Ok(false));
}

#[test]
fn ints() {
    assert_eq!(de("0"), Ok(0u8));
    assert_eq!(de("-1 "), Ok(-1i8));
    assert_eq!(de(" 27"), Ok(27u16));
    assert_eq!(de("-27"), Ok(-27i16));
    assert_eq!(de("   4301"), Ok(4301u32));
    assert_eq!(de(" -123456"), Ok(-123456i32));
    assert_eq!(de(" 986543210    "), Ok(986543210u64));
    assert_eq!(de("-986543210"), Ok(-986543210i64));
}

#[test]
fn floats() {
    assert_eq!(de("3.1415"), Ok(3.1415f32));
    assert_eq!(de("-123.456"), Ok(-123.456f64));
}