@@ -1214,6 +1214,46 @@ public function testSelectNullableFields()
1214
1214
$ query ->fetch (\PDO ::FETCH_ASSOC )
1215
1215
);
1216
1216
}
1217
+
1218
+ public function testNegateOperationWithAnd ()
1219
+ {
1220
+ // greater than
1221
+ $ pdo = self ::getConnectionToFullDB (false );
1222
+ $ query = $ pdo ->prepare ("SELECT COUNT(*) as 'count' FROM `video_game_characters` WHERE `console` = :console AND NOT (`powerups` > :powerups) " );
1223
+ $ query ->bindValue (':console ' , 'nes ' );
1224
+ $ query ->bindValue (':powerups ' , 3 );
1225
+ $ query ->execute ();
1226
+
1227
+ $ this ->assertSame ([['count ' => 8 ]], $ query ->fetchAll (\PDO ::FETCH_ASSOC ));
1228
+
1229
+ // equals
1230
+ $ query = $ pdo ->prepare ("SELECT COUNT(*) as 'count' FROM `video_game_characters` WHERE `console` = :console AND NOT (`powerups` = :powerups) " );
1231
+ $ query ->bindValue (':console ' , 'nes ' );
1232
+ $ query ->bindValue (':powerups ' , 0 );
1233
+ $ query ->execute ();
1234
+
1235
+ $ this ->assertSame ([['count ' => 2 ]], $ query ->fetchAll (\PDO ::FETCH_ASSOC ));
1236
+ }
1237
+
1238
+ public function testNegateOperationWithOr ()
1239
+ {
1240
+ // greater than
1241
+ $ pdo = self ::getConnectionToFullDB (false );
1242
+ $ query = $ pdo ->prepare ("SELECT COUNT(*) as 'count' FROM `video_game_characters` WHERE `console` = :console OR NOT (`powerups` > :powerups) " );
1243
+ $ query ->bindValue (':console ' , 'nes ' );
1244
+ $ query ->bindValue (':powerups ' , 3 );
1245
+ $ query ->execute ();
1246
+
1247
+ $ this ->assertSame ([['count ' => 16 ]], $ query ->fetchAll (\PDO ::FETCH_ASSOC ));
1248
+
1249
+ // equals
1250
+ $ query = $ pdo ->prepare ("SELECT COUNT(*) as 'count' FROM `video_game_characters` WHERE `console` = :console OR NOT (`powerups` = :powerups) " );
1251
+ $ query ->bindValue (':console ' , 'nes ' );
1252
+ $ query ->bindValue (':powerups ' , 0 );
1253
+ $ query ->execute ();
1254
+
1255
+ $ this ->assertSame ([['count ' => 9 ]], $ query ->fetchAll (\PDO ::FETCH_ASSOC ));
1256
+ }
1217
1257
1218
1258
private static function getPdo (string $ connection_string , bool $ strict_mode = false ) : \PDO
1219
1259
{
0 commit comments