use ruststep::tables::*; use std::str::FromStr; espr_derive::inline_express!( r#" SCHEMA test_schema; ENTITY a; x: REAL; END_ENTITY; ENTITY b; y: INTEGER; END_ENTITY; ENTITY c; z: STRING; END_ENTITY; TYPE sup = SELECT (a, b); END_TYPE; TYPE sup_sup = SELECT (sup, c); END_TYPE; END_SCHEMA; "# ); use test_schema::*; const EXAMPLE: &str = r#" DATA; #1 = A(3.34); #2 = B(57); #3 = C('hoge'); ENDSEC; "#; #[test] fn get_owned_sup() { let table = Tables::from_str(EXAMPLE).unwrap(); let sup1 = EntityTable::::get_owned(&table, 1).unwrap(); assert_eq!(sup1, Sup::A(Box::new(A { x: 3.34 }))); let sup2 = EntityTable::::get_owned(&table, 2).unwrap(); assert_eq!(sup2, Sup::B(Box::new(B { y: 57 }))); } #[test] fn get_owned_supsup() { let table = Tables::from_str(EXAMPLE).unwrap(); let sup1 = EntityTable::::get_owned(&table, 1).unwrap(); let supsup1 = EntityTable::::get_owned(&table, 1).unwrap(); assert_eq!(supsup1, SupSup::Sup(Box::new(sup1))); let sup2 = EntityTable::::get_owned(&table, 2).unwrap(); let supsup2 = EntityTable::::get_owned(&table, 2).unwrap(); assert_eq!(supsup2, SupSup::Sup(Box::new(sup2))); let supsup3 = EntityTable::::get_owned(&table, 3).unwrap(); assert_eq!(supsup3, SupSup::C(Box::new(C { z: "hoge".into() }))); }