DistributionUtils.java

1
package net.bmahe.genetics4j.core.util;
2
3
import java.util.Objects;
4
import java.util.function.Supplier;
5
import java.util.random.RandomGenerator;
6
7
import org.apache.commons.lang3.Validate;
8
9
import net.bmahe.genetics4j.core.spec.statistics.distributions.Distribution;
10
import net.bmahe.genetics4j.core.spec.statistics.distributions.NormalDistribution;
11
import net.bmahe.genetics4j.core.spec.statistics.distributions.UniformDistribution;
12
13
public class DistributionUtils {
14
15
	public static Supplier<Double> distributionValueSupplier(final RandomGenerator randomGenerator,
16
			final double minValue, final double maxValue, final Distribution distribution) {
17
		Objects.requireNonNull(randomGenerator);
18
		Objects.requireNonNull(distribution);
19
		Validate.isTrue(minValue <= maxValue);
20
21
		return switch (distribution) {
22
			case UniformDistribution ud -> {
23 1 1. distributionValueSupplier : Replaced double subtraction with addition → KILLED
				final double valueRange = maxValue - minValue;
24 5 1. lambda$distributionValueSupplier$0 : removed call to java/util/random/RandomGenerator::nextDouble → KILLED
2. lambda$distributionValueSupplier$0 : removed call to java/lang/Double::valueOf → KILLED
3. lambda$distributionValueSupplier$0 : Replaced double multiplication with division → KILLED
4. lambda$distributionValueSupplier$0 : replaced Double return value with 0 for net/bmahe/genetics4j/core/util/DistributionUtils::lambda$distributionValueSupplier$0 → KILLED
5. lambda$distributionValueSupplier$0 : Replaced double addition with subtraction → KILLED
				yield () -> minValue + randomGenerator.nextDouble() * valueRange;
25
			}
26
			case NormalDistribution normalDistribution -> {
27 1 1. distributionValueSupplier : removed call to net/bmahe/genetics4j/core/spec/statistics/distributions/NormalDistribution::mean → NO_COVERAGE
				final double mean = normalDistribution.mean();
28 1 1. distributionValueSupplier : removed call to net/bmahe/genetics4j/core/spec/statistics/distributions/NormalDistribution::standardDeviation → NO_COVERAGE
				final double standardDeviation = normalDistribution.standardDeviation();
29
30
				yield () -> {
31 3 1. lambda$distributionValueSupplier$1 : Replaced double multiplication with division → NO_COVERAGE
2. lambda$distributionValueSupplier$1 : removed call to java/util/random/RandomGenerator::nextGaussian → NO_COVERAGE
3. lambda$distributionValueSupplier$1 : Replaced double addition with subtraction → NO_COVERAGE
					final double value = mean + randomGenerator.nextGaussian() * standardDeviation;
32
33 4 1. lambda$distributionValueSupplier$1 : changed conditional boundary → NO_COVERAGE
2. lambda$distributionValueSupplier$1 : removed conditional - replaced comparison check with true → NO_COVERAGE
3. lambda$distributionValueSupplier$1 : negated conditional → NO_COVERAGE
4. lambda$distributionValueSupplier$1 : removed conditional - replaced comparison check with false → NO_COVERAGE
					if (value < minValue) {
34 2 1. lambda$distributionValueSupplier$1 : replaced Double return value with 0 for net/bmahe/genetics4j/core/util/DistributionUtils::lambda$distributionValueSupplier$1 → NO_COVERAGE
2. lambda$distributionValueSupplier$1 : removed call to java/lang/Double::valueOf → NO_COVERAGE
						return minValue;
35 4 1. lambda$distributionValueSupplier$1 : changed conditional boundary → NO_COVERAGE
2. lambda$distributionValueSupplier$1 : negated conditional → NO_COVERAGE
3. lambda$distributionValueSupplier$1 : removed conditional - replaced comparison check with true → NO_COVERAGE
4. lambda$distributionValueSupplier$1 : removed conditional - replaced comparison check with false → NO_COVERAGE
					} else if (value > maxValue) {
36 2 1. lambda$distributionValueSupplier$1 : replaced Double return value with 0 for net/bmahe/genetics4j/core/util/DistributionUtils::lambda$distributionValueSupplier$1 → NO_COVERAGE
2. lambda$distributionValueSupplier$1 : removed call to java/lang/Double::valueOf → NO_COVERAGE
						return maxValue;
37
					}
38
39 2 1. lambda$distributionValueSupplier$1 : removed call to java/lang/Double::valueOf → NO_COVERAGE
2. lambda$distributionValueSupplier$1 : replaced Double return value with 0 for net/bmahe/genetics4j/core/util/DistributionUtils::lambda$distributionValueSupplier$1 → NO_COVERAGE
					return value;
40
				};
41
			}
42 5 1. distributionValueSupplier : replaced call to java/lang/String::format with argument → NO_COVERAGE
2. distributionValueSupplier : Substituted 0 with 1 → NO_COVERAGE
3. distributionValueSupplier : removed call to java/lang/IllegalArgumentException::<init> → NO_COVERAGE
4. distributionValueSupplier : removed call to java/lang/String::format → NO_COVERAGE
5. distributionValueSupplier : Substituted 1 with 0 → NO_COVERAGE
			default -> throw new IllegalArgumentException(String.format("Distribution not supported: %s", distribution));
43
		};
44
	}
45
46
	public static Supplier<Float> distributionFloatValueSupplier(final RandomGenerator randomGenerator,
47
			final float minValue, final float maxValue, final Distribution distribution) {
48
		Objects.requireNonNull(randomGenerator);
49
		Objects.requireNonNull(distribution);
50
		Validate.isTrue(minValue <= maxValue);
51
52
		return switch (distribution) {
53
			case UniformDistribution ud -> {
54 1 1. distributionFloatValueSupplier : Replaced float subtraction with addition → KILLED
				final float valueRange = maxValue - minValue;
55
56 5 1. lambda$distributionFloatValueSupplier$2 : Replaced float addition with subtraction → KILLED
2. lambda$distributionFloatValueSupplier$2 : removed call to java/util/random/RandomGenerator::nextFloat → KILLED
3. lambda$distributionFloatValueSupplier$2 : removed call to java/lang/Float::valueOf → KILLED
4. lambda$distributionFloatValueSupplier$2 : replaced Float return value with 0 for net/bmahe/genetics4j/core/util/DistributionUtils::lambda$distributionFloatValueSupplier$2 → KILLED
5. lambda$distributionFloatValueSupplier$2 : Replaced float multiplication with division → KILLED
				yield () -> minValue + randomGenerator.nextFloat() * valueRange;
57
			}
58
			case NormalDistribution normalDistribution -> {
59 1 1. distributionFloatValueSupplier : removed call to net/bmahe/genetics4j/core/spec/statistics/distributions/NormalDistribution::mean → NO_COVERAGE
				final double mean = normalDistribution.mean();
60 1 1. distributionFloatValueSupplier : removed call to net/bmahe/genetics4j/core/spec/statistics/distributions/NormalDistribution::standardDeviation → NO_COVERAGE
				final double standardDeviation = normalDistribution.standardDeviation();
61
62
				yield () -> {
63 3 1. lambda$distributionFloatValueSupplier$3 : removed call to java/util/random/RandomGenerator::nextGaussian → NO_COVERAGE
2. lambda$distributionFloatValueSupplier$3 : Replaced double addition with subtraction → NO_COVERAGE
3. lambda$distributionFloatValueSupplier$3 : Replaced double multiplication with division → NO_COVERAGE
					final float value = (float) (mean + randomGenerator.nextGaussian() * standardDeviation);
64
65 4 1. lambda$distributionFloatValueSupplier$3 : changed conditional boundary → NO_COVERAGE
2. lambda$distributionFloatValueSupplier$3 : removed conditional - replaced comparison check with true → NO_COVERAGE
3. lambda$distributionFloatValueSupplier$3 : negated conditional → NO_COVERAGE
4. lambda$distributionFloatValueSupplier$3 : removed conditional - replaced comparison check with false → NO_COVERAGE
					if (value < minValue) {
66 2 1. lambda$distributionFloatValueSupplier$3 : replaced Float return value with 0 for net/bmahe/genetics4j/core/util/DistributionUtils::lambda$distributionFloatValueSupplier$3 → NO_COVERAGE
2. lambda$distributionFloatValueSupplier$3 : removed call to java/lang/Float::valueOf → NO_COVERAGE
						return minValue;
67 4 1. lambda$distributionFloatValueSupplier$3 : removed conditional - replaced comparison check with false → NO_COVERAGE
2. lambda$distributionFloatValueSupplier$3 : negated conditional → NO_COVERAGE
3. lambda$distributionFloatValueSupplier$3 : removed conditional - replaced comparison check with true → NO_COVERAGE
4. lambda$distributionFloatValueSupplier$3 : changed conditional boundary → NO_COVERAGE
					} else if (value > maxValue) {
68 2 1. lambda$distributionFloatValueSupplier$3 : replaced Float return value with 0 for net/bmahe/genetics4j/core/util/DistributionUtils::lambda$distributionFloatValueSupplier$3 → NO_COVERAGE
2. lambda$distributionFloatValueSupplier$3 : removed call to java/lang/Float::valueOf → NO_COVERAGE
						return maxValue;
69
					}
70
71 2 1. lambda$distributionFloatValueSupplier$3 : removed call to java/lang/Float::valueOf → NO_COVERAGE
2. lambda$distributionFloatValueSupplier$3 : replaced Float return value with 0 for net/bmahe/genetics4j/core/util/DistributionUtils::lambda$distributionFloatValueSupplier$3 → NO_COVERAGE
					return value;
72
				};
73
			}
74 5 1. distributionFloatValueSupplier : Substituted 0 with 1 → NO_COVERAGE
2. distributionFloatValueSupplier : removed call to java/lang/String::format → NO_COVERAGE
3. distributionFloatValueSupplier : Substituted 1 with 0 → NO_COVERAGE
4. distributionFloatValueSupplier : removed call to java/lang/IllegalArgumentException::<init> → NO_COVERAGE
5. distributionFloatValueSupplier : replaced call to java/lang/String::format with argument → NO_COVERAGE
			default -> throw new IllegalArgumentException(String.format("Distribution not supported: %s", distribution));
75
		};
76
	}
77
}

