use spg_engine::{Engine, QueryResult};
fn b(e: &mut Engine, sql: &str) -> bool {
match e.execute(sql).unwrap() {
QueryResult::Rows { rows, .. } => {
matches!(rows[0].values[0], spg_storage::Value::Bool(true))
}
_ => panic!("rows"),
}
}
#[test]
fn tsquery_total_order() {
let mut e = Engine::new();
assert!(!b(&mut e, "SELECT 'b'::tsquery < 'c'::tsquery"));
assert!(!b(&mut e, "SELECT 'cat'::tsquery < 'dog'::tsquery"));
assert!(b(&mut e, "SELECT 'a'::tsquery < 'z'::tsquery"));
assert!(b(&mut e, "SELECT 'a'::tsquery < 'a & b'::tsquery"));
assert!(!b(&mut e, "SELECT '!a'::tsquery < 'a'::tsquery")); assert!(!b(&mut e, "SELECT 'a & b'::tsquery < 'a & c'::tsquery"));
assert!(b(&mut e, "SELECT 'a | b'::tsquery < 'a & b'::tsquery"));
assert!(!b(
&mut e,
"SELECT '(a & b) | c'::tsquery < 'a | (b & c)'::tsquery"
));
assert!(b(&mut e, "SELECT 'a <2> b'::tsquery < 'a <-> b'::tsquery"));
assert!(b(&mut e, "SELECT ('a & b'::tsquery = 'a & b'::tsquery)"));
assert!(b(&mut e, "SELECT ('a & b'::tsquery <> 'b & a'::tsquery)"));
}