@@ -1214,6 +1214,46 @@ public function testSelectNullableFields()
12141214 $ query ->fetch (\PDO ::FETCH_ASSOC )
12151215 );
12161216 }
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+ }
12171257
12181258 private static function getPdo (string $ connection_string , bool $ strict_mode = false ) : \PDO
12191259 {
0 commit comments