Author: uwendel
Date: 2008-01-08 18:05:11 +0100 (Tue, 08 Jan 2008)
New Revision: 1196
Added:
trunk/tests/ext/pdo/pdo_class_pdo_interface.phpt
trunk/tests/ext/pdo/pdo_drivers.phpt
Log:
Checking class interface. Was wondering if other vendors use undocumented functions.
pdo_drivers() is undocumented
Added: trunk/tests/ext/pdo/pdo_class_pdo_interface.phpt
===================================================================
--- trunk/tests/ext/pdo/pdo_class_pdo_interface.phpt (rev 0)
+++ trunk/tests/ext/pdo/pdo_class_pdo_interface.phpt 2008-01-08 17:05:11 UTC (rev 1196)
@@ -0,0 +1,96 @@
+--TEST--
+PDO Common: PDO class interface
+--SKIPIF--
+<?php # vim:ft=php
+if (!extension_loaded('pdo')) die('skip');
+$dir = getenv('REDIR_TEST_DIR');
+if (false == $dir) die('skip no driver');
+require_once $dir . 'pdo_test.inc';
+PDOTest::skip();
+?>
+--FILE--
+<?php
+if (getenv('REDIR_TEST_DIR') === false) putenv('REDIR_TEST_DIR='.dirname(__FILE__) .
'/../../pdo/tests/');
+require_once getenv('REDIR_TEST_DIR') . 'pdo_test.inc';
+$db = PDOTest::factory('PDO', false);
+
+printf("Parent class\n");
+var_dump(get_parent_class($db));
+
+printf("\nMethods:\n");
+$methods = get_class_methods(get_class($db));
+$expected_methods = array(
+ 'prepare' => true,
+ 'beginTransaction' => true,
+ 'commit' => true,
+ 'rollBack' => true,
+ 'setAttribute' => true,
+ 'exec' => true,
+ 'query' => true,
+ 'lastInsertId' => true,
+ 'errorCode' => true,
+ 'errorInfo' => true,
+ 'quote' => true,
+ '__wakeup' => true,
+ '__sleep' => true,
+ 'getAvailableDrivers' => true,
+ 'getAttribute' => true,
+);
+
+$constructor_found = false;
+foreach ($methods as $k => $method) {
+
+ if (isset($expected_methods[$method])) {
+ unset($expected_methods[$method]);
+ unset($methods[$k]);
+ }
+
+ if ('__construct' == $method) {
+ unset($methods[$k]);
+ $constructor_found = true;
+ } else if (get_class($db) == $method) {
+ unset($methods[$k]);
+ $constructor_found = true;
+ }
+
+}
+
+if (!$constructor_found)
+ printf("[001] %s seems to have no constructor\n", get_class($db));
+
+if (!empty($methods)) {
+ printf("[002] Dumping list of unexpected methods\n");
+ var_dump($methods);
+}
+
+if (!empty($expected_methods)) {
+ printf("[003] Dumping list of missing methods\n");
+ var_dump($expected_methods);
+}
+
+printf("\nClass variables:\n");
+$variables = get_class_vars(get_class($db));
+if (!empty($variables)) {
+ printf("[004] Dumping list of unexpected class variables\n");
+ var_dump($variables);
+}
+
+printf("\nObject variables:\n");
+$variables = get_object_vars($db);
+if (!empty($variables)) {
+ printf("[005] Dumping list of unexpected object variables\n");
+ var_dump($variables);
+}
+
+print "done!";
+?>
+--EXPECTF--
+Parent class
+bool(false)
+
+Methods:
+
+Class variables:
+
+Object variables:
+done!
\ No newline at end of file
Added: trunk/tests/ext/pdo/pdo_drivers.phpt
===================================================================
--- trunk/tests/ext/pdo/pdo_drivers.phpt (rev 0)
+++ trunk/tests/ext/pdo/pdo_drivers.phpt 2008-01-08 17:05:11 UTC (rev 1196)
@@ -0,0 +1,34 @@
+--TEST--
+PDO Common: pdo_drivers()/PDO->getAvailableDrivers()
+--SKIPIF--
+<?php # vim:ft=php
+if (!extension_loaded('pdo')) die('skip');
+$dir = getenv('REDIR_TEST_DIR');
+if (false == $dir) die('skip no driver');
+require_once $dir . 'pdo_test.inc';
+PDOTest::skip();
+?>
+--FILE--
+<?php
+if (getenv('REDIR_TEST_DIR') === false) putenv('REDIR_TEST_DIR='.dirname(__FILE__) .
'/../../pdo/tests/');
+require_once getenv('REDIR_TEST_DIR') . 'pdo_test.inc';
+$db = PDOTest::factory('PDO', false);
+
+$drivers1 = array_flip(pdo_drivers());
+if (empty($drivers1))
+ printf("[001] pdo_drivers() should report at least one driver\n");
+
+$drivers2 = array_flip($db->getAvailableDrivers());
+if (empty($drivers2))
+ printf("[002] PDO->getAvailableDrivers() should report at least one driver\n");
+
+$tmp = array_diff($drivers1, $drivers2);
+if (!empty($tmp)) {
+ printf("[003] Driver list returned by pdo_drivers() differs from
PDO::getAvailableDrivers() list, dumping both lists\n");
+ var_dump($drivers1);
+ var_dump($drivers2);
+}
+print "done!";
+?>
+--EXPECTF--
+done!
\ No newline at end of file
| Thread |
|---|
| • PHP mysqlnd svn commit: r1196 - trunk/tests/ext/pdo | uwendel | 8 Jan |