Annotation of embedaddon/php/ext/mysqli/tests/mysqli_class_mysqli_interface.phpt, revision 1.1
1.1 ! misho 1: --TEST--
! 2: Interface of the class mysqli
! 3: --SKIPIF--
! 4: <?php
! 5: require_once('skipif.inc');
! 6: require_once('skipifemb.inc');
! 7: require_once('skipifconnectfailure.inc');
! 8: ?>
! 9: --FILE--
! 10: <?php
! 11: require('connect.inc');
! 12:
! 13: $mysqli = new mysqli($host, $user, $passwd, $db, $port, $socket);
! 14: $link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket);
! 15:
! 16: printf("Parent class:\n");
! 17: var_dump(get_parent_class($mysqli));
! 18:
! 19: printf("\nMethods:\n");
! 20: $methods = get_class_methods($mysqli);
! 21: $expected_methods = array(
! 22: 'autocommit' => true,
! 23: 'change_user' => true,
! 24: 'character_set_name' => true,
! 25: 'close' => true,
! 26: 'commit' => true,
! 27: 'connect' => true,
! 28: 'dump_debug_info' => true,
! 29: 'escape_string' => true,
! 30: 'get_charset' => true,
! 31: 'get_client_info' => true,
! 32: 'get_server_info' => true,
! 33: 'get_warnings' => true,
! 34: 'init' => true,
! 35: 'kill' => true,
! 36: 'more_results' => true,
! 37: 'multi_query' => true,
! 38: 'mysqli' => true,
! 39: 'next_result' => true,
! 40: 'options' => true,
! 41: 'ping' => true,
! 42: 'prepare' => true,
! 43: 'query' => true,
! 44: 'real_connect' => true,
! 45: 'real_escape_string' => true,
! 46: 'real_query' => true,
! 47: 'refresh' => true,
! 48: 'rollback' => true,
! 49: 'select_db' => true,
! 50: 'set_charset' => true,
! 51: 'set_opt' => true,
! 52: 'ssl_set' => true,
! 53: 'stat' => true,
! 54: 'stmt_init' => true,
! 55: 'store_result' => true,
! 56: 'thread_safe' => true,
! 57: 'use_result' => true,
! 58: );
! 59:
! 60: if (version_compare(PHP_VERSION, '5.3.99', '<=')) {
! 61: $expected_methods['client_encoding'] = true;
! 62: }
! 63:
! 64: if ($IS_MYSQLND) {
! 65: // mysqlnd only
! 66: /* $expected_methods['get_client_stats'] = true; */
! 67: $expected_methods['get_connection_stats'] = true;
! 68: $expected_methods['reap_async_query'] = true;
! 69: $expected_methods['poll'] = true;
! 70: } else {
! 71: // libmysql only
! 72: if (function_exists('mysqli_ssl_set'))
! 73: $expected_methods['ssl_set'] = true;
! 74: $expected_methods['set_local_infile_default'] = true;
! 75: $expected_methods['set_local_infile_handler'] = true;
! 76: }
! 77:
! 78: /* we should add ruled when to expect them */
! 79: if (function_exists('mysqli_debug'))
! 80: $expected_methods['debug'] = true;
! 81: if (function_exists('ssl_set'))
! 82: $expected_methods['ssl_set'] = true;
! 83:
! 84: foreach ($methods as $k => $method) {
! 85: if (isset($expected_methods[$method])) {
! 86: unset($methods[$k]);
! 87: unset($expected_methods[$method]);
! 88: }
! 89: }
! 90: if (!empty($methods)) {
! 91: printf("Dumping list of unexpected methods.\n");
! 92: var_dump($methods);
! 93: }
! 94: if (!empty($expected_methods)) {
! 95: printf("Dumping list of missing methods.\n");
! 96: var_dump($expected_methods);
! 97: }
! 98: if (empty($methods) && empty($expected_methods))
! 99: printf("ok\n");
! 100:
! 101: printf("\nClass variables:\n");
! 102:
! 103: $expected_class_variables = $expected_object_variables = array(
! 104: "affected_rows" => true,
! 105: "client_info" => true,
! 106: "client_version" => true,
! 107: "connect_errno" => true,
! 108: "connect_error" => true,
! 109: "errno" => true,
! 110: "error" => true,
! 111: "field_count" => true,
! 112: "host_info" => true,
! 113: "info" => true,
! 114: "insert_id" => true,
! 115: "protocol_version" => true,
! 116: "server_info" => true,
! 117: "server_version" => true,
! 118: "sqlstate" => true,
! 119: "stat" => true,
! 120: "thread_id" => true,
! 121: "warning_count" => true,
! 122: );
! 123:
! 124: if (version_compare(PHP_VERSION, '5.3.99', '>')) {
! 125: $expected_class_variables["error_list"] = true;
! 126: $expected_object_variables["error_list"] = true;
! 127: }
! 128:
! 129: $variables = get_class_vars(get_class($mysqli));
! 130: foreach ($variables as $var => $v) {
! 131: if (isset($expected_class_variables[$var])) {
! 132: unset($expected_class_variables[$var]);
! 133: unset($variables[$var]);
! 134: }
! 135: }
! 136:
! 137: if (!empty($expected_class_variables)) {
! 138: printf("Dumping list of missing class variables\n");
! 139: var_dump($expected_class_variables);
! 140: }
! 141: if (!empty($variables)) {
! 142: printf("Dumping list of unexpected class variables\n");
! 143: var_dump($variables);
! 144: }
! 145: echo "ok\n";
! 146:
! 147: printf("\nObject variables:\n");
! 148: $variables = get_object_vars($mysqli);
! 149: foreach ($variables as $var => $v) {
! 150: if (isset($expected_object_variables[$var])) {
! 151: unset($expected_object_variables[$var]);
! 152: unset($variables[$var]);
! 153: }
! 154: }
! 155:
! 156: if (!empty($expected_object_variables)) {
! 157: printf("Dumping list of missing object variables\n");
! 158: var_dump($expected_object_variables);
! 159: }
! 160: if (!empty($variables)) {
! 161: printf("Dumping list of unexpected object variables\n");
! 162: var_dump($variables);
! 163: }
! 164: echo "ok\n";
! 165:
! 166:
! 167: printf("\nMagic, magic properties:\n");
! 168:
! 169: assert(mysqli_affected_rows($link) === $mysqli->affected_rows);
! 170: printf("mysqli->affected_rows = '%s'/%s ('%s'/%s)\n",
! 171: $mysqli->affected_rows, gettype($mysqli->affected_rows),
! 172: mysqli_affected_rows($link), gettype(mysqli_affected_rows($link)));
! 173:
! 174: assert(mysqli_get_client_info() === $mysqli->client_info);
! 175: printf("mysqli->client_info = '%s'/%s ('%s'/%s)\n",
! 176: $mysqli->client_info, gettype($mysqli->client_info),
! 177: mysqli_get_client_info(), gettype(mysqli_get_client_info()));
! 178:
! 179: assert(mysqli_get_client_version() === $mysqli->client_version);
! 180: printf("mysqli->client_version = '%s'/%s ('%s'/%s)\n",
! 181: $mysqli->client_version, gettype($mysqli->client_version),
! 182: mysqli_get_client_version(), gettype(mysqli_get_client_version()));
! 183:
! 184: assert(mysqli_errno($link) === $mysqli->errno);
! 185: printf("mysqli->errno = '%s'/%s ('%s'/%s)\n",
! 186: $mysqli->errno, gettype($mysqli->errno),
! 187: mysqli_errno($link), gettype(mysqli_errno($link)));
! 188:
! 189: assert(mysqli_error($link) === $mysqli->error);
! 190: printf("mysqli->error = '%s'/%s ('%s'/%s)\n",
! 191: $mysqli->error, gettype($mysqli->error),
! 192: mysqli_error($link), gettype(mysqli_error($link)));
! 193:
! 194: if (version_compare(PHP_VERSION, '5.3.99', '>')) {
! 195: assert(mysqli_error_list($link) === $mysqli->error_list);
! 196: assert(is_array($mysqli->error_list));
! 197: }
! 198:
! 199: assert(mysqli_field_count($link) === $mysqli->field_count);
! 200: printf("mysqli->field_count = '%s'/%s ('%s'/%s)\n",
! 201: $mysqli->field_count, gettype($mysqli->field_count),
! 202: mysqli_field_count($link), gettype(mysqli_field_count($link)));
! 203:
! 204: assert(mysqli_insert_id($link) === $mysqli->insert_id);
! 205: printf("mysqli->insert_id = '%s'/%s ('%s'/%s)\n",
! 206: $mysqli->insert_id, gettype($mysqli->insert_id),
! 207: mysqli_insert_id($link), gettype(mysqli_insert_id($link)));
! 208:
! 209: assert(mysqli_sqlstate($link) === $mysqli->sqlstate);
! 210: printf("mysqli->sqlstate = '%s'/%s ('%s'/%s)\n",
! 211: $mysqli->sqlstate, gettype($mysqli->sqlstate),
! 212: mysqli_sqlstate($link), gettype(mysqli_sqlstate($link)));
! 213:
! 214: assert(mysqli_stat($link) === $mysqli->stat);
! 215: printf("mysqli->stat = '%s'/%s ('%s'/%s)\n",
! 216: $mysqli->stat, gettype($mysqli->stat),
! 217: mysqli_stat($link), gettype(mysqli_stat($link)));
! 218:
! 219: assert(mysqli_get_host_info($link) === $mysqli->host_info);
! 220: printf("mysqli->host_info = '%s'/%s ('%s'/%s)\n",
! 221: $mysqli->host_info, gettype($mysqli->host_info),
! 222: mysqli_get_host_info($link), gettype(mysqli_get_host_info($link)));
! 223:
! 224: /* note that the data types are different */
! 225: assert(mysqli_info($link) == $mysqli->info);
! 226: printf("mysqli->info = '%s'/%s ('%s'/%s)\n",
! 227: $mysqli->info, gettype($mysqli->info),
! 228: mysqli_info($link), gettype(mysqli_info($link)));
! 229:
! 230: assert(mysqli_thread_id($link) > $mysqli->thread_id);
! 231: assert(gettype($mysqli->thread_id) == gettype(mysqli_thread_id($link)));
! 232: printf("mysqli->thread_id = '%s'/%s ('%s'/%s)\n",
! 233: $mysqli->thread_id, gettype($mysqli->thread_id),
! 234: mysqli_thread_id($link), gettype(mysqli_thread_id($link)));
! 235:
! 236: assert(mysqli_get_proto_info($link) === $mysqli->protocol_version);
! 237: printf("mysqli->protocol_version = '%s'/%s ('%s'/%s)\n",
! 238: $mysqli->protocol_version, gettype($mysqli->protocol_version),
! 239: mysqli_get_proto_info($link), gettype(mysqli_get_proto_info($link)));
! 240:
! 241: assert(mysqli_get_server_info($link) === $mysqli->server_info);
! 242: printf("mysqli->server_info = '%s'/%s ('%s'/%s)\n",
! 243: $mysqli->server_info, gettype($mysqli->server_info),
! 244: mysqli_get_server_info($link), gettype(mysqli_get_server_info($link)));
! 245:
! 246: assert(mysqli_get_server_version($link) === $mysqli->server_version);
! 247: printf("mysqli->server_version = '%s'/%s ('%s'/%s)\n",
! 248: $mysqli->server_version, gettype($mysqli->server_version),
! 249: mysqli_get_server_version($link), gettype(mysqli_get_server_version($link)));
! 250:
! 251: assert(mysqli_warning_count($link) === $mysqli->warning_count);
! 252: printf("mysqli->warning_count = '%s'/%s ('%s'/%s)\n",
! 253: $mysqli->warning_count, gettype($mysqli->warning_count),
! 254: mysqli_warning_count($link), gettype(mysqli_warning_count($link)));
! 255:
! 256: printf("\nAccess to undefined properties:\n");
! 257: printf("mysqli->unknown = '%s'\n", @$mysqli->unknown);
! 258:
! 259: @$mysqli->unknown = 13;
! 260: printf("setting mysqli->unknown, mysqli_unknown = '%s'\n", @$mysqli->unknown);
! 261:
! 262: $unknown = 'friday';
! 263: @$mysqli->unknown = $unknown;
! 264: printf("setting mysqli->unknown, mysqli_unknown = '%s'\n", @$mysqli->unknown);
! 265:
! 266: $mysqli = new my_mysqli($host, $user, $passwd, $db, $port, $socket);
! 267: printf("\nAccess hidden properties for MYSLQI_STATUS_INITIALIZED (TODO documentation):\n");
! 268: assert(mysqli_connect_error() === $mysqli->connect_error);
! 269: printf("mysqli->connect_error = '%s'/%s ('%s'/%s)\n",
! 270: $mysqli->connect_error, gettype($mysqli->connect_error),
! 271: mysqli_connect_error(), gettype(mysqli_connect_error()));
! 272:
! 273: assert(mysqli_connect_errno() === $mysqli->connect_errno);
! 274: printf("mysqli->connect_errno = '%s'/%s ('%s'/%s)\n",
! 275: $mysqli->connect_errno, gettype($mysqli->connect_errno),
! 276: mysqli_connect_errno(), gettype(mysqli_connect_errno()));
! 277:
! 278: print "done!";
! 279: ?>
! 280: --EXPECTF--
! 281: Parent class:
! 282: bool(false)
! 283:
! 284: Methods:
! 285: ok
! 286:
! 287: Class variables:
! 288: ok
! 289:
! 290: Object variables:
! 291: ok
! 292:
! 293: Magic, magic properties:
! 294: mysqli->affected_rows = '%s'/integer ('%s'/integer)
! 295: mysqli->client_info = '%s'/%unicode|string% ('%s'/%unicode|string%)
! 296: mysqli->client_version = '%d'/integer ('%d'/integer)
! 297: mysqli->errno = '0'/integer ('0'/integer)
! 298: mysqli->error = ''/%unicode|string% (''/%unicode|string%)
! 299: mysqli->field_count = '0'/integer ('0'/integer)
! 300: mysqli->insert_id = '0'/integer ('0'/integer)
! 301: mysqli->sqlstate = '00000'/%unicode|string% ('00000'/%unicode|string%)
! 302: mysqli->stat = 'Uptime: %d Threads: %d Questions: %d Slow queries: %d Opens: %d Flush tables: %d Open tables: %d Queries per second avg: %d.%d'/string ('Uptime: %d Threads: %d Questions: %d Slow queries: %d Opens: %d Flush tables: %d Open tables: %d Queries per second avg: %d.%d'/string)
! 303: mysqli->host_info = '%s'/%unicode|string% ('%s'/%unicode|string%)
! 304: mysqli->info = ''/NULL (''/%unicode|string%)
! 305: mysqli->thread_id = '%d'/integer ('%d'/integer)
! 306: mysqli->protocol_version = '%d'/integer ('%d'/integer)
! 307: mysqli->server_info = '%s'/%unicode|string% ('%s'/%unicode|string%)
! 308: mysqli->server_version = '%d'/integer ('%d'/integer)
! 309: mysqli->warning_count = '0'/integer ('0'/integer)
! 310:
! 311: Access to undefined properties:
! 312: mysqli->unknown = ''
! 313: setting mysqli->unknown, mysqli_unknown = '13'
! 314: setting mysqli->unknown, mysqli_unknown = 'friday'
! 315:
! 316: Access hidden properties for MYSLQI_STATUS_INITIALIZED (TODO documentation):
! 317: mysqli->connect_error = ''/NULL (''/NULL)
! 318: mysqli->connect_errno = '0'/integer ('0'/integer)
! 319: done!
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>