1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
use crate::*;
test_case!(reverse, async move {
use gluesql_core::{
executor::EvaluateError,
prelude::{Payload, Value},
};
let test_cases = vec![
("CREATE TABLE Item (name TEXT)", Ok(Payload::Create)),
(
r#"INSERT INTO Item VALUES ("Let's meet")"#,
Ok(Payload::Insert(1)),
),
(
"SELECT REVERSE(name) AS test FROM Item;",
Ok(select!(
"test"
Value::Str;
"teem s'teL".to_owned()
)),
),
(
r#"SELECT REVERSE(1) AS test FROM Item"#,
Err(EvaluateError::FunctionRequiresStringValue("REVERSE".to_owned()).into()),
),
(
"CREATE TABLE NullTest (name TEXT null)",
Ok(Payload::Create),
),
(
r#"INSERT INTO NullTest VALUES (null)"#,
Ok(Payload::Insert(1)),
),
(
r#"SELECT REVERSE(name) AS test FROM NullTest"#,
Ok(select_with_null!(test; Value::Null)),
),
];
for (sql, expected) in test_cases.into_iter() {
test!(expected, sql);
}
});