Mutations

23

1.1
Location : distributionValueSupplier
Killed by : net.bmahe.genetics4j.core.mutation.chromosome.creepmutation.DoubleChromosomeCreepMutationHandlerTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.mutation.chromosome.creepmutation.DoubleChromosomeCreepMutationHandlerTest]/[method:mutateValidate()]
Replaced double subtraction with addition → KILLED

24

1.1
Location : lambda$distributionValueSupplier$0
Killed by : net.bmahe.genetics4j.core.mutation.chromosome.creepmutation.DoubleChromosomeCreepMutationHandlerTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.mutation.chromosome.creepmutation.DoubleChromosomeCreepMutationHandlerTest]/[method:mutateValidate()]
removed call to java/util/random/RandomGenerator::nextDouble → KILLED

2.2
Location : lambda$distributionValueSupplier$0
Killed by : net.bmahe.genetics4j.core.mutation.chromosome.creepmutation.DoubleChromosomeCreepMutationHandlerTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.mutation.chromosome.creepmutation.DoubleChromosomeCreepMutationHandlerTest]/[method:mutateValidateBelowMin()]
removed call to java/lang/Double::valueOf → KILLED

3.3
Location : lambda$distributionValueSupplier$0
Killed by : net.bmahe.genetics4j.core.mutation.chromosome.creepmutation.DoubleChromosomeCreepMutationHandlerTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.mutation.chromosome.creepmutation.DoubleChromosomeCreepMutationHandlerTest]/[method:mutateValidate()]
Replaced double multiplication with division → KILLED

