diff options
Diffstat (limited to 'tests/MySqlShimTest.php')
-rw-r--r-- | tests/MySqlShimTest.php | 154 |
1 files changed, 148 insertions, 6 deletions
diff --git a/tests/MySqlShimTest.php b/tests/MySqlShimTest.php index 875c5ed..a16f2c9 100644 --- a/tests/MySqlShimTest.php +++ b/tests/MySqlShimTest.php @@ -519,7 +519,7 @@ class MySqlShimTest extends \Yoast\PHPUnitPolyfills\TestCases\TestCase $this->assertEquals('testing', mysql_field_table($result, 10)); $this->assertEquals('ten', mysql_field_name($result, 10)); $this->assertEquals('string', mysql_field_type($result, 10)); - $this->assertEquals(35, mysql_field_len($result, 10)); + $this->assertEquals(52, mysql_field_len($result, 10)); $this->assertEquals('set', mysql_field_flags($result, 10)); $this->assertEquals('testing', mysql_field_table($result, 11)); @@ -597,7 +597,7 @@ class MySqlShimTest extends \Yoast\PHPUnitPolyfills\TestCases\TestCase $this->assertEquals('testing', mysql_field_table($result, 10)); $this->assertEquals('ten', mysql_field_name($result, 10)); $this->assertEquals('string', mysql_field_type($result, 10)); - $this->assertEquals(35*3, mysql_field_len($result, 10)); + $this->assertEquals(156, mysql_field_len($result, 10)); $this->assertEquals('set', mysql_field_flags($result, 10)); $this->assertEquals('testing', mysql_field_table($result, 11)); @@ -960,7 +960,7 @@ class MySqlShimTest extends \Yoast\PHPUnitPolyfills\TestCases\TestCase $this->assertEquals('information_schema', mysql_db_name($dbs, 0)); } - public function test_mysql_fetch_field() + public function test_mysql_fetch_field_with_offset() { $this->getConnection(); @@ -1048,6 +1048,149 @@ class MySqlShimTest extends \Yoast\PHPUnitPolyfills\TestCases\TestCase } } + public function test_mysql_fetch_field_with_nonconsecutive_offset() + { + $this->getConnection(); + + $result = mysql_query( + "INSERT INTO + testing (one, two, three, four, five, six, seven, eight, nine, ten, eleven) + VALUES + ('eight', '8', '8', '8', '8', '8', '8', '8', 'eight', 'eight', '8')" + ); + $this->assertTrue($result); + + $result = mysql_unbuffered_query("SELECT * FROM testing WHERE one = 'eight' LIMIT 1"); + $this->assertNotFalse($result); + + $row = mysql_fetch_assoc($result); + + $map = array( + 1 => array( + 'name' => 'one', 'max_length' => 5, 'not_null' => 0, 'primary_key' => 0, + 'unique_key' => 0, 'multiple_key' => 1, 'numeric' => 0, 'blob' => 0, + 'type' => 'string', 'unsigned' => 0, 'zerofill' => 0 + ), + 3 => array( + 'name' => 'three', 'max_length' => 1, 'not_null' => 0, 'primary_key' => 0, + 'unique_key' => 0, 'multiple_key' => 1, 'numeric' => 0, 'blob' => 0, + 'type' => 'string', 'unsigned' => 0, 'zerofill' => 0 + ), + 6 => array( + 'name' => 'six', 'max_length' => 1, 'not_null' => 0, 'primary_key' => 0, + 'unique_key' => 0, 'multiple_key' => 0, 'numeric' => 0, 'blob' => 0, + 'type' => 'string', 'unsigned' => 0, 'zerofill' => 0 + ), + 10 => array( + 'name' => 'ten', 'max_length' => 5, 'not_null' => 0, 'primary_key' => 0, + 'unique_key' => 0, 'multiple_key' => 0, 'numeric' => 0, 'blob' => 0, + 'type' => 'string', 'unsigned' => 0, 'zerofill' => 0 + ), + 11 => array( + 'name' => 'eleven', 'max_length' => 1, 'not_null' => 0, 'primary_key' => 0, + 'unique_key' => 0, 'multiple_key' => 0, 'numeric' => 0, 'blob' => 1, + 'type' => 'blob', 'unsigned' => 0, 'zerofill' => 0 + ), + ); + + foreach ($map as $index => $values) { + $field = mysql_fetch_field($result, $index); + $this->assertInstanceOf(\stdClass::class, $field); + + foreach ($values as $key => $value) { + $this->assertEquals($field->{$key}, $value, "Field '$index:$key' doesn't match. Expected: $value, Actual: {$field->{$key}}"); + } + } + } + + public function test_mysql_fetch_field_without_offset() + { + $this->getConnection(); + + $result = mysql_query( + "INSERT INTO + testing (one, two, three, four, five, six, seven, eight, nine, ten, eleven) + VALUES + ('seven', '7', '7', '7', '7', '7', '7', '7', 'seven', 'seven', '7')" + ); + $this->assertTrue($result, mysql_error()); + + $result = mysql_query("SELECT * FROM testing WHERE one = 'seven' LIMIT 1"); + $this->assertNotFalse($result); + + $map = array( + 0 => array( + 'name' => 'id', 'max_length' => 1, 'not_null' => 1, 'primary_key' => 1, + 'unique_key' => 0, 'multiple_key' => 0, 'numeric' => 1, 'blob' => 0, + 'type' => 'int', 'unsigned' => 0, 'zerofill' => 0 + ), + 1 => array( + 'name' => 'one', 'max_length' => 5, 'not_null' => 0, 'primary_key' => 0, + 'unique_key' => 0, 'multiple_key' => 1, 'numeric' => 0, 'blob' => 0, + 'type' => 'string', 'unsigned' => 0, 'zerofill' => 0 + ), + 2 => array( + 'name' => 'two', 'max_length' => 1, 'not_null' => 0, 'primary_key' => 0, + 'unique_key' => 1, 'multiple_key' => 0, 'numeric' => 0, 'blob' => 0, + 'type' => 'string', 'unsigned' => 0, 'zerofill' => 0 + ), + 3 => array( + 'name' => 'three', 'max_length' => 1, 'not_null' => 0, 'primary_key' => 0, + 'unique_key' => 0, 'multiple_key' => 1, 'numeric' => 0, 'blob' => 0, + 'type' => 'string', 'unsigned' => 0, 'zerofill' => 0 + ), + 4 => array( + 'name' => 'four', 'max_length' => 1, 'not_null' => 0, 'primary_key' => 0, + 'unique_key' => 0, 'multiple_key' => 1, 'numeric' => 0, 'blob' => 0, + 'type' => 'string', 'unsigned' => 0, 'zerofill' => 0 + ), + 5 => array( + 'name' => 'five', 'max_length' => 1, 'not_null' => 0, 'primary_key' => 0, + 'unique_key' => 0, 'multiple_key' => 0, 'numeric' => 0, 'blob' => 0, + 'type' => 'string', 'unsigned' => 0, 'zerofill' => 0 + ), + 6 => array( + 'name' => 'six', 'max_length' => 1, 'not_null' => 0, 'primary_key' => 0, + 'unique_key' => 0, 'multiple_key' => 0, 'numeric' => 0, 'blob' => 0, + 'type' => 'string', 'unsigned' => 0, 'zerofill' => 0 + ), + 7 => array( + 'name' => 'seven', 'max_length' => 1, 'not_null' => 0, 'primary_key' => 0, + 'unique_key' => 0, 'multiple_key' => 1, 'numeric' => 0, 'blob' => 0, + 'type' => 'string', 'unsigned' => 0, 'zerofill' => 0 + ), + 8 => array( + 'name' => 'eight', 'max_length' => 1, 'not_null' => 0, 'primary_key' => 0, + 'unique_key' => 0, 'multiple_key' => 0, 'numeric' => 0, 'blob' => 0, + 'type' => 'string', 'unsigned' => 0, 'zerofill' => 0 + ), + 9 => array( + 'name' => 'nine', 'max_length' => 5, 'not_null' => 0, 'primary_key' => 0, + 'unique_key' => 0, 'multiple_key' => 0, 'numeric' => 0, 'blob' => 0, + 'type' => 'string', 'unsigned' => 0, 'zerofill' => 0 + ), + 10 => array( + 'name' => 'ten', 'max_length' => 5, 'not_null' => 0, 'primary_key' => 0, + 'unique_key' => 0, 'multiple_key' => 0, 'numeric' => 0, 'blob' => 0, + 'type' => 'string', 'unsigned' => 0, 'zerofill' => 0 + ), + 11 => array( + 'name' => 'eleven', 'max_length' => 1, 'not_null' => 0, 'primary_key' => 0, + 'unique_key' => 0, 'multiple_key' => 0, 'numeric' => 0, 'blob' => 1, + 'type' => 'blob', 'unsigned' => 0, 'zerofill' => 0 + ), + ); + + foreach ($map as $index => $values) { + $field = mysql_fetch_field($result); + $this->assertInstanceOf(\stdClass::class, $field); + + foreach ($values as $key => $value) { + $this->assertEquals($field->{$key}, $value, "Field '$index:$key' doesn't match. Expected: $value, Actual: {$field->{$key}}"); + } + } + } + public function test_mysql_fetch_field_fail_false() { $this->expectWarning(); @@ -1074,7 +1217,6 @@ class MySqlShimTest extends \Yoast\PHPUnitPolyfills\TestCases\TestCase $result = mysql_query("SELECT one FROM testing WHERE one = 'six' LIMIT 1"); $this->assertNotFalse($result); - $field = mysql_fetch_field($result, 2); $this->assertFalse($field); } @@ -1349,8 +1491,8 @@ class MySqlShimTest extends \Yoast\PHPUnitPolyfills\TestCases\TestCase six varchar(255), seven varchar(255), eight varchar(255), - nine ENUM('one', 'two', '\'three', 'three', 'four', 'five', 'six'), - ten SET('one', 'two', '\'\'three', 'three', 'four', 'five', 'six'), + nine ENUM('one', 'two', '\'three', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine'), + ten SET('one', 'two', '\'\'three', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine'), eleven MEDIUMTEXT, INDEX one_idx (one), UNIQUE INDEX two_unq (two), |