use spg_engine::{Engine, QueryResult};
fn scalar(e: &mut Engine, sql: &str) -> spg_storage::Value<'static> {
match e.execute(sql).unwrap() {
QueryResult::Rows { rows, .. } => rows[0].values[0].clone(),
_ => panic!("expected rows"),
}
}
#[test]
fn enum_cast_validates_membership() {
let mut e = Engine::new();
e.execute("CREATE TYPE mood AS ENUM ('sad','ok','happy')")
.unwrap();
assert_eq!(
scalar(&mut e, "SELECT 'happy'::mood"),
spg_storage::Value::text("happy")
);
assert_eq!(
scalar(&mut e, "SELECT 'sad'::mood"),
spg_storage::Value::text("sad")
);
assert!(e.execute("SELECT 'bad'::mood").is_err());
assert_eq!(
scalar(&mut e, "SELECT NULL::mood"),
spg_storage::Value::Null
);
assert_eq!(
scalar(&mut e, "SELECT ('ok'::mood = 'ok')"),
spg_storage::Value::Bool(true)
);
}