aboutsummaryrefslogtreecommitdiff
path: root/src/test/java/com/code_intelligence/jazzer/mutation
diff options
context:
space:
mode:
authorFabian Meumertzheim <meumertzheim@code-intelligence.com>2023-02-09 16:12:04 +0100
committerFabian Meumertzheim <fabian@meumertzhe.im>2023-02-16 12:42:32 +0100
commit2726fee2d238979ab2425339f699b47fc2052200 (patch)
tree4d07493a9cd0b6cacfcf789699a2da8967ff9ddb /src/test/java/com/code_intelligence/jazzer/mutation
parent8e2ed8462089b49f2d57f00ebe7ee31c1558d1d9 (diff)
downloadjazzer-api-2726fee2d238979ab2425339f699b47fc2052200.tar.gz
mutation: Make `toString()` work with cyclic mutator structures
A new `getDebugString` function is introduced that provides a predicate as an argument with which implementors can check whether they are part of a cyclic structure (e.g. a self-referential Protobuf message). This requires making `SerializingMutator` an abstract class so that an implementation of `toString` can be provided.
Diffstat (limited to 'src/test/java/com/code_intelligence/jazzer/mutation')
-rw-r--r--src/test/java/com/code_intelligence/jazzer/mutation/combinator/MutatorCombinatorsTest.java6
-rw-r--r--src/test/java/com/code_intelligence/jazzer/mutation/support/TestSupport.java4
2 files changed, 7 insertions, 3 deletions
diff --git a/src/test/java/com/code_intelligence/jazzer/mutation/combinator/MutatorCombinatorsTest.java b/src/test/java/com/code_intelligence/jazzer/mutation/combinator/MutatorCombinatorsTest.java
index eae088f7..a8424ecb 100644
--- a/src/test/java/com/code_intelligence/jazzer/mutation/combinator/MutatorCombinatorsTest.java
+++ b/src/test/java/com/code_intelligence/jazzer/mutation/combinator/MutatorCombinatorsTest.java
@@ -27,6 +27,7 @@ import static com.code_intelligence.jazzer.mutation.support.TestSupport.nullData
import static com.google.common.truth.Truth.assertThat;
import static org.junit.jupiter.api.Assertions.assertThrows;
+import com.code_intelligence.jazzer.mutation.api.Debuggable;
import com.code_intelligence.jazzer.mutation.api.InPlaceMutator;
import com.code_intelligence.jazzer.mutation.api.PseudoRandom;
import com.code_intelligence.jazzer.mutation.api.SerializingMutator;
@@ -35,6 +36,7 @@ import java.io.DataInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
+import java.util.function.Predicate;
import org.junit.jupiter.api.Test;
class MutatorCombinatorsTest {
@@ -77,7 +79,7 @@ class MutatorCombinatorsTest {
}
@Override
- public String toString() {
+ public String toDebugString(Predicate<Debuggable> isInCycle) {
return "List<Integer>";
}
});
@@ -120,7 +122,7 @@ class MutatorCombinatorsTest {
}
@Override
- public String toString() {
+ public String toDebugString(Predicate<Debuggable> isInCycle) {
return "List<Integer>";
}
});
diff --git a/src/test/java/com/code_intelligence/jazzer/mutation/support/TestSupport.java b/src/test/java/com/code_intelligence/jazzer/mutation/support/TestSupport.java
index 9a4c1572..c7744cec 100644
--- a/src/test/java/com/code_intelligence/jazzer/mutation/support/TestSupport.java
+++ b/src/test/java/com/code_intelligence/jazzer/mutation/support/TestSupport.java
@@ -21,6 +21,7 @@ import static com.google.common.truth.Truth.assertThat;
import static java.util.Arrays.stream;
import static java.util.stream.Collectors.toCollection;
+import com.code_intelligence.jazzer.mutation.api.Debuggable;
import com.code_intelligence.jazzer.mutation.api.PseudoRandom;
import com.code_intelligence.jazzer.mutation.api.SerializingMutator;
import com.code_intelligence.jazzer.mutation.engine.SeededPseudoRandom;
@@ -32,6 +33,7 @@ import java.io.OutputStream;
import java.util.ArrayDeque;
import java.util.Queue;
import java.util.function.Function;
+import java.util.function.Predicate;
public final class TestSupport {
private static final DataOutputStream nullDataOutputStream =
@@ -88,7 +90,7 @@ public final class TestSupport {
}
@Override
- public String toString() {
+ public String toDebugString(Predicate<Debuggable> isInCycle) {
if (initialValue == null) {
return "null";
}