From 226ae3406193dec582afbbe8b308c735601530c9 Mon Sep 17 00:00:00 2001 From: Hugues Peccatte Date: Sat, 7 Dec 2013 20:01:49 +0100 Subject: [PATCH 1/3] New unit tests. Signed-off-by: Hugues Peccatte --- test/libraries/PMA_import_test.php | 33 ++++++++++++++++++++++++++ test/libraries/core/PMA_array_test.php | 26 ++++++++++++++++++++ 2 files changed, 59 insertions(+) create mode 100644 test/libraries/PMA_import_test.php diff --git a/test/libraries/PMA_import_test.php b/test/libraries/PMA_import_test.php new file mode 100644 index 0000000000..f3da6a35a8 --- /dev/null +++ b/test/libraries/PMA_import_test.php @@ -0,0 +1,33 @@ +assertFalse(PMA_checkTimeout()); + + $timestamp = time(); + $maximum_time = 0; + $timeout_passed = true; + + $this->assertTrue(PMA_checkTimeout()); + } +} \ No newline at end of file diff --git a/test/libraries/core/PMA_array_test.php b/test/libraries/core/PMA_array_test.php index 6209587bf7..e4cd50eb65 100644 --- a/test/libraries/core/PMA_array_test.php +++ b/test/libraries/core/PMA_array_test.php @@ -326,4 +326,30 @@ class PMA_Array_Test extends PHPUnit_Framework_TestCase PMA_arrayWalkRecursive($arr, 'stripslashes', true); $this->assertEquals($arr, $target); } + + /** + * @dataProvider prov_arrayKeyExists + */ + function testArrayKeyExists($expected, $path, $array) + { + $this->assertEquals($expected, PMA_arrayKeyExists($path, $array)); + } + + function prov_arrayKeyExists() + { + return array( + array(true, 'k1', array('k1' => 'v1')), + array(true, 'k1/k2', array('k1' => array('k2' => 'v2'))), + array(true, 'k1/k2', array('k1' => array('k3' => 'v3', 'k2' => 'v2'))), + array(true, 'k1/k2', array('k1' => array('k2' => array('k3' => 'v3')))), + array( + true, 'k1/k2/k3', array('k1' => array('k2' => array('k3' => 'v3'))) + ), + array(false, '', array('k1' => 'v1')), + array(false, 'k1/k2', array('k1' => 'v1')), + array(false, 'k1/k2', array('k1' => 'v1', 'k2' => 'v2')), + array(false, 'k1/k3', array('k1' => array('k2' => 'v2'))), + array(false, 'k2', array('k1' => array('k2' => 'v2'))), + ); + } } From bbf08d3a13f9fddbc47f89d4f7b6cac3624e5db0 Mon Sep 17 00:00:00 2001 From: Hugues Peccatte Date: Sat, 7 Dec 2013 21:39:22 +0100 Subject: [PATCH 2/3] Add new unit tests. Signed-off-by: Hugues Peccatte --- test/libraries/PMA_import_test.php | 195 +++++++++++++++++++++++++++++ 1 file changed, 195 insertions(+) diff --git a/test/libraries/PMA_import_test.php b/test/libraries/PMA_import_test.php index f3da6a35a8..ec82e56e59 100644 --- a/test/libraries/PMA_import_test.php +++ b/test/libraries/PMA_import_test.php @@ -7,10 +7,21 @@ * @package PhpMyAdmin-test */ +/* + * Include to test. + */ + +/* + * we must set $GLOBALS['server'] here + * since 'check_user_privileges.lib.php' will use it globally + */ +$GLOBALS['server'] = 0; + /* * Include to test. */ require_once 'libraries/Util.class.php'; +require_once 'libraries/Tracker.class.php'; require_once 'libraries/database_interface.inc.php'; require_once 'libraries/import.lib.php'; @@ -18,16 +29,200 @@ class PMA_Import_Test extends PHPUnit_Framework_TestCase { function testCheckTimeout() { + global $timestamp, $maximum_time, $timeout_passed; + + //Reinit values. $timestamp = time(); $maximum_time = 0; $timeout_passed = false; $this->assertFalse(PMA_checkTimeout()); + //Reinit values. $timestamp = time(); $maximum_time = 0; $timeout_passed = true; + $this->assertFalse(PMA_checkTimeout()); + + //Reinit values. + $timestamp = time(); + $maximum_time = 30; + $timeout_passed = true; + + $this->assertTrue(PMA_checkTimeout()); + + //Reinit values. + $timestamp = time()-15; + $maximum_time = 30; + $timeout_passed = false; + + $this->assertFalse(PMA_checkTimeout()); + + //Reinit values. + $timestamp = time()-60; + $maximum_time = 30; + $timeout_passed = false; + $this->assertTrue(PMA_checkTimeout()); } + + function testLookForUse() + { + $this->assertEquals( + array(null, null), + PMA_lookForUse(null, null, null) + ); + + $this->assertEquals( + array('myDb', null), + PMA_lookForUse(null, 'myDb', null) + ); + + $this->assertEquals( + array('myDb', true), + PMA_lookForUse(null, 'myDb', true) + ); + + $this->assertEquals( + array('myDb', true), + PMA_lookForUse('select 1 from myTable', 'myDb', true) + ); + + $this->assertEquals( + array('anotherDb', true), + PMA_lookForUse('use anotherDb', 'myDb', false) + ); + + $this->assertEquals( + array('anotherDb', true), + PMA_lookForUse('use anotherDb', 'myDb', true) + ); + + $this->assertEquals( + array('anotherDb', true), + PMA_lookForUse('use `anotherDb`;', 'myDb', true) + ); + } + + /** + * @dataProvider prov_getColumnAlphaName + */ + function testGetColumnAlphaName($expected, $num) + { + $this->assertEquals($expected, PMA_getColumnAlphaName($num)); + } + + function prov_getColumnAlphaName() + { + return array( + array('A', 1), + array('Z', 0), + array('AA', 27), + array('AZ', 52), + array('BA', 53), + array('BB', 54), + ); + } + + /** + * @dataProvider prov_getColumnNumberFromNamee + */ + function testGetColumnNumberFromName($expected, $name) + { + $this->assertEquals($expected, PMA_getColumnNumberFromName($name)); + } + + function prov_getColumnNumberFromNamee() + { + return array( + array(1, 'A'), + array(26, 'Z'), + array(27, 'AA'), + array(52, 'AZ'), + array(53, 'BA'), + array(54, 'BB'), + ); + } + + /** + * @dataProvider prov_getM + */ + function testGetM($expected, $size) + { + $this->assertEquals($expected, PMA_getM($size)); + } + + function prov_getM() + { + return array( + array(2, '2,1'), + array(6, '6,2'), + array(6, '6,0'), + array(16, '16,2'), + ); + } + + /** + * @dataProvider prov_getD + */ + function testGetD($expected, $size) + { + $this->assertEquals($expected, PMA_getD($size)); + } + + function prov_getD() + { + return array( + array(1, '2,1'), + array(2, '6,2'), + array(0, '6,0'), + array(20, '30,20'), + ); + } + + /** + * @dataProvider prov_getDecimalSize + */ + function testGetDecimalSize($expected, $size) + { + $this->assertEquals($expected, PMA_getDecimalSize($size)); + } + + function prov_getDecimalSize() + { + return array( + array(array(2, 1, '2,1'), '2.1'), + array(array(2, 1, '2,1'), '6.2'), + array(array(3, 1, '3,1'), '10.0'), + array(array(4, 2, '4,2'), '30.20'), + ); + } + + /** + * @dataProvider prov_detectType + */ + function testDetectType($expected, $type, $cell) + { + $this->assertEquals($expected, PMA_detectType($type, $cell)); + } + + function prov_detectType() + { + return array( + array(NONE, null, 'NULL'), + array(NONE, NONE, 'NULL'), + array(INT, INT, 'NULL'), + array(VARCHAR, VARCHAR, 'NULL'), + array(VARCHAR, null, null), + array(VARCHAR, INT, null), + array(INT, INT, '10'), + array(DECIMAL, DECIMAL, '10.2'), + array(DECIMAL, INT, '10.2'), + array(BIGINT, BIGINT, '2147483648'), + array(BIGINT, INT, '2147483648'), + array(VARCHAR, VARCHAR, 'test'), + array(VARCHAR, INT, 'test'), + ); + } } \ No newline at end of file From b76f6160796096f4805792eb16db2ffe08a1a3c8 Mon Sep 17 00:00:00 2001 From: Hugues Peccatte Date: Sun, 8 Dec 2013 11:16:07 +0100 Subject: [PATCH 3/3] Fix unit test. Signed-off-by: Hugues Peccatte --- test/libraries/core/PMA_array_test.php | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/test/libraries/core/PMA_array_test.php b/test/libraries/core/PMA_array_test.php index e4cd50eb65..43bcc0641c 100644 --- a/test/libraries/core/PMA_array_test.php +++ b/test/libraries/core/PMA_array_test.php @@ -338,18 +338,18 @@ class PMA_Array_Test extends PHPUnit_Framework_TestCase function prov_arrayKeyExists() { return array( - array(true, 'k1', array('k1' => 'v1')), - array(true, 'k1/k2', array('k1' => array('k2' => 'v2'))), - array(true, 'k1/k2', array('k1' => array('k3' => 'v3', 'k2' => 'v2'))), - array(true, 'k1/k2', array('k1' => array('k2' => array('k3' => 'v3')))), + array(true, 'k1', array('k1' => array())), + array(true, 'k1/k2', array('k1' => array('k2' => array()))), + array(true, 'k1/k2', array('k1' => array('k3' => array(), 'k2' => array()))), + array(true, 'k1/k2', array('k1' => array('k2' => array('k3' => array())))), array( - true, 'k1/k2/k3', array('k1' => array('k2' => array('k3' => 'v3'))) + true, 'k1/k2/k3', array('k1' => array('k2' => array('k3' => array()))) ), - array(false, '', array('k1' => 'v1')), - array(false, 'k1/k2', array('k1' => 'v1')), - array(false, 'k1/k2', array('k1' => 'v1', 'k2' => 'v2')), - array(false, 'k1/k3', array('k1' => array('k2' => 'v2'))), - array(false, 'k2', array('k1' => array('k2' => 'v2'))), + array(false, '', array('k1' => array())), + array(false, 'k1/k2', array('k1' => array())), + array(false, 'k1/k2', array('k1' => array(), 'k2' => array())), + array(false, 'k1/k3', array('k1' => array('k2' => array()))), + array(false, 'k2', array('k1' => array('k2' => array()))), ); } }