aboutsummaryrefslogtreecommitdiff
path: root/src/test/java/com
diff options
context:
space:
mode:
authorPeter Samarin <peter.samarin@code-intelligence.com>2023-03-14 14:28:57 +0100
committerFabian Meumertzheim <fabian@meumertzhe.im>2023-03-15 11:27:19 +0100
commit0a15f0afdb80f26c2dd8891810524d4d8f050da0 (patch)
tree90dfa477eddbbc2da515d3651487eb2fbb033d2c /src/test/java/com
parente81b804e84a5c04879d97efeac98089c520dd6c8 (diff)
downloadjazzer-api-0a15f0afdb80f26c2dd8891810524d4d8f050da0.tar.gz
Add fully random placeholder mutators for doubles and floats
Diffstat (limited to 'src/test/java/com')
-rw-r--r--src/test/java/com/code_intelligence/jazzer/mutation/mutator/StressTest.java17
-rw-r--r--src/test/java/com/code_intelligence/jazzer/mutation/mutator/proto/proto3.proto18
-rw-r--r--src/test/java/com/code_intelligence/jazzer/mutation/support/TestSupport.java20
3 files changed, 53 insertions, 2 deletions
diff --git a/src/test/java/com/code_intelligence/jazzer/mutation/mutator/StressTest.java b/src/test/java/com/code_intelligence/jazzer/mutation/mutator/StressTest.java
index 9dae0dbb..6d13f688 100644
--- a/src/test/java/com/code_intelligence/jazzer/mutation/mutator/StressTest.java
+++ b/src/test/java/com/code_intelligence/jazzer/mutation/mutator/StressTest.java
@@ -39,14 +39,18 @@ import com.code_intelligence.jazzer.mutation.api.Serializer;
import com.code_intelligence.jazzer.mutation.api.SerializingMutator;
import com.code_intelligence.jazzer.mutation.support.TypeHolder;
import com.code_intelligence.jazzer.protobuf.Proto3.BytesField3;
+import com.code_intelligence.jazzer.protobuf.Proto3.DoubleField3;
import com.code_intelligence.jazzer.protobuf.Proto3.EnumField3;
import com.code_intelligence.jazzer.protobuf.Proto3.EnumField3.TestEnum;
import com.code_intelligence.jazzer.protobuf.Proto3.EnumFieldRepeated3;
import com.code_intelligence.jazzer.protobuf.Proto3.EnumFieldRepeated3.TestEnumRepeated;
+import com.code_intelligence.jazzer.protobuf.Proto3.FloatField3;
import com.code_intelligence.jazzer.protobuf.Proto3.IntegralField3;
import com.code_intelligence.jazzer.protobuf.Proto3.MapField3;
import com.code_intelligence.jazzer.protobuf.Proto3.MessageMapField3;
import com.code_intelligence.jazzer.protobuf.Proto3.OptionalPrimitiveField3;
+import com.code_intelligence.jazzer.protobuf.Proto3.RepeatedDoubleField3;
+import com.code_intelligence.jazzer.protobuf.Proto3.RepeatedFloatField3;
import com.code_intelligence.jazzer.protobuf.Proto3.RepeatedIntegralField3;
import com.code_intelligence.jazzer.protobuf.Proto3.RepeatedRecursiveMessageField3;
import com.code_intelligence.jazzer.protobuf.Proto3.StringField3;
@@ -62,6 +66,7 @@ import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.function.Consumer;
+import java.util.stream.Collectors;
import java.util.stream.Stream;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments;
@@ -224,7 +229,17 @@ public class StressTest {
manyDistinctElements()),
arguments(new TypeHolder<@NotNull MessageMapField3>() {}.annotatedType(),
"{Builder.Map<String,{Builder.Map<Integer,String>} -> Message>} -> Message",
- manyDistinctElements(), manyDistinctElements()));
+ manyDistinctElements(), manyDistinctElements()),
+ arguments(new TypeHolder<@NotNull DoubleField3>() {}.annotatedType(),
+ "{Builder.Double} -> Message", manyDistinctElements(), distinctElementsRatio(0.99)),
+ arguments(new TypeHolder<@NotNull RepeatedDoubleField3>() {}.annotatedType(),
+ "{Builder via List<Double>} -> Message", manyDistinctElements(),
+ distinctElementsRatio(0.99)),
+ arguments(new TypeHolder<@NotNull FloatField3>() {}.annotatedType(),
+ "{Builder.Float} -> Message", manyDistinctElements(), distinctElementsRatio(0.99)),
+ arguments(new TypeHolder<@NotNull RepeatedFloatField3>() {}.annotatedType(),
+ "{Builder via List<Float>} -> Message", manyDistinctElements(),
+ distinctElementsRatio(0.99)));
}
@SafeVarargs
diff --git a/src/test/java/com/code_intelligence/jazzer/mutation/mutator/proto/proto3.proto b/src/test/java/com/code_intelligence/jazzer/mutation/mutator/proto/proto3.proto
index 27e78a38..88003345 100644
--- a/src/test/java/com/code_intelligence/jazzer/mutation/mutator/proto/proto3.proto
+++ b/src/test/java/com/code_intelligence/jazzer/mutation/mutator/proto/proto3.proto
@@ -110,5 +110,21 @@ message MapField3 {
}
message MessageMapField3 {
- map<string, MapField3> some_field =1;
+ map<string, MapField3> some_field = 1;
+}
+
+message FloatField3 {
+ float some_field = 1;
+}
+
+message RepeatedFloatField3 {
+ repeated float some_field = 1;
+}
+
+message DoubleField3 {
+ double some_field = 1;
+}
+
+message RepeatedDoubleField3 {
+ repeated double some_field = 1;
}
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 4d6c2ac5..37ace8e6 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
@@ -190,6 +190,26 @@ public final class TestSupport {
}
@Override
+ public float closedRange(float lowerInclusive, float upperInclusive) {
+ assertThat(lowerInclusive).isLessThan(upperInclusive);
+ assertThat(elements).isNotEmpty();
+ float result = (float) elements.poll();
+ assertThat(result).isAtLeast(lowerInclusive);
+ assertThat(result).isAtMost(upperInclusive);
+ return result;
+ }
+
+ @Override
+ public double closedRange(double lowerInclusive, double upperInclusive) {
+ assertThat(lowerInclusive).isLessThan(upperInclusive);
+ assertThat(elements).isNotEmpty();
+ double result = (double) elements.poll();
+ assertThat(result).isAtLeast(lowerInclusive);
+ assertThat(result).isAtMost(upperInclusive);
+ return result;
+ }
+
+ @Override
public void bytes(byte[] bytes) {
assertThat(elements).isNotEmpty();
byte[] result = (byte[]) elements.poll();