You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

127 lines
2.8 KiB

  1. --TEST--
  2. Interface of the class mysqli_driver
  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. $driver = new mysqli_driver();
  14. printf("Parent class:\n");
  15. var_dump(get_parent_class($driver));
  16. printf("\nMethods:\n");
  17. $methods = get_class_methods($driver);
  18. $expected_methods = array();
  19. if (!$IS_MYSQLND) {
  20. /* libmysql only */
  21. $expected_methods = array_merge($expected_methods, array(
  22. 'embedded_server_start' => true,
  23. 'embedded_server_end' => true,
  24. ));
  25. }
  26. foreach ($methods as $k => $method) {
  27. if (isset($expected_methods[$method])) {
  28. unset($expected_methods[$method]);
  29. unset($methods[$k]);
  30. }
  31. }
  32. if (!empty($expected_methods)) {
  33. printf("Dumping list of missing methods.\n");
  34. var_dump($expected_methods);
  35. }
  36. if (!empty($methods)) {
  37. printf("Dumping list of unexpected methods.\n");
  38. var_dump($methods);
  39. }
  40. if (empty($expected_methods) && empty($methods))
  41. printf("ok\n");
  42. printf("\nClass variables:\n");
  43. $variables = array_keys(get_class_vars(get_class($driver)));
  44. sort($variables);
  45. foreach ($variables as $k => $var)
  46. printf("%s\n", $var);
  47. printf("\nObject variables:\n");
  48. $variables = array_keys(get_object_vars($driver));
  49. foreach ($variables as $k => $var)
  50. printf("%s\n", $var);
  51. printf("\nMagic, magic properties:\n");
  52. assert(mysqli_get_client_info() === $driver->client_info);
  53. printf("driver->client_info = '%s'\n", $driver->client_info);
  54. assert(mysqli_get_client_version() === $driver->client_version);
  55. printf("driver->client_version = '%s'\n", $driver->client_version);
  56. assert($driver->driver_version > 0);
  57. printf("driver->driver_version = '%s'\n", $driver->driver_version);
  58. assert(in_array($driver->report_mode,
  59. array(
  60. MYSQLI_REPORT_ALL,
  61. MYSQLI_REPORT_STRICT,
  62. MYSQLI_REPORT_ERROR,
  63. MYSQLI_REPORT_INDEX,
  64. MYSQLI_REPORT_OFF
  65. )
  66. ));
  67. printf("driver->report_mode = '%s'\n", $driver->report_mode);
  68. $driver->report_mode = MYSQLI_REPORT_STRICT;
  69. assert($driver->report_mode === MYSQLI_REPORT_STRICT);
  70. assert(is_bool($driver->embedded));
  71. printf("driver->embedded = '%s'\n", $driver->embedded);
  72. printf("driver->reconnect = '%s'\n", $driver->reconnect);
  73. printf("\nAccess to undefined properties:\n");
  74. printf("driver->unknown = '%s'\n", @$driver->unknown);
  75. print "done!";
  76. ?>
  77. --EXPECTF--
  78. Parent class:
  79. bool(false)
  80. Methods:
  81. ok
  82. Class variables:
  83. client_info
  84. client_version
  85. driver_version
  86. embedded
  87. reconnect
  88. report_mode
  89. Object variables:
  90. client_info
  91. client_version
  92. driver_version
  93. embedded
  94. reconnect
  95. report_mode
  96. Magic, magic properties:
  97. driver->client_info = '%s'
  98. driver->client_version = '%d'
  99. driver->driver_version = '%d'
  100. driver->report_mode = '%d'
  101. driver->embedded = ''
  102. driver->reconnect = ''
  103. Access to undefined properties:
  104. driver->unknown = ''
  105. done!