summaryrefslogtreecommitdiff
path: root/ext/mysqli/tests/mysqli_class_mysqli_interface.phpt
diff options
context:
space:
mode:
authorUlf Wendel <uw@php.net>2007-07-23 12:11:38 +0000
committerUlf Wendel <uw@php.net>2007-07-23 12:11:38 +0000
commit937962ebe689e655778ec3c06bc6e7e8c2015d41 (patch)
tree9f74d8de4d02cae23d92c677dd7b00559b0a9237 /ext/mysqli/tests/mysqli_class_mysqli_interface.phpt
parent1884a16d01db5bf277d12bda0c62afb7de3f1cf0 (diff)
downloadphp-git-937962ebe689e655778ec3c06bc6e7e8c2015d41.tar.gz
Adding new tests that check the interface of the classes exported by mysqli
Diffstat (limited to 'ext/mysqli/tests/mysqli_class_mysqli_interface.phpt')
-rw-r--r--ext/mysqli/tests/mysqli_class_mysqli_interface.phpt305
1 files changed, 305 insertions, 0 deletions
diff --git a/ext/mysqli/tests/mysqli_class_mysqli_interface.phpt b/ext/mysqli/tests/mysqli_class_mysqli_interface.phpt
new file mode 100644
index 0000000000..b6be59e36d
--- /dev/null
+++ b/ext/mysqli/tests/mysqli_class_mysqli_interface.phpt
@@ -0,0 +1,305 @@
+--TEST--
+Interface of the class mysqli
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+<?php require_once('skipifemb.inc'); ?>
+--FILE--
+<?php
+ require('connect.inc');
+
+ $mysqli = new mysqli($host, $user, $passwd, $db, $port, $socket);
+ $link = mysqli_connect($host, $user, $passwd, $db, $port, $socket);
+
+ printf("Parent class:\n");
+ var_dump(get_parent_class($mysqli));
+
+ printf("\nMethods:\n");
+ $methods = get_class_methods($mysqli);
+ $expected_methods = array(
+ 'autocommit' => true,
+ 'change_user' => true,
+ 'character_set_name' => true,
+ 'client_encoding' => true,
+ 'close' => true,
+ 'commit' => true,
+ 'connect' => true,
+ 'dump_debug_info' => true,
+ 'escape_string' => true,
+ 'get_charset' => true,
+ 'get_client_info' => true,
+ 'get_server_info' => true,
+ 'get_warnings' => true,
+ 'init' => true,
+ 'kill' => true,
+ 'more_results' => true,
+ 'multi_query' => true,
+ 'mysqli' => true,
+ 'next_result' => true,
+ 'options' => true,
+ 'ping' => true,
+ 'prepare' => true,
+ 'query' => true,
+ 'real_connect' => true,
+ 'real_escape_string' => true,
+ 'real_query' => true,
+ 'rollback' => true,
+ 'select_db' => true,
+ 'set_charset' => true,
+ 'set_local_infile_default' => true,
+ 'set_local_infile_handler' => true,
+ 'set_opt' => true,
+ 'stat' => true,
+ 'stmt_init' => true,
+ 'store_result' => true,
+ 'thread_safe' => true,
+ 'use_result' => true,
+ );
+ if ($IS_MYSQLND) {
+ // mysqlnd only
+ /* $expected_methods['get_cache_stats'] = true; */
+ /* $expected_methods['get_client_stats'] = true; */
+ $expected_methods['get_connection_stats'] = true;
+ } else {
+ // libmysql only
+ if (function_exists('mysqli_disable_reads_from_master'))
+ $expected_methods['disable_reads_from_master'] = true;
+
+ if (function_exists('mysqli_disable_rpl_parse'))
+ $expected_methods['disable_rpl_parse'] = true;
+
+ if (function_exists('mysqli_enable_reads_from_master'))
+ $expected_methods['enable_reads_from_master'] = true;
+
+ if (function_exists('mysqli_enable_rpl_parse'))
+ $expected_methods['enable_rpl_parse'] = true;
+
+ if (function_exists('mysqli_master_query'))
+ $expected_methods['master_query'] = true;
+
+ if (function_exists('mysqli_rpl_parse_enabled'))
+ $expected_methods['rpl_parse_enabled'] = true;
+
+ if (function_exists('mysqli_rpl_probe'))
+ $expected_methods['rpl_probe'] = true;
+
+ if (function_exists('mysqli_rpl_query_type'))
+ $expected_methods['rpl_query_type'] = true;
+
+ if (function_exists('mysqli_slave_query'))
+ $expected_methods['slave_query'] = true;
+
+ if (function_exists('mysqli_ssl_set'))
+ $expected_methods['ssl_set'] = true;
+ }
+
+ /* we should add ruled when to expect them */
+ if (function_exists('mysqli_debug'))
+ $expected_methods['debug'] = true;
+ if (function_exists('ssl_set'))
+ $expected_methods['ssl_set'] = true;
+
+ foreach ($methods as $k => $method) {
+ if (isset($expected_methods[$method])) {
+ unset($methods[$k]);
+ unset($expected_methods[$method]);
+ }
+ }
+ if (!empty($methods)) {
+ printf("Dumping list of unexpected methods.\n");
+ var_dump($methods);
+ }
+ if (!empty($expected_methods)) {
+ printf("Dumping list of missing methods.\n");
+ var_dump($expected_methods);
+ }
+ if (empty($methods) && empty($expected_methods))
+ printf("ok\n");
+
+ printf("\nClass variables:\n");
+ $variables = get_class_vars(get_class($mysqli));
+ sort($variables);
+ foreach ($variables as $k => $var)
+ printf("%s\n", $var);
+
+ printf("\nObject variables:\n");
+ $variables = get_object_vars($mysqli);
+ foreach ($variables as $k => $var)
+ printf("%s\n", $var);
+
+ printf("\nMagic, magic properties:\n");
+
+ assert(mysqli_affected_rows($link) === $mysqli->affected_rows);
+ printf("mysqli->affected_rows = '%s'/%s ('%s'/%s)\n",
+ $mysqli->affected_rows, gettype($mysqli->affected_rows),
+ mysqli_affected_rows($link), gettype(mysqli_affected_rows($link)));
+
+ assert(mysqli_get_client_info() === $mysqli->client_info);
+ printf("mysqli->client_info = '%s'/%s ('%s'/%s)\n",
+ $mysqli->client_info, gettype($mysqli->client_info),
+ mysqli_get_client_info(), gettype(mysqli_get_client_info()));
+
+ assert(mysqli_get_client_version() === $mysqli->client_version);
+ printf("mysqli->client_version = '%s'/%s ('%s'/%s)\n",
+ $mysqli->client_version, gettype($mysqli->client_version),
+ mysqli_get_client_version(), gettype(mysqli_get_client_version()));
+
+ assert(mysqli_errno($link) === $mysqli->errno);
+ printf("mysqli->errno = '%s'/%s ('%s'/%s)\n",
+ $mysqli->errno, gettype($mysqli->errno),
+ mysqli_errno($link), gettype(mysqli_errno($link)));
+
+ assert(mysqli_error($link) === $mysqli->error);
+ printf("mysqli->error = '%s'/%s ('%s'/%s)\n",
+ $mysqli->error, gettype($mysqli->error),
+ mysqli_error($link), gettype(mysqli_error($link)));
+
+ assert(mysqli_field_count($link) === $mysqli->field_count);
+ printf("mysqli->field_count = '%s'/%s ('%s'/%s)\n",
+ $mysqli->field_count, gettype($mysqli->field_count),
+ mysqli_field_count($link), gettype(mysqli_field_count($link)));
+
+ assert(mysqli_insert_id($link) === $mysqli->insert_id);
+ printf("mysqli->insert_id = '%s'/%s ('%s'/%s)\n",
+ $mysqli->insert_id, gettype($mysqli->insert_id),
+ mysqli_insert_id($link), gettype(mysqli_insert_id($link)));
+
+ assert(mysqli_sqlstate($link) === $mysqli->sqlstate);
+ printf("mysqli->sqlstate = '%s'/%s ('%s'/%s)\n",
+ $mysqli->sqlstate, gettype($mysqli->sqlstate),
+ mysqli_sqlstate($link), gettype(mysqli_sqlstate($link)));
+
+ assert(mysqli_get_host_info($link) === $mysqli->host_info);
+ printf("mysqli->host_info = '%s'/%s ('%s'/%s)\n",
+ $mysqli->host_info, gettype($mysqli->host_info),
+ mysqli_get_host_info($link), gettype(mysqli_get_host_info($link)));
+
+ /* note that the data types are different */
+ assert(mysqli_info($link) == $mysqli->info);
+ printf("mysqli->info = '%s'/%s ('%s'/%s)\n",
+ $mysqli->info, gettype($mysqli->info),
+ mysqli_info($link), gettype(mysqli_info($link)));
+
+ assert(mysqli_thread_id($link) > $mysqli->thread_id);
+ assert(gettype($mysqli->thread_id) == gettype(mysqli_thread_id($link)));
+ printf("mysqli->thread_id = '%s'/%s ('%s'/%s)\n",
+ $mysqli->thread_id, gettype($mysqli->thread_id),
+ mysqli_thread_id($link), gettype(mysqli_thread_id($link)));
+
+ assert(mysqli_get_proto_info($link) === $mysqli->protocol_version);
+ printf("mysqli->protocol_version = '%s'/%s ('%s'/%s)\n",
+ $mysqli->protocol_version, gettype($mysqli->protocol_version),
+ mysqli_get_proto_info($link), gettype(mysqli_get_proto_info($link)));
+
+ assert(mysqli_get_server_info($link) === $mysqli->server_info);
+ printf("mysqli->server_info = '%s'/%s ('%s'/%s)\n",
+ $mysqli->server_info, gettype($mysqli->server_info),
+ mysqli_get_server_info($link), gettype(mysqli_get_server_info($link)));
+
+ assert(mysqli_get_server_version($link) === $mysqli->server_version);
+ printf("mysqli->server_version = '%s'/%s ('%s'/%s)\n",
+ $mysqli->server_version, gettype($mysqli->server_version),
+ mysqli_get_server_version($link), gettype(mysqli_get_server_version($link)));
+
+ assert(mysqli_warning_count($link) === $mysqli->warning_count);
+ printf("mysqli->warning_count = '%s'/%s ('%s'/%s)\n",
+ $mysqli->warning_count, gettype($mysqli->warning_count),
+ mysqli_warning_count($link), gettype(mysqli_warning_count($link)));
+
+ printf("\nAccess to undefined properties:\n");
+ printf("mysqli->unknown = '%s'\n", @$mysqli->unknown);
+
+ @$mysqli->unknown = 13;
+ printf("setting mysqli->unknown, mysqli_unknown = '%s'\n", @$mysqli->unknown);
+
+ $unknown = 'friday';
+ @$mysqli->unknown = $unknown;
+ printf("setting mysqli->unknown, mysqli_unknown = '%s'\n", @$mysqli->unknown);
+
+ $mysqli = new mysqli($host, $user, $passwd, $db, $port, $socket);
+ printf("\nAccess hidden properties for MYSLQI_STATUS_INITIALIZED (TODO documentation):\n");
+ assert(mysqli_connect_error() === $mysqli->connect_error);
+ printf("mysqli->connect_error = '%s'/%s ('%s'/%s)\n",
+ $mysqli->connect_error, gettype($mysqli->connect_error),
+ mysqli_connect_error(), gettype(mysqli_connect_error()));
+
+ assert(mysqli_connect_errno() === $mysqli->connect_errno);
+ printf("mysqli->connect_errno = '%s'/%s ('%s'/%s)\n",
+ $mysqli->connect_errno, gettype($mysqli->connect_errno),
+ mysqli_connect_errno(), gettype(mysqli_connect_errno()));
+
+ print "done!";
+?>
+--EXPECTF--
+Parent class:
+bool(false)
+
+Methods:
+ok
+
+Class variables:
+
+Object variables:
+
+Magic, magic properties:
+mysqli->affected_rows = '%s'/integer ('%s'/integer)
+mysqli->client_info = '%s'/string ('%s'/string)
+mysqli->client_version = '%d'/integer ('%d'/integer)
+mysqli->errno = '0'/integer ('0'/integer)
+mysqli->error = ''/string (''/string)
+mysqli->field_count = '0'/integer ('0'/integer)
+mysqli->insert_id = '0'/integer ('0'/integer)
+mysqli->sqlstate = '00000'/string ('00000'/string)
+mysqli->host_info = '%s'/string ('%s'/string)
+mysqli->info = ''/NULL (''/string)
+mysqli->thread_id = '%d'/integer ('%d'/integer)
+mysqli->protocol_version = '%d'/integer ('%d'/integer)
+mysqli->server_info = '%s'/string ('%s'/string)
+mysqli->server_version = '%d'/integer ('%d'/integer)
+mysqli->warning_count = '0'/integer ('0'/integer)
+
+Access to undefined properties:
+mysqli->unknown = ''
+setting mysqli->unknown, mysqli_unknown = '13'
+setting mysqli->unknown, mysqli_unknown = 'friday'
+
+Access hidden properties for MYSLQI_STATUS_INITIALIZED (TODO documentation):
+mysqli->connect_error = ''/string (''/string)
+mysqli->connect_errno = '0'/integer ('0'/integer)
+done!
+--UEXPECTF--
+Parent class:
+bool(false)
+
+Methods:
+ok
+
+Class variables:
+
+Object variables:
+
+Magic, magic properties:
+mysqli->affected_rows = '%s'/integer ('%s'/integer)
+mysqli->client_info = '%s'/unicode ('%s'/unicode)
+mysqli->client_version = '%d'/integer ('%d'/integer)
+mysqli->errno = '0'/integer ('0'/integer)
+mysqli->error = ''/unicode (''/unicode)
+mysqli->field_count = '0'/integer ('0'/integer)
+mysqli->insert_id = '0'/integer ('0'/integer)
+mysqli->sqlstate = '00000'/unicode ('00000'/unicode)
+mysqli->host_info = '%s'/unicode ('%s'/unicode)
+mysqli->info = ''/NULL (''/unicode)
+mysqli->thread_id = '%d'/integer ('%d'/integer)
+mysqli->protocol_version = '%d'/integer ('%d'/integer)
+mysqli->server_info = '%s'/unicode ('%s'/unicode)
+mysqli->server_version = '%d'/integer ('%d'/integer)
+mysqli->warning_count = '0'/integer ('0'/integer)
+
+Access to undefined properties:
+mysqli->unknown = ''
+setting mysqli->unknown, mysqli_unknown = '13'
+setting mysqli->unknown, mysqli_unknown = 'friday'
+
+Access hidden properties for MYSLQI_STATUS_INITIALIZED (TODO documentation):
+mysqli->connect_error = ''/unicode (''/unicode)
+mysqli->connect_errno = '0'/integer ('0'/integer)
+done! \ No newline at end of file