force full date on "edited by" line. ;)
[phpbb.git] / tests / request / request_var.php
blob549512753b3e7f07d8e88072c885281b2b7cf909
1 <?php
2 /**
4 * @package testing
5 * @version $Id$
6 * @copyright (c) 2008 phpBB Group
7 * @license http://opensource.org/licenses/gpl-license.php GNU Public License
9 */
11 define('IN_PHPBB', true);
13 require_once 'test_framework/framework.php';
15 require_once '../phpBB/includes/functions.php';
17 class phpbb_request_request_var_test extends phpbb_test_case
19 /**
20 * @dataProvider request_variables
22 public function test_post($variable_value, $default, $multibyte, $expected)
24 $variable_name = 'name';
26 $_POST[$variable_name] = $variable_value;
27 $_REQUEST[$variable_name] = $variable_value;
29 // reread data from super globals
30 request::reset();
32 $result = request_var($variable_name, $default, $multibyte);
34 $label = 'Requesting POST variable, converting from ' . gettype($variable_value) . ' to ' . gettype($default) . (($multibyte) ? ' multibyte' : '');
35 $this->assertEquals($expected, $result, $label);
38 /**
39 * @dataProvider request_variables
41 public function test_get($variable_value, $default, $multibyte, $expected)
43 $variable_name = 'name';
45 $_GET[$variable_name] = $variable_value;
46 $_REQUEST[$variable_name] = $variable_value;
48 // reread data from super globals
49 request::reset();
51 $result = request_var($variable_name, $default, $multibyte);
53 $label = 'Requesting GET variable, converting from ' . gettype($variable_value) . ' to ' . gettype($default) . (($multibyte) ? ' multibyte' : '');
54 $this->assertEquals($expected, $result, $label);
57 /**
58 * @dataProvider deep_access
60 public function test_deep_multi_dim_array_access($path, $default, $expected)
62 $_REQUEST['var'] = array(
63 0 => array(
64 'b' => array(
65 true => array(
66 5 => 'c',
67 6 => 'd',
71 2 => array(
72 3 => array(
73 false => 5,
78 // reread data from super globals
79 request::reset();
81 $result = request_var($path, $default);
82 $this->assertEquals($expected, $result, 'Testing deep access to multidimensional input arrays: ' . $path);
85 public static function deep_access()
87 return array(
88 // array(path, default, expected result)
89 array(array('var', 0, 'b', true, 5), '', 'c'),
90 array(array('var', 0, 'b', true, 6), '', 'd'),
91 array(array('var', 2, 3, false), 0, 5),
92 array(array('var', 0, 'b', true), array(0 => ''), array(5 => 'c', 6 => 'd')),
96 public static function request_variables()
98 return array(
99 // strings
100 array('abc', '', false, 'abc'),
101 array(' some spaces ', '', true, 'some spaces'),
102 array("\r\rsome\rcarriage\r\rreturns\r", '', true, "some\ncarriage\n\nreturns"),
103 array("\n\nsome\ncarriage\n\nreturns\n", '', true, "some\ncarriage\n\nreturns"),
104 array("\r\n\r\nsome\r\ncarriage\r\n\r\nreturns\r\n", '', true, "some\ncarriage\n\nreturns"),
105 array("we\xC2\xA1rd\xE1\x9A\x80ch\xCE\xB1r\xC2\xADacters", '', true, "we\xC2\xA1rd\xE1\x9A\x80ch\xCE\xB1r\xC2\xADacters"),
106 array("we\xC2\xA1rd\xE1\x9A\x80ch\xCE\xB1r\xC2\xADacters", '', false, "we??rd???ch??r??acters"),
107 array("Some <html> \"entities\" like &", '', true, "Some &lt;html&gt; &quot;entities&quot; like &amp;"),
109 // integers
110 array('1234', 0, false, 1234),
111 array('abc', 12, false, 0),
112 array('324abc', 0, false, 324),
114 // string to array
115 array('123', array(0), false, array()),
116 array('123', array(''), false, array()),
118 // 1 dimensional arrays
119 array(
120 // input:
121 array('123', 'abc'),
122 // default:
123 array(''),
124 false,
125 // expected:
126 array('123', 'abc')
128 array(
129 // input:
130 array('123', 'abc'),
131 // default:
132 array(999),
133 false,
134 // expected:
135 array(123, 0)
137 array(
138 // input:
139 array('xyz' => '123', 'abc' => 'abc'),
140 // default:
141 array('' => ''),
142 false,
143 // expected:
144 array('xyz' => '123', 'abc' => 'abc')
146 array(
147 // input:
148 array('xyz' => '123', 'abc' => 'abc'),
149 // default:
150 array('' => 0),
151 false,
152 // expected:
153 array('xyz' => 123, 'abc' => 0)
156 // 2 dimensional arrays
157 array(
158 // input:
160 // default:
161 array(array(0)),
162 false,
163 // expected:
164 array()
166 array(
167 // input:
168 array(
169 'xyz' => array('123', 'def'),
170 'abc' => 'abc'
172 // default:
173 array('' => array('')),
174 false,
175 // expected:
176 array(
177 'xyz' => array('123', 'def'),
178 'abc' => array()
181 array(
182 // input:
183 array(
184 'xyz' => array('123', 'def'),
185 'abc' => 'abc'
187 // default:
188 array('' => array(0)),
189 false,
190 // expected:
191 array(
192 'xyz' => array(123, 0),
193 'abc' => array()
196 array(
197 // input:
198 array(
199 0 => array(0 => array(3, '4', 'ab'), 1 => array()),
200 1 => array(array(3, 4)),
202 // default:
203 array(0 => array(0 => array(0))),
204 false,
205 // expected:
206 array(
207 0 => array(0 => array(3, 4, 0), 1 => array()),
208 1 => array(array(3, 4))
211 array(
212 // input:
213 array(
214 'ü' => array(array('c' => 'd')),
215 'ä' => array(4 => array('a' => 2, 'ö' => 3)),
217 // default:
218 array('' => array(0 => array('' => 0))),
219 false,
220 // expected:
221 array(
222 '??' => array(4 => array('a' => 2, '??' => 3)),
225 array(
226 // input:
227 array(
228 'ü' => array(array('c' => 'd')),
229 'ä' => array(4 => array('a' => 2, 'ö' => 3)),
231 // default:
232 array('' => array(0 => array('' => 0))),
233 true,
234 // expected:
235 array(
236 'ü' => array(array('c' => 0)),
237 'ä' => array(4 => array('a' => 2, 'ö' => 3)),