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>