4.4
Location : lambda$distributionValueSupplier$0
Killed by : net.bmahe.genetics4j.core.mutation.chromosome.creepmutation.DoubleChromosomeCreepMutationHandlerTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.mutation.chromosome.creepmutation.DoubleChromosomeCreepMutationHandlerTest]/[method:mutateValidateBelowMin()]
replaced Double return value with 0 for net/bmahe/genetics4j/core/util/DistributionUtils::lambda$distributionValueSupplier$0 → KILLED

5.5
Location : lambda$distributionValueSupplier$0
Killed by : net.bmahe.genetics4j.core.mutation.chromosome.creepmutation.DoubleChromosomeCreepMutationHandlerTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.mutation.chromosome.creepmutation.DoubleChromosomeCreepMutationHandlerTest]/[method:mutateValidate()]
Replaced double addition with subtraction → KILLED

27

1.1
Location : distributionValueSupplier
Killed by : none
removed call to net/bmahe/genetics4j/core/spec/statistics/distributions/NormalDistribution::mean → NO_COVERAGE

28

1.1
Location : distributionValueSupplier
Killed by : none
removed call to net/bmahe/genetics4j/core/spec/statistics/distributions/NormalDistribution::standardDeviation → NO_COVERAGE

31

1.1
Location : lambda$distributionValueSupplier$1
Killed by : none
Replaced double multiplication with division → NO_COVERAGE

2.2
Location : lambda$distributionValueSupplier$1
Killed by : none
removed call to java/util/random/RandomGenerator::nextGaussian → NO_COVERAGE

3.3
Location : lambda$distributionValueSupplier$1
Killed by : none
Replaced double addition with subtraction → NO_COVERAGE

33

