Annotation of embedaddon/php/ext/mysqli/tests/mysqli_class_mysqli_result_interface.phpt, revision 1.1
1.1 ! misho 1: --TEST--
! 2: Interface of the class mysqli_result
! 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: require('table.inc');
! 13:
! 14: $mysqli = new my_mysqli($host, $user, $passwd, $db, $port, $socket);
! 15: $mysqli_result = $mysqli->query('SELECT * FROM test');
! 16: $row = $mysqli_result->fetch_row();
! 17:
! 18: $link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket);
! 19: $res = mysqli_query($link, 'SELECT * FROM test');
! 20: assert(mysqli_fetch_row($res) === $row);
! 21:
! 22: printf("Parent class:\n");
! 23: var_dump(get_parent_class($mysqli_result));
! 24:
! 25: printf("\nMethods:\n");
! 26: $methods = get_class_methods($mysqli_result);
! 27: $expected_methods = array(
! 28: '__construct' => true,
! 29: 'close' => true,
! 30: 'data_seek' => true,
! 31: 'fetch_array' => true,
! 32: 'fetch_assoc' => true,
! 33: 'fetch_field' => true,
! 34: 'fetch_field_direct' => true,
! 35: 'fetch_fields' => true,
! 36: 'fetch_object' => true,
! 37: 'fetch_row' => true,
! 38: 'field_seek' => true,
! 39: 'free' => true,
! 40: 'free_result' => true,
! 41: );
! 42: if ($IS_MYSQLND)
! 43: $expected_methods['fetch_all'] = true;
! 44:
! 45: foreach ($methods as $k => $method) {
! 46: if (isset($expected_methods[$method])) {
! 47: unset($expected_methods[$method]);
! 48: unset($methods[$k]);
! 49: }
! 50: if ($method == 'mysqli_result') {
! 51: // get_class_method reports different constructor names
! 52: unset($expected_methods['__construct']);
! 53: unset($methods[$k]);
! 54: }
! 55: }
! 56:
! 57: if (!empty($expected_methods)) {
! 58: printf("Dumping list of missing methods.\n");
! 59: var_dump($expected_methods);
! 60: }
! 61: if (!empty($methods)) {
! 62: printf("Dumping list of unexpected methods.\n");
! 63: var_dump($methods);
! 64: }
! 65: if (empty($expected_methods) && empty($methods))
! 66: printf("ok\n");
! 67:
! 68:
! 69: printf("\nClass variables:\n");
! 70: $variables = array_keys(get_class_vars(get_class($mysqli_result)));
! 71: sort($variables);
! 72: foreach ($variables as $k => $var)
! 73: printf("%s\n", $var);
! 74:
! 75: printf("\nObject variables:\n");
! 76: $variables = array_keys(get_object_vars($mysqli_result));
! 77: foreach ($variables as $k => $var)
! 78: printf("%s\n", $var);
! 79:
! 80: printf("\nMagic, magic properties:\n");
! 81:
! 82: assert(($tmp = mysqli_field_tell($res)) === $mysqli_result->current_field);
! 83: printf("mysqli_result->current_field = '%s'/%s ('%s'/%s)\n",
! 84: $mysqli_result->current_field, gettype($mysqli_result->current_field),
! 85: $tmp, gettype($tmp));
! 86:
! 87: assert(($tmp = mysqli_field_count($link)) === $mysqli_result->field_count);
! 88: printf("mysqli_result->field_count = '%s'/%s ('%s'/%s)\n",
! 89: $mysqli_result->field_count, gettype($mysqli_result->field_count),
! 90: $tmp, gettype($tmp));
! 91:
! 92: assert(($tmp = mysqli_fetch_lengths($res)) === $mysqli_result->lengths);
! 93: printf("mysqli_result->lengths -> '%s'/%s ('%s'/%s)\n",
! 94: ((is_array($mysqli_result->lengths)) ? implode(' ', $mysqli_result->lengths) : 'n/a'),
! 95: gettype($mysqli_result->lengths),
! 96: ((is_array($tmp)) ? implode(' ', $tmp) : 'n/a'),
! 97: gettype($tmp));
! 98:
! 99: assert(($tmp = mysqli_num_rows($res)) === $mysqli_result->num_rows);
! 100: printf("mysqli_result->num_rows = '%s'/%s ('%s'/%s)\n",
! 101: $mysqli_result->num_rows, gettype($mysqli_result->num_rows),
! 102: $tmp, gettype($tmp));
! 103:
! 104: assert(in_array($mysqli_result->type, array(MYSQLI_STORE_RESULT, MYSQLI_USE_RESULT)));
! 105: printf("mysqli_result->type = '%s'/%s\n",
! 106: ((MYSQLI_STORE_RESULT == $mysqli_result->type) ? 'store' : 'use'),
! 107: gettype($mysqli_result->type));
! 108:
! 109: printf("\nAccess to undefined properties:\n");
! 110: printf("mysqli_result->unknown = '%s'\n", @$mysqli_result->unknown);
! 111:
! 112: printf("\nConstructor:\n");
! 113: if (!is_object($res = new mysqli_result($link)))
! 114: printf("[001] Expecting object/mysqli_result got %s/%s\n", gettye($res), $res);
! 115:
! 116: if (null !== ($tmp = @$res->num_rows))
! 117: printf("[002] Expecting NULL got %s/%s\n", gettype($tmp), $tmp);
! 118:
! 119: if (!mysqli_query($link, "SELECT id FROM test ORDER BY id"))
! 120: printf("[003] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
! 121:
! 122: if (!is_object($res = new mysqli_result($link)))
! 123: printf("[004] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
! 124:
! 125: if (!is_object($res = new mysqli_result($link, MYSQLI_STORE_RESULT)))
! 126: printf("[005] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
! 127:
! 128: if (!is_object($res = new mysqli_result($link, MYSQLI_USE_RESULT)))
! 129: printf("[006] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
! 130:
! 131: if (!is_object($res = new mysqli_result($link, 'invalid')))
! 132: printf("[007] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
! 133:
! 134: $valid = array(MYSQLI_STORE_RESULT, MYSQLI_USE_RESULT);
! 135: do {
! 136: $mode = mt_rand(-1000, 1000);
! 137: } while (in_array($mode, $valid));
! 138:
! 139: if ($TEST_EXPERIMENTAL) {
! 140: ob_start();
! 141: if (!is_object($res = new mysqli_result($link, $mode)))
! 142: printf("[008] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
! 143: $content = ob_get_contents();
! 144: ob_end_clean();
! 145: if (!stristr($content, 'Invalid value for resultmode'))
! 146: printf("[009] Expecting warning because of invalid resultmode\n");
! 147: }
! 148:
! 149: if (!is_object($res = new mysqli_result('foo')))
! 150: printf("[010] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
! 151:
! 152: if (!is_object($res = @new mysqli_result($link, MYSQLI_STORE_RESULT, 1)))
! 153: printf("[011] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
! 154:
! 155: print "done!";
! 156: ?>
! 157: --EXPECTF--
! 158: Parent class:
! 159: bool(false)
! 160:
! 161: Methods:
! 162: ok
! 163:
! 164: Class variables:
! 165: current_field
! 166: field_count
! 167: lengths
! 168: num_rows
! 169: type
! 170:
! 171: Object variables:
! 172: current_field
! 173: field_count
! 174: lengths
! 175: num_rows
! 176: type
! 177:
! 178: Magic, magic properties:
! 179: mysqli_result->current_field = '0'/integer ('0'/integer)
! 180: mysqli_result->field_count = '2'/integer ('2'/integer)
! 181: mysqli_result->lengths -> '1 1'/array ('1 1'/array)
! 182: mysqli_result->num_rows = '6'/integer ('6'/integer)
! 183: mysqli_result->type = 'store'/integer
! 184:
! 185: Access to undefined properties:
! 186: mysqli_result->unknown = ''
! 187:
! 188: Constructor:
! 189:
! 190: Warning: mysqli_result::__construct() expects parameter 2 to be long, %unicode_string_optional% given in %s on line %d
! 191:
! 192: Warning: mysqli_result::__construct() expects parameter 1 to be mysqli, %unicode_string_optional% given in %s on line %d
! 193: done!
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>