|
17 | 17 | use Config\Database; |
18 | 18 | use PHPUnit\Framework\Attributes\DataProvider; |
19 | 19 | use PHPUnit\Framework\Attributes\Group; |
20 | | -use ReflectionClass; |
21 | 20 |
|
22 | 21 | /** |
23 | 22 | * @internal |
@@ -239,57 +238,53 @@ public function testGetFieldDataType(): void |
239 | 238 | } |
240 | 239 |
|
241 | 240 | #[DataProvider('provideNormalizeDefault')] |
242 | | - public function testNormalizeDefault(?string $input, ?string $expected, string $description): void |
| 241 | + public function testNormalizeDefault(?string $input, ?string $expected): void |
243 | 242 | { |
244 | | - $reflection = new ReflectionClass($this->db); |
245 | | - $method = $reflection->getMethod('normalizeDefault'); |
246 | | - |
247 | | - $result = $method->invoke($this->db, $input); |
248 | | - |
249 | | - $this->assertSame($expected, $result, "Failed test: {$description}"); |
| 243 | + $normalizeDefault = self::getPrivateMethodInvoker($this->db, 'normalizeDefault'); |
| 244 | + $this->assertSame($expected, $normalizeDefault($input)); |
250 | 245 | } |
251 | 246 |
|
252 | 247 | /** |
253 | | - * @return iterable<array{string|null, string|null, string}> |
| 248 | + * @return iterable<string, array{string|null, string|null}> |
254 | 249 | */ |
255 | 250 | public static function provideNormalizeDefault(): iterable |
256 | 251 | { |
257 | 252 | return [ |
258 | | - // [input, expected_output, description] |
259 | | - |
260 | 253 | // Null cases |
261 | | - [null, null, 'null input'], |
262 | | - ['(NULL)', null, 'NULL literal wrapped in parentheses'], |
263 | | - ['(null)', null, 'null literal lowercase'], |
264 | | - ['(Null)', null, 'null literal mixed case'], |
265 | | - ['(nULL)', null, 'null literal random case'], |
| 254 | + 'null input' => [null, null], |
| 255 | + 'NULL literal wrapped in parentheses' => ['(NULL)', null], |
| 256 | + 'null literal lowercase' => ['(null)', null], |
| 257 | + 'null literal mixed case' => ['(Null)', null], |
| 258 | + 'null literal random case' => ['(nULL)', null], |
| 259 | + 'null string' => ["('null')", 'null'], |
266 | 260 |
|
267 | 261 | // String literal cases |
268 | | - ["('hello')", 'hello', 'simple string'], |
269 | | - ["('hello world')", 'hello world', 'string with space'], |
270 | | - ["('')", '', 'empty string literal'], |
271 | | - ["('can''t')", "can't", 'string with escaped quote'], |
272 | | - ["('it''s a ''test''')", "it's a 'test'", 'string with multiple escaped quotes'], |
273 | | - ["('line1'+char(10)+'line2')", "line1'+char(10)+'line2", 'concatenated multiline expression'], |
| 262 | + 'simple string' => ["('hello')", 'hello'], |
| 263 | + 'empty string' => ['(())', ''], |
| 264 | + 'string with space' => ["('hello world')", 'hello world'], |
| 265 | + 'empty string literal' => ["('')", ''], |
| 266 | + 'string with escaped quote' => ["('can''t')", "can't"], |
| 267 | + 'string with multiple escaped quotes' => ["('it''s a ''test''')", "it's a 'test'"], |
| 268 | + 'concatenated multiline expression' => ["('line1'+char(10)+'line2')", "line1'+char(10)+'line2"], |
274 | 269 |
|
275 | 270 | // Numeric cases |
276 | | - ['((0))', '0', 'zero with double parentheses'], |
277 | | - ['((123))', '123', 'positive integer with double parentheses'], |
278 | | - ['((-456))', '-456', 'negative integer with double parentheses'], |
279 | | - ['((3.14))', '3.14', 'float with double parentheses'], |
| 271 | + 'zero with double parentheses' => ['((0))', '0'], |
| 272 | + 'positive integer with double parentheses' => ['((123))', '123'], |
| 273 | + 'negative integer with double parentheses' => ['((-456))', '-456'], |
| 274 | + 'float with double parentheses' => ['((3.14))', '3.14'], |
280 | 275 |
|
281 | 276 | // Function/expression cases |
282 | | - ['(getdate())', 'getdate()', 'function call'], |
283 | | - ['(newid())', 'newid()', 'newid function'], |
284 | | - ['(user_name())', 'user_name()', 'user_name function'], |
285 | | - ['(current_timestamp)', 'current_timestamp', 'current_timestamp'], |
286 | | - ['((1+1))', '1+1', 'mathematical expression'], |
287 | | - ['((100*2))', '100*2', 'multiplication expression'], |
| 277 | + 'function call' => ['(getdate())', 'getdate()'], |
| 278 | + 'newid function' => ['(newid())', 'newid()'], |
| 279 | + 'user_name function' => ['(user_name())', 'user_name()'], |
| 280 | + 'current_timestamp' => ['(current_timestamp)', 'current_timestamp'], |
| 281 | + 'mathematical expression' => ['((1+1))', '1+1'], |
| 282 | + 'multiplication expression' => ['((100*2))', '100*2'], |
288 | 283 |
|
289 | 284 | // Edge cases |
290 | | - ["((('nested')))", 'nested', 'multiple nested parentheses'], |
291 | | - ['plain_value', 'plain_value', 'value without parentheses'], |
292 | | - ['(complex_func(1, 2))', 'complex_func(1, 2)', 'function with parameters'], |
| 285 | + 'multiple nested parentheses' => ["((('nested')))", 'nested'], |
| 286 | + 'value without parentheses' => ['plain_value', 'plain_value'], |
| 287 | + 'function with parameters' => ['(complex_func(1, 2))', 'complex_func(1, 2)'], |
293 | 288 | ]; |
294 | 289 | } |
295 | 290 | } |
0 commit comments