gluesql_test_suite/
array.rs

1use {
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});