Skip to content

Commit

Permalink
test : test code for array for list data type
Browse files Browse the repository at this point in the history
  • Loading branch information
ChobobDev committed Jul 20, 2023
1 parent 874a1ec commit 5d2b684
Showing 1 changed file with 92 additions and 0 deletions.
92 changes: 92 additions & 0 deletions test-suite/src/array.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
use {
crate::*,
gluesql_core::{
error::TranslateError,
prelude::{Payload, Value::*},
},
};

test_case!(array, async move {
run!(
"
CREATE TABLE Test (
id INTEGER DEFAULT 1,
surname TEXT NULL,
name ARRAY NOT NULL,
);"
);

test! {
name: "basic insert - single item",
sql: "INSERT INTO Test (id, surname, name) VALUES (1, 'CHO', ['Seongbin','Bernie']);",
expected: Ok(Payload::Insert(1))
};
test! {
name: "insert multiple rows",
sql: "
INSERT INTO Test (id, surname, name)
VALUES
(3, 'CHO', ['Seongbin','Bernie','Chobobdev']),
(2, 'CHO', ['devgony','Henry']);
",
expected: Ok(Payload::Insert(2))
};
test! {
sql: "INSERT INTO Test VALUES(5,'DOE', ['Jhon']);",
expected: Ok(Payload::Insert(1))
};

test! {
sql: "INSERT INTO Test (surname, name) VALUES ('DOE', ['Jane']);",
expected: Ok(Payload::Insert(1))
};

test! {
sql: "INSERT INTO Test (name) VALUES (['GlueSQL']);",
expected: Ok(Payload::Insert(1))
};

test! {
sql: "INSERT INTO Test (id, surname) VALUES (1, 'CHO');",
expected: Err(InsertError::LackOfRequiredColumn("name".to_owned()).into())
};

test! {
sql: "SELECT * FROM Test;",
expected: Ok(select_with_null!(
id | surname | name;
I64(1) Str("CHO".to_owned()) Array(["Seongbin","Bernie"].to_owned());
I64(3) Str("CHO".to_owned()) Array(["Seongbin","Bernie","Chobobdev"].to_owned());
I64(2) Str("CHO".to_owned()) Array(["devgony","Henry"].to_owned());
I64(5) Str("DOE".to_owned()) Array(["Jhon"].to_owned());
I64(1) Str("DOE".to_owned()) Array(["Jane"].to_owned());
I64(1) Null Array(["GlueSQL"].to_owned())
))
};

run!("CREATE TABLE Target AS SELECT * FROM Test WHERE 1 = 0;");

test! {
name: "insert into target from source",
sql: "INSERT INTO Target SELECT * FROM Test;",
expected: Ok(Payload::Insert(6))
};

test! {
name: "target rows are equivalent to source rows",
sql: "SELECT * FROM Target;",
expected: Ok(select_with_null!(
id | surname | name;
I64(1) Str("CHO".to_owned()) Array(["Seongbin","Bernie"].to_owned());
I64(3) Str("CHO".to_owned()) Array(["Seongbin","Bernie","Chobobdev"].to_owned());
I64(2) Str("CHO".to_owned()) Array(["devgony","Henry"].to_owned());
I64(5) Str("DOE".to_owned()) Array(["Jhon"].to_owned());
I64(1) Str("DOE".to_owned()) Array(["Jane"].to_owned());
I64(1) Null Array(["GlueSQL"].to_owned())
))
};


run!("DELETE FROM Item");
run!("DELETE FROM Target");
});

0 comments on commit 5d2b684

Please sign in to comment.