diff options
Diffstat (limited to 'tests/utils')
-rw-r--r-- | tests/utils/MiscTest.php | 90 | ||||
-rw-r--r-- | tests/utils/QueryTest.php | 269 | ||||
-rw-r--r-- | tests/utils/RoutineTest.php | 196 | ||||
-rw-r--r-- | tests/utils/TableTest.php | 181 |
4 files changed, 0 insertions, 736 deletions
diff --git a/tests/utils/MiscTest.php b/tests/utils/MiscTest.php deleted file mode 100644 index d64673f..0000000 --- a/tests/utils/MiscTest.php +++ /dev/null @@ -1,90 +0,0 @@ -<?php - -namespace SqlParser\Tests\Utils; - -use SqlParser\Parser; -use SqlParser\Utils\Misc; - -use SqlParser\Tests\TestCase; - -class MiscTest extends TestCase -{ - - /** - * @dataProvider getAliasesProvider - */ - public function testGetAliases($query, $db, array $expected) - { - $parser = new Parser($query); - // print_r($parser->statements); exit; - $this->assertEquals($expected, Misc::getAliases($parser->statements[0], $db)); - } - - public function getAliasesProvider() - { - return array( - array( - 'select i.name as `n`,abcdef gh from qwerty i', - 'mydb', - array( - 'mydb' => array( - 'alias' => null, - 'tables' => array( - 'qwerty' => array( - 'alias' => 'i', - 'columns' => array( - 'name' => 'n', - 'abcdef' => 'gh' - ) - ) - ) - ) - ) - ), - array( - 'select film_id id,title from film', - 'sakila', - array( - 'sakila' => array( - 'alias' => null, - 'tables' => array( - 'film' => array( - 'alias' => null, - 'columns' => array( - 'film_id' => 'id' - ) - ) - ) - ) - ) - ), - array( - 'select `sakila`.`A`.`actor_id` as aid,`F`.`film_id` `fid`,' - . 'last_update updated from `sakila`.actor A join `film_actor` as ' - . '`F` on F.actor_id = A.`actor_id`', - 'sakila', - array( - 'sakila' => array( - 'alias' => null, - 'tables' => array( - 'film_actor' => array( - 'alias' => 'F', - 'columns' => array( - 'film_id' => 'fid', - 'last_update' => 'updated' - ) - ), - 'actor' => array( - 'alias'=> 'A', - 'columns' => array( - 'actor_id' => 'aid', - 'last_update' => 'updated' - ) - ) - ) - ) - ) - ), - ); - } -} diff --git a/tests/utils/QueryTest.php b/tests/utils/QueryTest.php deleted file mode 100644 index 7a2bbf4..0000000 --- a/tests/utils/QueryTest.php +++ /dev/null @@ -1,269 +0,0 @@ -<?php - -namespace SqlParser\Tests\Utils; - -use SqlParser\Parser; -use SqlParser\Utils\Query; - -use SqlParser\Tests\TestCase; - -class QueryTest extends TestCase -{ - - /** - * @dataProvider testGetFlagsProvider - */ - public function testGetFlags($query, $expected) - { - $parser = new Parser($query); - $this->assertEquals( - $expected, - Query::getFlags($parser->statements[0]) - ); - } - - public function testGetFlagsProvider() - { - return array( - array( - 'ALTER TABLE DROP col', - array( - 'reload' => true, - 'querytype' => 'ALTER' - ) - ), - array( - 'CALL test()', - array( - 'is_procedure' => true, - 'querytype' => 'CALL' - ) - ), - array( - 'CREATE TABLE tbl (id INT)', - array( - 'reload' => true, - 'querytype' => 'CREATE' - ) - ), - array( - 'CHECK TABLE tbl', - array( - 'is_maint' => true, - 'querytype' => 'CHECK' - ) - ), - array( - 'DELETE FROM tbl', - array( - 'is_affected' => true, - 'is_delete' => true, - 'querytype' => 'DELETE', - ), - ), - array( - 'DROP VIEW v', - array( - 'reload' => true, - 'querytype' => 'DROP' - ) - ), - array( - 'DROP DATABASE db', - array( - 'drop_database' => true, - 'reload' => true, - 'querytype' => 'DROP' - ) - ), - array( - 'EXPLAIN tbl', - array( - 'is_explain' => true, - 'querytype' => 'EXPLAIN' - ), - ), - array( - 'INSERT INTO tbl VALUES (1)', - array( - 'is_affected' => true, - 'is_insert' => true, - 'querytype' => 'INSERT' - ) - ), - array( - 'REPLACE INTO tbl VALUES (2)', - array( - 'is_affected' => true, - 'is_replace' => true, - 'is_insert' => true, - 'querytype' => 'REPLACE' - ) - ), - array( - 'SELECT 1', - array( - 'is_select' => true, - 'querytype' => 'SELECT' - ) - ), - array( - 'SELECT * FROM tbl', - array( - 'is_select' => true, - 'select_from' => true, - 'querytype' => 'SELECT' - ) - ), - array( - 'SELECT DISTINCT * FROM tbl LIMIT 0, 10 ORDER BY id', - array( - 'distinct' => true, - 'is_select' => true, - 'select_from' => true, - 'limit' => true, - 'order' => true, - 'querytype' => 'SELECT' - ) - ), - array( - 'SELECT * FROM actor GROUP BY actor_id', - array( - 'is_group' => true, - 'is_select' => true, - 'select_from' => true, - 'group' => true, - 'querytype' => 'SELECT' - ) - ), - array( - 'SELECT col1, col2 FROM table1 PROCEDURE ANALYSE(10, 2000);', - array( - 'is_analyse' => true, - 'is_select' => true, - 'select_from' => true, - 'querytype' => 'SELECT' - ) - ), - array( - 'SELECT * FROM tbl INTO OUTFILE "/tmp/export.txt"', - array( - 'is_export' => true, - 'is_select' => true, - 'select_from' => true, - 'querytype' => 'SELECT' - ) - ), - array( - 'SELECT COUNT(id), SUM(id) FROM tbl', - array( - 'is_count' => true, - 'is_func' => true, - 'is_select' => true, - 'select_from' => true, - 'querytype' => 'SELECT' - ) - ), - array( - 'SELECT (SELECT "foo")', - array( - 'is_select' => true, - 'is_subquery' => true, - 'querytype' => 'SELECT' - ) - ), - array( - 'SHOW CREATE TABLE tbl', - array( - 'is_show' => true, - 'querytype' => 'SHOW' - ) - ), - array( - 'UPDATE tbl SET id = 1', - array( - 'is_affected' => true, - 'querytype' => 'UPDATE' - ) - ) - ); - } - - public function testGetAll() - { - $query = 'SELECT *, actor.actor_id, sakila2.film.* - FROM sakila2.city, sakila2.film, actor'; - $parser = new Parser($query); - $this->assertEquals( - array_merge( - Query::getFlags($parser->statements[0], true), - array( - 'parser' => $parser, - 'statement' => $parser->statements[0], - 'select_expr' => array('*'), - 'select_tables' => array( - array('actor', null), - array('film', 'sakila2') - ) - ) - ), - Query::getAll($query) - ); - - $query = 'SELECT * FROM sakila.actor, film'; - $parser = new Parser($query); - $this->assertEquals( - array_merge( - Query::getFlags($parser->statements[0], true), - array( - 'parser' => $parser, - 'statement' => $parser->statements[0], - 'select_expr' => array('*'), - 'select_tables' => array( - array('actor', 'sakila'), - array('film', null) - ) - ) - ), - Query::getAll($query) - ); - } - - public function testGetAllEmpty() - { - $this->assertEquals(array(), Query::getAll('')); - } - - public function testGetClauseType() - { - $this->assertEquals('LIMIT', Query::getClauseType(' LIMIT 0, 10 ')); - } - - public function testReplaceClause() - { - $parser = new Parser('SELECT *, (SELECT 1) FROM film LIMIT 0, 10'); - $this->assertEquals( - 'SELECT *, (SELECT 1) FROM film WHERE film_id > 0 LIMIT 0, 10', - Query::replaceClause( - $parser->statements[0], - $parser->list, - 'WHERE film_id > 0' - ) - ); - } - - public function testReplaceClauseOnlyKeyword() - { - $parser = new Parser('SELECT *, (SELECT 1) FROM film LIMIT 0, 10'); - $this->assertEquals( - ' SELECT SQL_CALC_FOUND_ROWS *, (SELECT 1) FROM film LIMIT 0, 10', - Query::replaceClause( - $parser->statements[0], - $parser->list, - 'SELECT SQL_CALC_FOUND_ROWS', - true - ) - ); - } - -} diff --git a/tests/utils/RoutineTest.php b/tests/utils/RoutineTest.php deleted file mode 100644 index 51f558f..0000000 --- a/tests/utils/RoutineTest.php +++ /dev/null @@ -1,196 +0,0 @@ -<?php - -namespace SqlParser\Tests\Utils; - -use SqlParser\Parser; -use SqlParser\Utils\Routine; - -use SqlParser\Tests\TestCase; - -class RoutineTest extends TestCase -{ - - /** - * @dataProvider getReturnTypeProvider - */ - public function testGetReturnType($def, array $expected) - { - $this->assertEquals($expected, Routine::getReturnType($def)); - } - - public function getReturnTypeProvider() - { - return array( - array('', array('', '', '', '', '')), - array('TEXT', array('', '', 'TEXT', '', '')), - array('INT(20)', array('', '', 'INT', '20', '')), - array( - 'INT UNSIGNED', - array('', '', 'INT', '', 'UNSIGNED') - ), - array( - 'VARCHAR(1) CHARSET utf8', - array('', '', 'VARCHAR', '1', 'utf8') - ), - array( - 'ENUM(\'a\', \'b\') CHARSET latin1', - array('', '', 'ENUM', '\'a\',\'b\'', 'latin1') - ), - array( - 'DECIMAL(5,2) UNSIGNED ZEROFILL', - array('', '', 'DECIMAL', '5,2', 'UNSIGNED ZEROFILL') - ), - array( - 'SET(\'test\'\'esc"\', \'more\\\'esc\')', - array( - '', '', 'SET', '\'test\'\'esc"\',\'more\\\'esc\'', '' - ) - ) - ); - } - - /** - * @dataProvider getParameterProvider - */ - public function testGetParameter($def, array $expected) - { - $this->assertEquals($expected, Routine::getParameter($def)); - } - - public function getParameterProvider() - { - return array( - array('', array('', '', '', '', '')), - array('`foo` TEXT', array('', 'foo', 'TEXT', '', '')), - array('`foo` INT(20)', array('', 'foo', 'INT', '20', '')), - array( - 'IN `fo``fo` INT UNSIGNED', - array('IN', 'fo`fo', 'INT', '', 'UNSIGNED') - ), - array( - 'OUT bar VARCHAR(1) CHARSET utf8', - array('OUT', 'bar', 'VARCHAR', '1', 'utf8') - ), - array( - '`"baz\'\'` ENUM(\'a\', \'b\') CHARSET latin1', - array('', '"baz\'\'', 'ENUM', '\'a\',\'b\'', 'latin1') - ), - array( - 'INOUT `foo` DECIMAL(5,2) UNSIGNED ZEROFILL', - array('INOUT', 'foo', 'DECIMAL', '5,2', 'UNSIGNED ZEROFILL') - ), - array( - '`foo``s func` SET(\'test\'\'esc"\', \'more\\\'esc\')', - array( - '', 'foo`s func', 'SET', '\'test\'\'esc"\',\'more\\\'esc\'', '' - ) - ) - ); - } - - /** - * @dataProvider getParametersProvider - */ - public function testGetParameters($query, array $expected) - { - $parser = new Parser($query); - $this->assertEquals($expected, Routine::getParameters($parser->statements[0])); - } - - public function getParametersProvider() - { - return array( - array( - 'CREATE PROCEDURE `foo`() SET @A=0', - array( - 'num' => 0, - 'dir' => array(), - 'name' => array(), - 'type' => array(), - 'length' => array(), - 'length_arr' => array(), - 'opts' => array() - ) - ), - array( - 'CREATE DEFINER=`user\\`@`somehost``(` FUNCTION `foo```(`baz` INT) BEGIN SELECT NULL; END', - array( - 'num' => 1, - 'dir' => array( - 0 => '' - ), - 'name' => array( - 0 => 'baz' - ), - 'type' => array( - 0 => 'INT' - ), - 'length' => array( - 0 => '' - ), - 'length_arr' => array( - 0 => array(), - ), - 'opts' => array( - 0 => '' - ) - ) - ), - array( - 'CREATE PROCEDURE `foo`(IN `baz\\)` INT(25) zerofill unsigned) BEGIN SELECT NULL; END', - array( - 'num' => 1, - 'dir' => array( - 0 => 'IN' - ), - 'name' => array( - 0 => 'baz\\)' - ), - 'type' => array( - 0 => 'INT' - ), - 'length' => array( - 0 => '25' - ), - 'length_arr' => array( - 0 => array('25'), - ), - 'opts' => array( - 0 => 'UNSIGNED ZEROFILL' - ) - ) - ), - array( - 'CREATE PROCEDURE `foo`(IN `baz\\` INT(001) zerofill, out bazz varchar(15) charset utf8) '. - 'BEGIN SELECT NULL; END', - array( - 'num' => 2, - 'dir' => array( - 0 => 'IN', - 1 => 'OUT' - ), - 'name' => array( - 0 => 'baz\\', - 1 => 'bazz' - ), - 'type' => array( - 0 => 'INT', - 1 => 'VARCHAR' - ), - 'length' => array( - 0 => '1', - 1 => '15' - ), - 'length_arr' => array( - 0 => array('1'), - 1 => array('15') - ), - 'opts' => array( - 0 => 'ZEROFILL', - 1 => 'utf8' - ) - ) - ), - ); - } -} diff --git a/tests/utils/TableTest.php b/tests/utils/TableTest.php deleted file mode 100644 index bda6e78..0000000 --- a/tests/utils/TableTest.php +++ /dev/null @@ -1,181 +0,0 @@ -<?php - -namespace SqlParser\Tests\Utils; - -use SqlParser\Parser; -use SqlParser\Utils\Table; - -use SqlParser\Tests\TestCase; - -class TableTest extends TestCase -{ - - /** - * @dataProvider getForeignKeysProvider - */ - public function testGetForeignKeys($query, array $expected) - { - $parser = new Parser($query); - $this->assertEquals($expected, Table::getForeignKeys($parser->statements[0])); - } - - public function getForeignKeysProvider() - { - return array( - array( - 'CREATE USER test', - array(), - ), - array( - 'CREATE TABLE `payment` ( - `payment_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT, - `customer_id` smallint(5) unsigned NOT NULL, - `staff_id` tinyint(3) unsigned NOT NULL, - `rental_id` int(11) DEFAULT NULL, - `amount` decimal(5,2) NOT NULL, - `payment_date` datetime NOT NULL, - `last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - PRIMARY KEY (`payment_id`), - KEY `idx_fk_staff_id` (`staff_id`), - KEY `idx_fk_customer_id` (`customer_id`), - KEY `fk_payment_rental` (`rental_id`), - CONSTRAINT `fk_payment_customer` FOREIGN KEY (`customer_id`) REFERENCES `customer` (`customer_id`) ON UPDATE CASCADE, - CONSTRAINT `fk_payment_rental` FOREIGN KEY (`rental_id`) REFERENCES `rental` (`rental_id`) ON DELETE SET NULL ON UPDATE CASCADE, - CONSTRAINT `fk_payment_staff` FOREIGN KEY (`staff_id`) REFERENCES `staff` (`staff_id`) ON UPDATE CASCADE - ) ENGINE=InnoDB AUTO_INCREMENT=16050 DEFAULT CHARSET=utf8', - array( - array( - 'constraint' => 'fk_payment_customer', - 'index_list' => array('customer_id'), - 'ref_table_name' => 'customer', - 'ref_index_list' => array('customer_id'), - 'on_update' => 'CASCADE', - ), - array( - 'constraint' => 'fk_payment_rental', - 'index_list' => array('rental_id'), - 'ref_table_name' => 'rental', - 'ref_index_list' => array('rental_id'), - 'on_delete' => 'SET_NULL', - 'on_update' => 'CASCADE', - ), - array( - 'constraint' => 'fk_payment_staff', - 'index_list' => array('staff_id'), - 'ref_table_name' => 'staff', - 'ref_index_list' => array('staff_id'), - 'on_update' => 'CASCADE', - ), - ), - ), - array( - 'CREATE TABLE `actor` ( - `actor_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT, - `first_name` varchar(45) NOT NULL, - `last_name` varchar(45) NOT NULL, - `last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - PRIMARY KEY (`actor_id`), - KEY `idx_actor_last_name` (`last_name`) - ) ENGINE=InnoDB AUTO_INCREMENT=201 DEFAULT CHARSET=utf8', - array(), - ), - array( - 'CREATE TABLE `address` ( - `address_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT, - `address` varchar(50) NOT NULL, - `address2` varchar(50) DEFAULT NULL, - `district` varchar(20) NOT NULL, - `city_id` smallint(5) unsigned NOT NULL, - `postal_code` varchar(10) DEFAULT NULL, - `phone` varchar(20) NOT NULL, - `last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - PRIMARY KEY (`address_id`), - KEY `idx_fk_city_id` (`city_id`), - CONSTRAINT `fk_address_city` FOREIGN KEY (`city_id`) REFERENCES `city` (`city_id`) ON UPDATE CASCADE - ) ENGINE=InnoDB AUTO_INCREMENT=606 DEFAULT CHARSET=utf8', - array( - array( - 'constraint' => 'fk_address_city', - 'index_list' => array('city_id'), - 'ref_table_name' => 'city', - 'ref_index_list' => array('city_id'), - 'on_update' => 'CASCADE', - ), - ), - ), - ); - } - - /** - * @dataProvider getFieldsProvider - */ - public function testGetFields($query, array $expected) - { - $parser = new Parser($query); - $this->assertEquals($expected, Table::getFields($parser->statements[0])); - } - - public function getFieldsProvider() - { - return array( - array( - 'CREATE USER test', - array(), - ), - array( - 'CREATE TABLE `address` ( - `address_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT, - `address` varchar(50) NOT NULL, - `address2` varchar(50) DEFAULT NULL, - `district` varchar(20) NOT NULL, - `city_id` smallint(5) unsigned NOT NULL, - `postal_code` varchar(10) DEFAULT NULL, - `phone` varchar(20) NOT NULL, - `last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - PRIMARY KEY (`address_id`), - KEY `idx_fk_city_id` (`city_id`), - CONSTRAINT `fk_address_city` FOREIGN KEY (`city_id`) REFERENCES `city` (`city_id`) ON UPDATE CASCADE - ) ENGINE=InnoDB AUTO_INCREMENT=606 DEFAULT CHARSET=utf8', - array( - 'address_id' => array( - 'type' => 'SMALLINT', - 'timestamp_not_null' => null, - ), - 'address' => array( - 'type' => 'VARCHAR', - 'timestamp_not_null' => null, - ), - 'address2' => array( - 'type' => 'VARCHAR', - 'timestamp_not_null' => null, - 'default_value' => 'NULL', - ), - 'district' => array( - 'type' => 'VARCHAR', - 'timestamp_not_null' => null, - ), - 'city_id' => array( - 'type' => 'SMALLINT', - 'timestamp_not_null' => null, - ), - 'postal_code' => array( - 'type' => 'VARCHAR', - 'timestamp_not_null' => null, - 'default_value' => 'NULL', - ), - 'phone' => array( - 'type' => 'VARCHAR', - 'timestamp_not_null' => null, - ), - 'last_update' => array( - 'type' => 'TIMESTAMP', - 'timestamp_not_null' => true, - 'default_value' => 'CURRENT_TIMESTAMP', - 'default_current_timestamp' => true, - 'on_update_current_timestamp' => true - ) - ) - ), - ); - } -} |