step-p21 0.1.1

ISO 10303-21 (STEP file) parser and serde-based entity tables
Documentation
use serde::Deserialize;
use step_p21::{ast::*, primitive::*};

fn sub_deserialize<T>(param: &str, ans: T)
where
    T: std::fmt::Debug + PartialEq + Deserialize<'static>,
{
    let p = Parameter::Enumeration(param.to_string());
    let x: T = Deserialize::deserialize(&p).unwrap();
    assert_eq!(x, ans);
}

#[test]
fn bool_deserialize() {
    sub_deserialize("T", true);
    sub_deserialize("TRUE", true);
    sub_deserialize("F", false);
    sub_deserialize("FALSE", false);

    let p = Parameter::Enumeration("UNKNOWN".to_string());
    assert!(bool::deserialize(&p).is_err());
}

#[test]
fn deserialize_logical() {
    sub_deserialize("T", Logical::True);
    sub_deserialize("TRUE", Logical::True);
    sub_deserialize("F", Logical::False);
    sub_deserialize("FALSE", Logical::False);
    sub_deserialize("U", Logical::Unknown);
    sub_deserialize("Unknown", Logical::Unknown);

    let p = Parameter::Enumeration("Q".to_string());
    assert!(Logical::deserialize(&p).is_err());
}