php-src/ext/mysqli/tests/mysqli_class_mysqli_interface.phpt
Ulf Wendel dd8bda11f8 Those functions have been deprecated and removed. We'll test them only internally
but not bother php.net with it. Unless you really want to have tests for deprecated
and removed functionality...
2008-01-08 13:18:46 +00:00

282 lines
9.5 KiB
PHP

--TEST--
Interface of the class mysqli
--SKIPIF--
<?php
require_once('skipif.inc');
require_once('skipifemb.inc');
require_once('skipifconnectfailure.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_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_ssl_set'))
$expected_methods['ssl_set'] = true;
$expected_methods['set_local_infile_default'] = true;
$expected_methods['set_local_infile_handler'] = 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!