11
11
use Doctrine \DBAL \Types \Type ;
12
12
use PHPUnit \Framework \TestCase ;
13
13
14
+ use function hex2bin ;
15
+
14
16
class ExpandArrayParametersTest extends TestCase
15
17
{
16
18
/** @return mixed[][] */
@@ -94,16 +96,24 @@ public static function dataExpandListParameters(): iterable
94
96
[1 => ParameterType::STRING , 2 => ParameterType::STRING ],
95
97
],
96
98
'Positional: explicit keys for array params and array types ' => [
97
- 'SELECT * FROM Foo WHERE foo IN (?) AND bar IN (?) AND baz = ? AND bax IN (?) ' ,
98
- [1 => ['bar1 ' , 'bar2 ' ], 2 => true , 0 => [1 , 2 , 3 ], ['bax1 ' , 'bax2 ' ]],
99
+ 'SELECT * FROM Foo WHERE foo IN (?) AND bar IN (?) AND baz = ? AND bax IN (?) AND bay IN (?) ' ,
100
+ [
101
+ 1 => ['bar1 ' , 'bar2 ' ],
102
+ 2 => true ,
103
+ 0 => [1 , 2 , 3 ],
104
+ ['bax1 ' , 'bax2 ' ],
105
+ 4 => [hex2bin ('DEADBEEF ' ), hex2bin ('C0DEF00D ' )],
106
+ ],
99
107
[
108
+ 4 => ArrayParameterType::BINARY ,
100
109
3 => ArrayParameterType::ASCII ,
101
110
2 => ParameterType::BOOLEAN ,
102
111
1 => ArrayParameterType::STRING ,
103
112
0 => ArrayParameterType::INTEGER ,
104
113
],
105
- 'SELECT * FROM Foo WHERE foo IN (?, ?, ?) AND bar IN (?, ?) AND baz = ? AND bax IN (?, ?) ' ,
106
- [1 , 2 , 3 , 'bar1 ' , 'bar2 ' , true , 'bax1 ' , 'bax2 ' ],
114
+ 'SELECT * FROM Foo WHERE foo IN (?, ?, ?) AND bar IN (?, ?) AND baz = ? AND bax IN (?, ?) ' .
115
+ 'AND bay IN (?, ?) ' ,
116
+ [1 , 2 , 3 , 'bar1 ' , 'bar2 ' , true , 'bax1 ' , 'bax2 ' , hex2bin ('DEADBEEF ' ), hex2bin ('C0DEF00D ' )],
107
117
[
108
118
ParameterType::INTEGER ,
109
119
ParameterType::INTEGER ,
@@ -113,6 +123,8 @@ public static function dataExpandListParameters(): iterable
113
123
ParameterType::BOOLEAN ,
114
124
ParameterType::ASCII ,
115
125
ParameterType::ASCII ,
126
+ ParameterType::BINARY ,
127
+ ParameterType::BINARY ,
116
128
],
117
129
],
118
130
'Named: Very simple with param int ' => [
@@ -310,6 +322,22 @@ public static function dataExpandListParameters(): iterable
310
322
['foo ' , 'bar ' , 'baz ' ],
311
323
[1 => ParameterType::STRING , ParameterType::STRING ],
312
324
],
325
+ 'Named: Binary array with explicit types ' => [
326
+ 'SELECT * FROM Foo WHERE foo IN (:foo) OR bar IN (:bar) ' ,
327
+ [
328
+ 'foo ' => [hex2bin ('DEADBEEF ' ), hex2bin ('C0DEF00D ' )],
329
+ 'bar ' => [hex2bin ('DEADBEEF ' ), hex2bin ('C0DEF00D ' )],
330
+ ],
331
+ ['foo ' => ArrayParameterType::BINARY , 'bar ' => ArrayParameterType::BINARY ],
332
+ 'SELECT * FROM Foo WHERE foo IN (?, ?) OR bar IN (?, ?) ' ,
333
+ [hex2bin ('DEADBEEF ' ), hex2bin ('C0DEF00D ' ), hex2bin ('DEADBEEF ' ), hex2bin ('C0DEF00D ' )],
334
+ [
335
+ ParameterType::BINARY ,
336
+ ParameterType::BINARY ,
337
+ ParameterType::BINARY ,
338
+ ParameterType::BINARY ,
339
+ ],
340
+ ],
313
341
];
314
342
}
315
343
0 commit comments