@@ -462,6 +462,43 @@ void test(String key, String value) {
462462 rewriteRun (java (before , after ));
463463 }
464464
465+ private static Stream <Arguments > notMapReplacements () {
466+ return Stream .of (
467+ Arguments .arguments ("map1" , "hasKey" , "key" , "doesNotContainKey" ),
468+ Arguments .arguments ("map1" , "hasValue" , "value" , "doesNotContainValue" ),
469+ Arguments .arguments ("map1" , "hasEntry" , "key, value" , "doesNotContainEntry" ),
470+ Arguments .arguments ("map1" , "anEmptyMap" , "" , "isNotEmpty" )
471+ );
472+ }
473+
474+ @ MethodSource ("notMapReplacements" )
475+ @ ParameterizedTest
476+ void notMapReplacements (String actual , String hamcrestMatcher , String matcherArgs , String assertJAssertion ) {
477+ String importsBefore = """
478+ import static org.hamcrest.MatcherAssert.assertThat;
479+ import static org.hamcrest.Matchers.not;
480+ import static org.hamcrest.Matchers.%s;""" .formatted (hamcrestMatcher );
481+ String importsAfter = "import static org.assertj.core.api.Assertions.assertThat;" ;
482+ //language=java
483+ String template = """
484+ import java.util.Map;
485+ import org.junit.jupiter.api.Test;
486+
487+ %s
488+
489+ class ATest {
490+ @Test
491+ void test(String key, String value) {
492+ Map<String, String> map1 = Map.of("a", "b", "c", "d");
493+ %s
494+ }
495+ }
496+ """ ;
497+ String before = template .formatted (importsBefore , "assertThat(%s, not(%s(%s)));" .formatted (actual , hamcrestMatcher , matcherArgs ));
498+ String after = template .formatted (importsAfter , "assertThat(%s).%s(%s);" .formatted (actual , assertJAssertion , matcherArgs ));
499+ rewriteRun (java (before , after ));
500+ }
501+
465502 private static Stream <Arguments > notReplacements () {
466503 return Stream .of (
467504 Arguments .arguments ("str1" , "equalTo" , "str2" , "isNotEqualTo" ),
@@ -480,7 +517,10 @@ private static Stream<Arguments> notReplacements() {
480517 Arguments .arguments ("str1" , "equalToIgnoringCase" , "str2" , "isNotEqualToIgnoringCase" ),
481518 Arguments .arguments ("str1" , "equalToIgnoringWhiteSpace" , "str2" , "isNotEqualToIgnoringWhitespace" ),
482519 Arguments .arguments ("str1" , "blankString" , "" , "isNotBlank" ),
483- Arguments .arguments ("str1" , "emptyString" , "" , "isNotEmpty" )
520+ Arguments .arguments ("str1" , "emptyString" , "" , "isNotEmpty" ),
521+ Arguments .arguments ("str1" , "isEmptyOrNullString" , "" , "isNotEmpty" ),
522+ Arguments .arguments ("str1" , "emptyOrNullString" , "" , "isNotEmpty" ),
523+ Arguments .arguments ("str1" , "isA" , "String.class" , "isNotInstanceOf" )
484524 );
485525 }
486526
0 commit comments