@@ -32,42 +32,72 @@ public function provideValuesThatWillBeReturnedAsIs()
32
32
'hello? ' ,
33
33
'FööBär ' ,
34
34
'pile of 💩 ' ,
35
- '<>&-- \\\'"; ' ,
36
- "\0\1\2\3\4\5\6\7\8 \xff" ,
35
+ 'Dave \'s Diner ' ,
36
+ 'Robert "Bobby" ' ,
37
+ "first \r\nsecond " ,
38
+ 'C: \\\\Users \\' ,
39
+ '<>&-- \'"; ' ,
40
+ "\0\1\2\3\4\5\6\7\10\xff" ,
41
+ implode ('' , range ("\x00" , "\x2F" )) . implode ('' , range ("\x7f" , "\xFF" )),
37
42
'' ,
38
43
null
39
44
]);
40
45
}
41
46
42
- public function provideValuesThatWillBeConvertedToString ()
47
+ /**
48
+ * @dataProvider provideValuesThatWillBeReturnedAsIs
49
+ */
50
+ public function testSelectStaticValueWillBeReturnedAsIs ($ value )
43
51
{
44
- return [
45
- [1 , '1 ' ],
46
- [1.5 , '1.5 ' ],
47
- [true , '1 ' ],
48
- [false , '0 ' ]
49
- ];
52
+ $ connection = $ this ->createConnection (Loop::get ());
53
+
54
+ $ expected = $ value ;
55
+
56
+ $ connection ->query ('select ? ' , [$ value ])->then (function (QueryResult $ command ) use ($ expected ) {
57
+ $ this ->assertCount (1 , $ command ->resultRows );
58
+ $ this ->assertCount (1 , $ command ->resultRows [0 ]);
59
+ $ this ->assertSame ($ expected , reset ($ command ->resultRows [0 ]));
60
+ })->then (null , 'printf ' );
61
+
62
+ $ connection ->quit ();
63
+ Loop::run ();
50
64
}
51
65
52
66
/**
53
67
* @dataProvider provideValuesThatWillBeReturnedAsIs
54
68
*/
55
- public function testSelectStaticValueWillBeReturnedAsIs ($ value )
69
+ public function testSelectStaticValueWillBeReturnedAsIsWithNoBackslashEscapesSqlMode ($ value )
56
70
{
71
+ if (strpos ($ value , '\\' ) !== false ) {
72
+ // TODO: strings such as '%\\' work as-is when string contains percent?!
73
+ $ this ->markTestIncomplete ('Escaping backslash not supported when using NO_BACKSLASH_ESCAPES SQL mode ' );
74
+ }
75
+
57
76
$ connection = $ this ->createConnection (Loop::get ());
58
77
59
78
$ expected = $ value ;
60
79
80
+ $ connection ->query ('SET SQL_MODE="NO_BACKSLASH_ESCAPES" ' );
61
81
$ connection ->query ('select ? ' , [$ value ])->then (function (QueryResult $ command ) use ($ expected ) {
62
82
$ this ->assertCount (1 , $ command ->resultRows );
63
83
$ this ->assertCount (1 , $ command ->resultRows [0 ]);
64
84
$ this ->assertSame ($ expected , reset ($ command ->resultRows [0 ]));
65
- });
85
+ })-> then ( null , ' printf ' ) ;
66
86
67
87
$ connection ->quit ();
68
88
Loop::run ();
69
89
}
70
90
91
+ public function provideValuesThatWillBeConvertedToString ()
92
+ {
93
+ return [
94
+ [1 , '1 ' ],
95
+ [1.5 , '1.5 ' ],
96
+ [true , '1 ' ],
97
+ [false , '0 ' ]
98
+ ];
99
+ }
100
+
71
101
/**
72
102
* @dataProvider provideValuesThatWillBeConvertedToString
73
103
*/
0 commit comments