Annotation of embedaddon/php/ext/mysqli/tests/mysqli_class_mysqli_interface.phpt, revision 1.1.1.2

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: 
1.1.1.2 ! misho     214:        assert(soundex(mysqli_stat($link)) == soundex($mysqli->stat));
1.1       misho     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>