inspect-rs 0.1.0

Universal introspection for Rust
Documentation
use inspect_core::{Inspect, InspectCx, Kind};

#[test]
fn test_unit() {
    let value = ();
    let mut cx = InspectCx::new();
    let inspected = value.inspect(&mut cx);
    assert_eq!(inspected.kind(), &Kind::Unit);
    assert_eq!(inspected.type_info().name(), "()");
}

#[test]
fn test_bool() {
    let value = true;
    let mut cx = InspectCx::new();
    let inspected = value.inspect(&mut cx);
    assert_eq!(inspected.kind(), &Kind::Bool(true));
}

#[test]
fn test_integers() {
    let mut cx = InspectCx::new();

    assert_eq!(42i8.inspect(&mut cx).kind(), &Kind::I8(42));
    assert_eq!(42i16.inspect(&mut cx).kind(), &Kind::I16(42));
    assert_eq!(42i32.inspect(&mut cx).kind(), &Kind::I32(42));
    assert_eq!(42i64.inspect(&mut cx).kind(), &Kind::I64(42));

    assert_eq!(42u8.inspect(&mut cx).kind(), &Kind::U8(42));
    assert_eq!(42u16.inspect(&mut cx).kind(), &Kind::U16(42));
    assert_eq!(42u32.inspect(&mut cx).kind(), &Kind::U32(42));
    assert_eq!(42u64.inspect(&mut cx).kind(), &Kind::U64(42));
}

#[test]
#[allow(clippy::approx_constant)]
fn test_floats() {
    let mut cx = InspectCx::new();

    assert_eq!(3.14f32.inspect(&mut cx).kind(), &Kind::F32(3.14));
    assert_eq!(3.14f64.inspect(&mut cx).kind(), &Kind::F64(3.14));
}

#[test]
fn test_char() {
    let value = 'x';
    let mut cx = InspectCx::new();
    let inspected = value.inspect(&mut cx);
    assert_eq!(inspected.kind(), &Kind::Char('x'));
}

#[test]
fn test_str() {
    let value = "hello";
    let mut cx = InspectCx::new();
    let inspected = value.inspect(&mut cx);

    match inspected.kind() {
        Kind::Str(s) => assert_eq!(s.as_ref(), "hello"),
        _ => panic!("Expected Str kind"),
    }
}

#[test]
fn test_string() {
    let value = String::from("world");
    let mut cx = InspectCx::new();
    let inspected = value.inspect(&mut cx);

    match inspected.kind() {
        Kind::Str(s) => assert_eq!(s.as_ref(), "world"),
        _ => panic!("Expected Str kind"),
    }
}