use spg_engine::{Engine, QueryResult};
fn val(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 win1252_convert_to() {
let mut e = Engine::new();
assert_eq!(
val(&mut e, "SELECT convert_to('A', 'WIN1252')"),
spg_storage::Value::Bytes(vec![0x41].into())
);
assert_eq!(
val(&mut e, "SELECT convert_to(E'\\u20AC', 'WIN1252')"),
spg_storage::Value::Bytes(vec![0x80].into())
);
assert_eq!(
val(&mut e, "SELECT convert_to('A', 'CP1252')"),
spg_storage::Value::Bytes(vec![0x41].into())
);
}
#[test]
fn win1252_convert_from() {
let mut e = Engine::new();
assert_eq!(
val(&mut e, r"SELECT convert_from('\x80'::bytea, 'WIN1252')"),
spg_storage::Value::text("€")
);
assert_eq!(
val(&mut e, r"SELECT convert_from('\x41e9'::bytea, 'WIN1252')"),
spg_storage::Value::text("Aé")
);
}
#[test]
fn win1252_undefined_byte_errors() {
let mut e = Engine::new();
assert!(
e.execute(r"SELECT convert_from('\x81'::bytea, 'WIN1252')")
.is_err()
);
}