diff options
author | Ulf Wendel <uw@php.net> | 2007-07-23 12:11:38 +0000 |
---|---|---|
committer | Ulf Wendel <uw@php.net> | 2007-07-23 12:11:38 +0000 |
commit | 937962ebe689e655778ec3c06bc6e7e8c2015d41 (patch) | |
tree | 9f74d8de4d02cae23d92c677dd7b00559b0a9237 /ext/mysqli/tests/mysqli_class_mysqli_interface.phpt | |
parent | 1884a16d01db5bf277d12bda0c62afb7de3f1cf0 (diff) | |
download | php-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.phpt | 305 |
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 |