gluesql_test_suite/
array.rs1use {
2 crate::*,
3 gluesql_core::prelude::{Payload, Value::*},
4};
5
6test_case!(array, {
7 let g = get_tester!();
8 g.run("CREATE TABLE Test (id INTEGER DEFAULT 1,name LIST NOT NULL);")
9 .await;
10
11 g.named_test(
12 "basic insert - single item",
13 "INSERT INTO Test (id, name) VALUES (1, ['Seongbin','Bernie']);",
14 Ok(Payload::Insert(1)),
15 )
16 .await;
17 g.named_test("insert multiple rows","INSERT INTO Test (id, name) VALUES (3,Array['Seongbin','Bernie','Chobobdev']), (2,Array['devgony','Henry']);", Ok(Payload::Insert(2)),).await;
18 g.test(
19 "INSERT INTO Test VALUES(5,['Jhon']);",
20 Ok(Payload::Insert(1)),
21 )
22 .await;
23 g.test(
24 "INSERT INTO Test (name) VALUES (['Jane']);",
25 Ok(Payload::Insert(1)),
26 )
27 .await;
28 g.test(
29 "INSERT INTO Test (name) VALUES (['GlueSQL']);",
30 Ok(Payload::Insert(1)),
31 )
32 .await;
33 g.test("SELECT * FROM Test;",Ok(select_with_null!(
34 id | name;
35 I64(1) List(vec![Str("Seongbin".to_owned()),Str("Bernie".to_owned())]);
36 I64(3) List(vec![Str("Seongbin".to_owned()),Str("Bernie".to_owned()),Str("Chobobdev".to_owned())]);
37 I64(2) List(vec![Str("devgony".to_owned()),Str("Henry".to_owned())]);
38 I64(5) List(vec![Str("Jhon".to_owned())]);
39 I64(1) List(vec![Str("Jane".to_owned())]);
40 I64(1) List(vec![Str("GlueSQL".to_owned())])
41 )),
42 )
43
44 .await;
45 g.test(
46 "SELECT ['name', 1, True] AS list;",
47 Ok(Payload::Select {
48 labels: vec!["list".to_owned()],
49 rows: vec![vec![List(vec![Str("name".to_owned()), I64(1), Bool(true)])]],
50 }),
51 )
52 .await;
53
54 g.test(
55 "SELECT ['GlueSQL', 1, True] [0] AS list;",
56 Ok(Payload::Select {
57 labels: vec!["list".to_owned()],
58 rows: vec![vec![Str("GlueSQL".to_owned())]],
59 }),
60 )
61 .await;
62});