diff options
author | Peter Samarin <peter.samarin@code-intelligence.com> | 2023-03-14 14:28:57 +0100 |
---|---|---|
committer | Fabian Meumertzheim <fabian@meumertzhe.im> | 2023-03-15 11:27:19 +0100 |
commit | 0a15f0afdb80f26c2dd8891810524d4d8f050da0 (patch) | |
tree | 90dfa477eddbbc2da515d3651487eb2fbb033d2c /src/test/java/com | |
parent | e81b804e84a5c04879d97efeac98089c520dd6c8 (diff) | |
download | jazzer-api-0a15f0afdb80f26c2dd8891810524d4d8f050da0.tar.gz |
Add fully random placeholder mutators for doubles and floats
Diffstat (limited to 'src/test/java/com')
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(); |