#![cfg(feature = "std")]
use graphitesql::{Connection, Value};
fn one(c: &Connection, sql: &str) -> Value {
c.query(sql).unwrap().rows.remove(0).remove(0)
}
#[test]
fn string_literal_column_alias() {
let c = Connection::open_memory().unwrap();
assert_eq!(one(&c, "SELECT 'a' 'b'"), Value::Text("a".into()));
assert_eq!(one(&c, "SELECT 5 'col'"), Value::Integer(5));
assert_eq!(one(&c, "SELECT 1 AS 'name'"), Value::Integer(1));
assert_eq!(one(&c, "SELECT c2 FROM (SELECT 1 'c2')"), Value::Integer(1));
let r = c.query("SELECT 7 'lucky'").unwrap();
assert_eq!(r.columns, vec!["lucky".to_string()]);
}
#[test]
fn string_literal_table_alias() {
let c = Connection::open_memory().unwrap();
assert_eq!(
one(&c, "SELECT m.c FROM (SELECT 1 c) 'm'"),
Value::Integer(1)
);
assert_eq!(
one(&c, "SELECT x.c FROM (SELECT 1 c) AS 'x'"),
Value::Integer(1)
);
}
#[test]
fn empty_cast_type_is_a_noop() {
let c = Connection::open_memory().unwrap();
assert_eq!(one(&c, "SELECT CAST(1 AS)"), Value::Integer(1));
assert_eq!(one(&c, "SELECT CAST('hi' AS)"), Value::Text("hi".into()));
assert_eq!(one(&c, "SELECT CAST('x' AS BANANA)"), Value::Integer(0));
assert_eq!(one(&c, "SELECT CAST(3.7 AS BANANA)"), Value::Real(3.7));
}