From b40b085ae5a3e0d65df480998b76d4270b7ef6ed Mon Sep 17 00:00:00 2001 From: "Timothy J. Warren" Date: Tue, 8 Apr 2014 15:18:51 -0400 Subject: [PATCH] Add test sql files --- tests/databases/sqlite/SqliteTest.php | 47 ++++++++++++ tests/db_files/FB_TEST_DB.FDB | Bin 860160 -> 860160 bytes tests/db_files/firebird.sql | 94 +++++++++++++++++++++++ tests/db_files/mysql.sql | 1 + tests/db_files/pgsql.sql | 105 ++++++++++++++++++++++++++ tests/db_files/sqlite.sql | 57 ++++++++++++++ 6 files changed, 304 insertions(+) create mode 100644 tests/db_files/firebird.sql create mode 100644 tests/db_files/mysql.sql create mode 100644 tests/db_files/pgsql.sql create mode 100644 tests/db_files/sqlite.sql diff --git a/tests/databases/sqlite/SqliteTest.php b/tests/databases/sqlite/SqliteTest.php index a37c9e4..3e3b684 100644 --- a/tests/databases/sqlite/SqliteTest.php +++ b/tests/databases/sqlite/SqliteTest.php @@ -31,8 +31,15 @@ class SQLiteTest extends DBTest { // ! Util Method tests // -------------------------------------------------------------------------- + public function DataCreate() + { + $this->db->exec(file_get_contents(QTEST_DIR.'/db_files/sqlite.sql')); + } + public function testCreateTable() { + $this->DataCreate(); + //Attempt to create the table $sql = $this->db->util->create_table('create_test', array( @@ -106,6 +113,46 @@ SQL; $expected = << 100; CREATE TABLE "create_delete" ("id" INTEGER PRIMARY KEY, "key" TEXT, "val" TEXT); SQL; diff --git a/tests/db_files/FB_TEST_DB.FDB b/tests/db_files/FB_TEST_DB.FDB index ad2957101e1fb5cf5da03d46931c6b56eb4440c6..cbd1daa034283e4222d88cdf3104c07f4deb7989 100755 GIT binary patch delta 5211 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 diff --git a/tests/db_files/firebird.sql b/tests/db_files/firebird.sql new file mode 100644 index 0000000..598f9c3 --- /dev/null +++ b/tests/db_files/firebird.sql @@ -0,0 +1,94 @@ +-- sample data to test Firebird system tables + +-- TABLE TEST +CREATE TABLE TEST1 ( + TEST_NAME CHAR(30) CHARACTER SET NONE NOT NULL COLLATE NONE, + TEST_ID INTEGER DEFAULT '0' NOT NULL, + TEST_DATE TIMESTAMP NOT NULL +); +ALTER TABLE TEST1 ADD CONSTRAINT PK_TEST PRIMARY KEY (TEST_ID); + +-- TABLE TEST2 with some CONSTRAINTs and an INDEX +CREATE TABLE TEST2 ( + ID INTEGER NOT NULL, + FIELD1 INTEGER, + FIELD2 CHAR(15) CHARACTER SET NONE COLLATE NONE, + FIELD3 VARCHAR(50) CHARACTER SET NONE COLLATE NONE, + FIELD4 INTEGER, + FIELD5 INTEGER, + ID2 INTEGER NOT NULL +); +ALTER TABLE TEST2 ADD PRIMARY KEY (ID2); +CREATE UNIQUE INDEX TEST2_FIELD1ID_IDX ON TEST2(ID, FIELD1); +CREATE UNIQUE INDEX TEST2_FIELD4_IDX ON TEST2(FIELD4); +CREATE INDEX TEST2_FIELD5_IDX ON TEST2(FIELD5); + +-- TABLE NUMBERS +CREATE TABLE NUMBERS ( + NUMBER INTEGER DEFAULT '0' NOT NULL, + EN CHAR(100) CHARACTER SET ISO8859_1 NOT NULL COLLATE ISO8859_1, + FR CHAR(100) CHARACTER SET ISO8859_1 NOT NULL COLLATE ISO8859_1 +); + +-- TABLE NEWTABLE +CREATE TABLE NEWTABLE ( + ID INT DEFAULT 0 NOT NULL, + SOMENAME VARCHAR (12), + SOMEDESCRIPTION VARCHAR (12) +); +ALTER TABLE NEWTABLE ADD CONSTRAINT PKINDEX_IDX PRIMARY KEY (ID); +CREATE GENERATOR NEWTABLE_SEQ; + +-- VIEW on TEST +CREATE VIEW "testview"( + TEST_NAME, + TEST_ID, + TEST_DATE +) AS +SELECT * +FROM TEST1 +WHERE TEST_NAME LIKE 't%'; + +-- VIEW on NUMBERS +CREATE VIEW "numbersview"( + NUM, + EN, + FR +) AS +SELECT * +FROM NUMBERS +WHERE NUMBER > 100; + +-- TRIGGER on NEWTABLE (emulate autoincrement) +SET TERM ^ ; + +CREATE TRIGGER AUTOINCREMENTPK FOR NEWTABLE +ACTIVE BEFORE INSERT POSITION 0 +AS BEGIN + IF (NEW.ID IS NULL OR NEW.ID = 0) THEN + NEW.ID = GEN_ID(NEWTABLE_SEQ, 1); +END^ + +SET TERM ; ^ + +-- SAMPLE STORED PROCEDURE +SET TERM ^ ; + +CREATE PROCEDURE getEnglishNumber(N INTEGER) +RETURNS ( + english_number CHAR(100) +) +AS +BEGIN + FOR + SELECT EN + FROM NUMBERS + WHERE NUMBER = :N + INTO :english_number + DO + BEGIN + SUSPEND; + END +END ^ + +SET TERM ; ^ diff --git a/tests/db_files/mysql.sql b/tests/db_files/mysql.sql new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/tests/db_files/mysql.sql @@ -0,0 +1 @@ + diff --git a/tests/db_files/pgsql.sql b/tests/db_files/pgsql.sql new file mode 100644 index 0000000..0f48e9e --- /dev/null +++ b/tests/db_files/pgsql.sql @@ -0,0 +1,105 @@ +-- sample data to test PostgreSQL INFORMATION_SCHEMA + +-- TABLE TEST +CREATE TABLE IF NOT EXISTS TEST1 ( + TEST_NAME CHAR(30) NOT NULL, + TEST_ID INTEGER DEFAULT '0' NOT NULL, + TEST_DATE TIMESTAMP NOT NULL +); +ALTER TABLE TEST1 DROP CONSTRAINT IF EXISTS PK_TEST CASCADE; +ALTER TABLE TEST1 ADD CONSTRAINT PK_TEST PRIMARY KEY (TEST_ID); + +-- TABLE TEST2 with some CONSTRAINTs and an INDEX +CREATE TABLE IF NOT EXISTS TEST2 ( + ID INTEGER NOT NULL, + FIELD1 INTEGER, + FIELD2 CHAR(15), + FIELD3 VARCHAR(50), + FIELD4 INTEGER, + FIELD5 INTEGER, + ID2 INTEGER NOT NULL +); +ALTER TABLE TEST2 DROP CONSTRAINT IF EXISTS PK_TEST2 CASCADE; +ALTER TABLE TEST2 DROP CONSTRAINT IF EXISTS TEST2_FIELD1ID_IDX CASCADE; +ALTER TABLE TEST2 DROP CONSTRAINT IF EXISTS TEST2_FIELD4_IDX CASCADE; +DROP INDEX IF EXISTS TEST2_FIELD5_IDX; + +ALTER TABLE TEST2 ADD CONSTRAINT PK_TEST2 PRIMARY KEY (ID2); +ALTER TABLE TEST2 ADD CONSTRAINT TEST2_FIELD1ID_IDX UNIQUE (ID, FIELD1); +ALTER TABLE TEST2 ADD CONSTRAINT TEST2_FIELD4_IDX UNIQUE (FIELD4); +CREATE INDEX TEST2_FIELD5_IDX ON TEST2(FIELD5); + +-- TABLE NUMBERS +CREATE TABLE IF NOT EXISTS NUMBERS ( + NUMBER INTEGER DEFAULT '0' NOT NULL, + EN CHAR(100) NOT NULL, + FR CHAR(100) NOT NULL +); + +-- TABLE NEWTABLE +CREATE TABLE IF NOT EXISTS NEWTABLE ( + ID INT DEFAULT 0 NOT NULL, + SOMENAME VARCHAR (12), + SOMEDATE TIMESTAMP NOT NULL +); +ALTER TABLE NEWTABLE DROP CONSTRAINT IF EXISTS PKINDEX_IDX CASCADE; +ALTER TABLE NEWTABLE ADD CONSTRAINT PKINDEX_IDX PRIMARY KEY (ID); + +DROP SEQUENCE IF EXISTS NEWTABLE_SEQ CASCADE; +CREATE SEQUENCE NEWTABLE_SEQ INCREMENT 1 START 1; + +-- VIEW on TEST +CREATE OR REPLACE VIEW "testview"( + TEST_NAME, + TEST_ID, + TEST_DATE +) AS +SELECT * +FROM TEST1 +WHERE TEST_NAME LIKE 't%'; + +-- VIEW on NUMBERS +CREATE OR REPLACE VIEW "numbersview"( + NUMBER, + TRANS_EN, + TRANS_FR +) AS +SELECT * +FROM NUMBERS +WHERE NUMBER > 100; + +-- TRIGGER on NEWTABLE +DROP FUNCTION IF EXISTS add_stamp() CASCADE; +CREATE OR REPLACE FUNCTION add_stamp() RETURNS OPAQUE AS ' + BEGIN + IF (NEW.somedate IS NULL OR NEW.somedate = 0) THEN + NEW.somedate := CURRENT_TIMESTAMP; + RETURN NEW; + END IF; + END; +' LANGUAGE 'plpgsql'; + +DROP TRIGGER IF EXISTS ADDCURRENTDATE ON newtable; + +CREATE TRIGGER ADDCURRENTDATE +BEFORE INSERT OR UPDATE +ON newtable FOR EACH ROW + EXECUTE PROCEDURE add_stamp(); + +-- TABLEs for testing CONSTRAINTs +CREATE TABLE IF NOT EXISTS testconstraints ( + someid integer NOT NULL, + somename character varying(10) NOT NULL, + CONSTRAINT testconstraints_id_pk PRIMARY KEY (someid) +); +CREATE TABLE IF NOT EXISTS testconstraints2 ( + ext_id integer NOT NULL, + modified date, + uniquefield character varying(10) NOT NULL, + usraction integer NOT NULL, + CONSTRAINT testconstraints_id_fk FOREIGN KEY (ext_id) + REFERENCES testconstraints (someid) MATCH SIMPLE + ON UPDATE CASCADE ON DELETE CASCADE, + CONSTRAINT unique_2_fields_idx UNIQUE (modified, usraction), + CONSTRAINT uniquefld_idx UNIQUE (uniquefield) +); diff --git a/tests/db_files/sqlite.sql b/tests/db_files/sqlite.sql new file mode 100644 index 0000000..9d4bd0c --- /dev/null +++ b/tests/db_files/sqlite.sql @@ -0,0 +1,57 @@ +-- sample data to test SQLite + +-- TABLE TEST +DROP TABLE IF EXISTS TEST1; +CREATE TABLE TEST1 ( + TEST_NAME TEXT NOT NULL, + TEST_ID INTEGER DEFAULT '0' NOT NULL, + TEST_DATE TEXT NOT NULL, + CONSTRAINT PK_TEST PRIMARY KEY (TEST_ID) +); + +-- TABLE TEST2 with some CONSTRAINTs and an INDEX +DROP TABLE IF EXISTS TEST2; +CREATE TABLE TEST2 ( + ID INTEGER NOT NULL, + FIELD1 INTEGER, + FIELD2 TEXT, + FIELD3 TEXT, + FIELD4 INTEGER, + FIELD5 INTEGER, + ID2 INTEGER NOT NULL, + CONSTRAINT PK_TEST2 PRIMARY KEY (ID2), + CONSTRAINT TEST2_FIELD1ID_IDX UNIQUE (ID, FIELD1), + CONSTRAINT TEST2_FIELD4_IDX UNIQUE (FIELD4) +); +CREATE INDEX TEST2_FIELD5_IDX ON TEST2 (FIELD5); + +-- TABLE NUMBERS +DROP TABLE IF EXISTS NUMBERS; +CREATE TABLE NUMBERS ( + NUMBER INTEGER DEFAULT 0 NOT NULL, + EN TEXT NOT NULL, + FR TEXT NOT NULL +); + +-- TABLE NEWTABLE +DROP TABLE IF EXISTS NEWTABLE; +CREATE TABLE NEWTABLE ( + ID INTEGER DEFAULT 0 NOT NULL, + SOMENAME TEXT, + SOMEDATE TEXT NOT NULL, + CONSTRAINT PKINDEX_IDX PRIMARY KEY (ID) +); + +-- VIEW on TEST +DROP VIEW IF EXISTS "testview"; +CREATE VIEW "testview" AS +SELECT * +FROM TEST1 +WHERE TEST_NAME LIKE 't%'; + +-- VIEW on NUMBERS +DROP VIEW IF EXISTS "numbersview"; +CREATE VIEW "numbersview" AS +SELECT * +FROM NUMBERS +WHERE NUMBER > 100; \ No newline at end of file