From 0587e7934e9eb8c3fc0d6f36c7fecc5e095f3406 Mon Sep 17 00:00:00 2001 From: Henry Coles Date: Wed, 28 Aug 2024 09:41:23 +0100 Subject: [PATCH] additional test case --- .../EnumMethodReferenceNotStored.java | 20 +++++++++++++++++++ .../StaticInitializerInterceptorTest.java | 11 ++++++++++ 2 files changed, 31 insertions(+) create mode 100644 pitest-entry/src/test/java/com/example/staticinitializers/delayedexecution/EnumMethodReferenceNotStored.java diff --git a/pitest-entry/src/test/java/com/example/staticinitializers/delayedexecution/EnumMethodReferenceNotStored.java b/pitest-entry/src/test/java/com/example/staticinitializers/delayedexecution/EnumMethodReferenceNotStored.java new file mode 100644 index 000000000..ec998203e --- /dev/null +++ b/pitest-entry/src/test/java/com/example/staticinitializers/delayedexecution/EnumMethodReferenceNotStored.java @@ -0,0 +1,20 @@ +package com.example.staticinitializers.delayedexecution; + +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +public enum EnumMethodReferenceNotStored { + A(Arrays.asList(1,2,3)); + + private final List l; + EnumMethodReferenceNotStored(List list) { + l = list.stream() + .filter(this::doNotMutate) + .collect(Collectors.toList()); + } + + private boolean doNotMutate(Integer i) { + return i > 2; + } +} diff --git a/pitest-entry/src/test/java/org/pitest/mutationtest/build/intercept/staticinitializers/StaticInitializerInterceptorTest.java b/pitest-entry/src/test/java/org/pitest/mutationtest/build/intercept/staticinitializers/StaticInitializerInterceptorTest.java index 624535e90..8822bd49d 100644 --- a/pitest-entry/src/test/java/org/pitest/mutationtest/build/intercept/staticinitializers/StaticInitializerInterceptorTest.java +++ b/pitest-entry/src/test/java/org/pitest/mutationtest/build/intercept/staticinitializers/StaticInitializerInterceptorTest.java @@ -8,6 +8,7 @@ import com.example.staticinitializers.NestedEnumWithLambdaInStaticInitializer; import com.example.staticinitializers.SecondLevelPrivateMethods; import com.example.staticinitializers.SingletonWithWorkInInitializer; +import com.example.staticinitializers.delayedexecution.EnumMethodReferenceNotStored; import com.example.staticinitializers.delayedexecution.EnumMixedFields; import com.example.staticinitializers.delayedexecution.StaticFunctionField; import com.example.staticinitializers.delayedexecution.StaticSupplierField; @@ -228,6 +229,16 @@ public void suppressesMutationsForStringsStoredToEnumFields() { .verify(); } + @Test + public void filtersMutationsForMethodReferencesUsedInEnumConstructor() { + v.forClass(EnumMethodReferenceNotStored.class) + .forMethod("doNotMutate") + .forAnyCode() + .mutantsAreGenerated() + .allMutantsAreFiltered() + .verify(); + } + private Predicate inMethod(String name, String desc) { return m -> m.getMethod().equals(name) && m.getId().getLocation().getMethodDesc().equals(desc); }