1.1
Location : lambda$distributionValueSupplier$1
Killed by : none
changed conditional boundary → NO_COVERAGE

2.2
Location : lambda$distributionValueSupplier$1
Killed by : none
removed conditional - replaced comparison check with true → NO_COVERAGE

3.3
Location : lambda$distributionValueSupplier$1
Killed by : none
negated conditional → NO_COVERAGE

4.4
Location : lambda$distributionValueSupplier$1
Killed by : none
removed conditional - replaced comparison check with false → NO_COVERAGE

34

1.1
Location : lambda$distributionValueSupplier$1
Killed by : none
replaced Double return value with 0 for net/bmahe/genetics4j/core/util/DistributionUtils::lambda$distributionValueSupplier$1 → NO_COVERAGE

2.2
Location : lambda$distributionValueSupplier$1
Killed by : none
removed call to java/lang/Double::valueOf → NO_COVERAGE

35

1.1
Location : lambda$distributionValueSupplier$1
Killed by : none
changed conditional boundary → NO_COVERAGE

2.2
Location : lambda$distributionValueSupplier$1
Killed by : none
negated conditional → NO_COVERAGE

3.3
Location : lambda$distributionValueSupplier$1
Killed by : none
removed conditional - replaced comparison check with true → NO_COVERAGE

4.4
Location : lambda$distributionValueSupplier$1
Killed by : none
removed conditional - replaced comparison check with false → NO_COVERAGE

36

1.1
Location : lambda$distributionValueSupplier$1
Killed by : none
replaced Double return value with 0 for net/bmahe/genetics4j/core/util/DistributionUtils::lambda$distributionValueSupplier$1 → NO_COVERAGE

2.2
Location : lambda$distributionValueSupplier$1
Killed by : none
removed call to java/lang/Double::valueOf → NO_COVERAGE

39

1.1
Location : lambda$distributionValueSupplier$1
Killed by : none
removed call to java/lang/Double::valueOf → NO_COVERAGE

2.2
Location : lambda$distributionValueSupplier$1
Killed by : none
replaced Double return value with 0 for net/bmahe/genetics4j/core/util/DistributionUtils::lambda$distributionValueSupplier$1 → NO_COVERAGE

42

1.1
Location : distributionValueSupplier
Killed by : none
replaced call to java/lang/String::format with argument → NO_COVERAGE

2.2
Location : distributionValueSupplier
Killed by : none
Substituted 0 with 1 → NO_COVERAGE

3.3
Location : distributionValueSupplier
Killed by : none
removed call to java/lang/IllegalArgumentException::<init> → NO_COVERAGE

4.4
Location : distributionValueSupplier
Killed by : none
removed call to java/lang/String::format → NO_COVERAGE

5.5
Location : distributionValueSupplier
Killed by : none
Substituted 1 with 0 → NO_COVERAGE

54

1.1
Location : distributionFloatValueSupplier
Killed by : net.bmahe.genetics4j.core.mutation.chromosome.creepmutation.FloatChromosomeCreepMutationHandlerTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.mutation.chromosome.creepmutation.FloatChromosomeCreepMutationHandlerTest]/[method:mutateValidateAboveMax()]
Replaced float subtraction with addition → KILLED

56

1.1
Location : lambda$distributionFloatValueSupplier$2
Killed by : net.bmahe.genetics4j.core.mutation.chromosome.creepmutation.FloatChromosomeCreepMutationHandlerTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.mutation.chromosome.creepmutation.FloatChromosomeCreepMutationHandlerTest]/[method:mutateValidateAboveMax()]
Replaced float addition with subtraction → KILLED

2.2
Location : lambda$distributionFloatValueSupplier$2
Killed by : net.bmahe.genetics4j.core.mutation.chromosome.creepmutation.FloatChromosomeCreepMutationHandlerTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.mutation.chromosome.creepmutation.FloatChromosomeCreepMutationHandlerTest]/[method:mutateValidateAboveMax()]
removed call to java/util/random/RandomGenerator::nextFloat → KILLED

3.3
Location : lambda$distributionFloatValueSupplier$2
Killed by : net.bmahe.genetics4j.core.mutation.chromosome.creepmutation.FloatChromosomeCreepMutationHandlerTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.mutation.chromosome.creepmutation.FloatChromosomeCreepMutationHandlerTest]/[method:mutateValidateBelowMin()]
removed call to java/lang/Float::valueOf → KILLED

