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