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 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
use crate::*; test_case!(create_table, async move { let test_cases = vec![ ( r#" CREATE TABLE CreateTable1 ( id INTEGER NULL, num INTEGER, name TEXT )"#, Ok(Payload::Create), ), ( r#" CREATE TABLE CreateTable1 ( id INTEGER NULL, num INTEGER, name TEXT )"#, Err(AlterError::TableAlreadyExists("CreateTable1".to_owned()).into()), ), ( r#" CREATE TABLE IF NOT EXISTS CreateTable2 ( id INTEGER NULL, num INTEGER, name TEXT )"#, Ok(Payload::Create), ), ( r#" CREATE TABLE IF NOT EXISTS CreateTable2 ( id2 INTEGER NULL, )"#, Ok(Payload::Create), ), ( r#"INSERT INTO CreateTable2 VALUES (NULL, 1, "1");"#, Ok(Payload::Insert(1)), ), ( "CREATE TABLE Gluery (id SOMEWHAT);", Err(TranslateError::UnsupportedDataType("SOMEWHAT".to_owned()).into()), ), ( "CREATE TABLE Gluery (id INTEGER CHECK (true));", Err(TranslateError::UnsupportedColumnOption("CHECK (true)".to_owned()).into()), ), ( r#" CREATE TABLE CreateTable3 ( id INTEGER, ratio FLOAT UNIQUE )"#, Err(AlterError::UnsupportedDataTypeForUniqueColumn( "ratio".to_owned(), ast::DataType::Float, ) .into()), ), ( "CREATE TABLE Gluery (id INTEGER DEFAULT (SELECT id FROM Wow))", Err(EvaluateError::UnsupportedStatelessExpr(expr!("(SELECT id FROM Wow)")).into()), ), ]; for (sql, expected) in test_cases.into_iter() { test!(expected, sql); } });