4.4
Location : lambda$distributionFloatValueSupplier$2
Killed by : net.bmahe.genetics4j.core.mutation.chromosome.creepmutation.FloatChromosomeCreepMutationHandlerTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.mutation.chromosome.creepmutation.FloatChromosomeCreepMutationHandlerTest]/[method:mutateValidateBelowMin()]
replaced Float return value with 0 for net/bmahe/genetics4j/core/util/DistributionUtils::lambda$distributionFloatValueSupplier$2 → KILLED

5.5
Location : lambda$distributionFloatValueSupplier$2
Killed by : net.bmahe.genetics4j.core.mutation.chromosome.creepmutation.FloatChromosomeCreepMutationHandlerTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.mutation.chromosome.creepmutation.FloatChromosomeCreepMutationHandlerTest]/[method:mutateValidateAboveMax()]
Replaced float multiplication with division → KILLED

59

1.1
Location : distributionFloatValueSupplier
Killed by : none
removed call to net/bmahe/genetics4j/core/spec/statistics/distributions/NormalDistribution::mean → NO_COVERAGE

60

1.1
Location : distributionFloatValueSupplier
Killed by : none
removed call to net/bmahe/genetics4j/core/spec/statistics/distributions/NormalDistribution::standardDeviation → NO_COVERAGE

63

1.1
Location : lambda$distributionFloatValueSupplier$3
Killed by : none
removed call to java/util/random/RandomGenerator::nextGaussian → NO_COVERAGE

2.2
Location : lambda$distributionFloatValueSupplier$3
Killed by : none
Replaced double addition with subtraction → NO_COVERAGE

3.3
Location : lambda$distributionFloatValueSupplier$3
Killed by : none
Replaced double multiplication with division → NO_COVERAGE

65

1.1
Location : lambda$distributionFloatValueSupplier$3
Killed by : none
changed conditional boundary → NO_COVERAGE

2.2
Location : lambda$distributionFloatValueSupplier$3
Killed by : none
removed conditional - replaced comparison check with true → NO_COVERAGE

3.3
Location : lambda$distributionFloatValueSupplier$3
Killed by : none
negated conditional → NO_COVERAGE

4.4
Location : lambda$distributionFloatValueSupplier$3
Killed by : none
removed conditional - replaced comparison check with false → NO_COVERAGE

66

1.1
Location : lambda$distributionFloatValueSupplier$3
Killed by : none
replaced Float return value with 0 for net/bmahe/genetics4j/core/util/DistributionUtils::lambda$distributionFloatValueSupplier$3 → NO_COVERAGE

2.2
Location : lambda$distributionFloatValueSupplier$3
Killed by : none
removed call to java/lang/Float::valueOf → NO_COVERAGE

67

1.1
Location : lambda$distributionFloatValueSupplier$3
Killed by : none
removed conditional - replaced comparison check with false → NO_COVERAGE

2.2
Location : lambda$distributionFloatValueSupplier$3
Killed by : none
negated conditional → NO_COVERAGE

3.3
Location : lambda$distributionFloatValueSupplier$3
Killed by : none
removed conditional - replaced comparison check with true → NO_COVERAGE

4.4
Location : lambda$distributionFloatValueSupplier$3
Killed by : none
changed conditional boundary → NO_COVERAGE

68

1.1
Location : lambda$distributionFloatValueSupplier$3
Killed by : none
replaced Float return value with 0 for net/bmahe/genetics4j/core/util/DistributionUtils::lambda$distributionFloatValueSupplier$3 → NO_COVERAGE

2.2
Location : lambda$distributionFloatValueSupplier$3
Killed by : none
removed call to java/lang/Float::valueOf → NO_COVERAGE

71

1.1
Location : lambda$distributionFloatValueSupplier$3
Killed by : none
removed call to java/lang/Float::valueOf → NO_COVERAGE

2.2
Location : lambda$distributionFloatValueSupplier$3
Killed by : none
replaced Float return value with 0 for net/bmahe/genetics4j/core/util/DistributionUtils::lambda$distributionFloatValueSupplier$3 → NO_COVERAGE

74

1.1
Location : distributionFloatValueSupplier
Killed by : none
Substituted 0 with 1 → NO_COVERAGE

2.2
Location : distributionFloatValueSupplier
Killed by : none
removed call to java/lang/String::format → NO_COVERAGE

3.3
Location : distributionFloatValueSupplier
Killed by : none
Substituted 1 with 0 → NO_COVERAGE

4.4
Location : distributionFloatValueSupplier
Killed by : none
removed call to java/lang/IllegalArgumentException::<init> → NO_COVERAGE

5.5
Location : distributionFloatValueSupplier
Killed by : none
replaced call to java/lang/String::format with argument → NO_COVERAGE

Active mutators

Tests examined


Report generated by PIT 1.19.6