1--TEST--
2Interface of the class mysqli_warning - TODO
3--SKIPIF--
4<?php
5require_once('skipif.inc');
6require_once('skipifemb.inc');
7require_once('skipifconnectfailure.inc');
8require_once('connect.inc');
9
10if (!$TEST_EXPERIMENTAL)
11	die("skip - experimental (= unsupported) feature");
12?>
13--FILE--
14<?php
15	require('connect.inc');
16
17	$warning = new mysqli_warning();
18	$warning = new mysqli_warning(null);
19	$warning = new mysqli_warning(null, null);
20
21	$mysqli = new mysqli();
22	$warning = new mysqli_warning($mysqli);
23
24	$mysqli = new my_mysqli($host, $user, $passwd, $db, $port, $socket);
25	$stmt = new mysqli_stmt($mysqli);
26	$warning = new mysqli_warning($stmt);
27
28	$stmt = $mysqli->stmt_init();
29	$warning = new mysqli_warning($stmt);
30
31	$obj = new stdClass();
32	$warning = new mysqli_warning($obj);
33
34	include("table.inc");
35	$mysqli = new my_mysqli($host, $user, $passwd, $db, $port, $socket);
36	$res = $mysqli->query('INSERT INTO test(id, label) VALUES (1, "zz")');
37	$warning = mysqli_get_warnings($mysqli);
38
39	printf("Parent class:\n");
40	var_dump(get_parent_class($warning));
41
42	printf("\nMethods:\n");
43	$methods = get_class_methods($warning);
44	$expected_methods = array(
45		'next'                      => true,
46	);
47
48	foreach ($methods as $k => $method) {
49		if (isset($expected_methods[$method])) {
50			unset($methods[$k]);
51			unset($expected_methods[$method]);
52		}
53	}
54	if (!empty($methods)) {
55		printf("Dumping list of unexpected methods.\n");
56		var_dump($methods);
57	}
58	if (!empty($expected_methods)) {
59		printf("Dumping list of missing methods.\n");
60		var_dump($expected_methods);
61	}
62	if (empty($methods) && empty($expected_methods))
63		printf("ok\n");
64
65	printf("\nClass variables:\n");
66	$variables = get_class_vars(get_class($mysqli));
67	sort($variables);
68	foreach ($variables as $k => $var)
69		printf("%s\n", $var);
70
71	printf("\nObject variables:\n");
72	$variables = get_object_vars($mysqli);
73	foreach ($variables as $k => $var)
74		printf("%s\n", $var);
75
76	printf("\nMagic, magic properties:\n");
77
78	assert('' === $warning->message);
79	printf("warning->message = '%s'\n", $warning->message);
80
81	assert('' === $warning->sqlstate);
82	printf("warning->sqlstate= '%s'\n", $warning->sqlstate);
83
84	assert(0 === $warning->errno);
85	printf("warning->errno = '%s'\n", $warning->errno);
86
87	printf("\nAccess to undefined properties:\n");
88	printf("warning->unknown = '%s'\n", @$warning->unknown);
89
90	print "done!";
91?>
92--CLEAN--
93<?php
94	require_once("clean_table.inc");
95?>
96--EXPECTF--
97Warning: Wrong parameter count for mysqli_warning::mysqli_warning() in %s on line %d
98
99Warning: mysqli_warning::mysqli_warning() expects parameter 1 to be object, null given in %s on line %d
100
101Warning: Wrong parameter count for mysqli_warning::mysqli_warning() in %s on line %d
102
103Warning: mysqli_warning::mysqli_warning(): Couldn't fetch mysqli in %s on line %d
104
105Warning: mysqli_warning::mysqli_warning(): invalid object or resource mysqli_stmt
106 in %s on line %d
107
108Warning: mysqli_warning::mysqli_warning(): invalid object or resource mysqli_stmt
109 in %s on line %d
110
111Warning: mysqli_warning::mysqli_warning(): invalid class argument in /home/nixnutz/php6_mysqlnd/ext/mysqli/tests/mysqli_class_mysqli_warning.php on line 19
112
113Warning: mysqli_warning::mysqli_warning(): No warnings found in %s on line %d
114Parent class:
115bool(false)
116
117Methods:
118ok
119
120Class variables:
121
122Object variables:
123
124Magic, magic properties:
125warning->message = ''
126warning->sqlstate= ''
127warning->errno = ''
128
129Access to undefined properties:
130
131warning->unknown = ''
132done!