Documentation
use crate::util::*;
testcase!(test);
fn test(mut glue: multisql::Glue) {
	glue.execute(
		r#"
		CREATE TABLE basic (
			a INTEGER
		)
	"#,
	)
	.expect("CREATE TABLE basic");

	assert_success!(
		glue,
		"
			CREATE TABLE CreateTable1 (
				id INTEGER NULL,
				num INTEGER,
				name TEXT
			)"
	);
	assert_error!(
		glue,
		"
			CREATE TABLE CreateTable1 (
				id INTEGER NULL,
				num INTEGER,
				name TEXT
			)",
		multisql::AlterError::TableAlreadyExists("CreateTable1".to_owned())
	);
	assert_success!(
		glue,
		"
			CREATE TABLE IF NOT EXISTS CreateTable2 (
				id INTEGER NULL,
				num INTEGER,
				name TEXT
			)"
	);
	assert_success!(
		glue,
		"CREATE TABLE IF NOT EXISTS CreateTable2 (
				id2 INTEGER NULL,
				)"
	);
	assert_success!(glue, "INSERT INTO CreateTable2 VALUES (NULL, 1, '1');");
	assert_error!(
		glue,
		"CREATE TABLE Gluery (id SOMEWHAT);",
		multisql::AlterError::UnsupportedDataType("SOMEWHAT".to_owned())
	);
	assert_error!(
		glue,
		"CREATE TABLE Gluery (id INTEGER CHECK (true));",
		multisql::AlterError::UnsupportedColumnOption("CHECK (true)".to_owned())
	);
	assert_error!(
		glue,
		"
			CREATE TABLE CreateTable3 (
				id INTEGER,
				ratio FLOAT UNIQUE
			)",
		multisql::AlterError::UnsupportedDataTypeForUniqueColumn(
			"ratio".to_owned(),
			"FLOAT".to_owned(),
		)
	);
}