Proposition.java

1
package com.github.valid8j.metamor;
2
3
import com.github.valid8j.pcond.core.printable.PrintableFunction;
4
5
import java.util.function.Function;
6
import java.util.function.IntFunction;
7
import java.util.function.Predicate;
8
import java.util.stream.IntStream;
9
10
import static java.util.Collections.emptyList;
11
import static java.util.Objects.requireNonNull;
12
13
public interface Proposition {
14
  boolean evaluate();
15
16
  int arity();
17
18
  class Impl<X> implements Proposition {
19
    final         Function<Object[], String> formatter;
20
    private final Predicate<Dataset<X>>      predicate;
21
    private final Dataset<X>                 dataset;
22
23
    public Impl(Predicate<Dataset<X>> predicate, Function<Object[], String> formatter, Dataset<X> dataset) {
24
      this.predicate = predicate;
25
      this.formatter = requireNonNull(formatter);
26
      this.dataset = requireNonNull(dataset);
27
    }
28
29
    @Override
30
    public boolean evaluate() {
31 2 1. evaluate : replaced boolean return with false for com/github/valid8j/metamor/Proposition$Impl::evaluate → KILLED
2. evaluate : replaced boolean return with true for com/github/valid8j/metamor/Proposition$Impl::evaluate → KILLED
      return this.predicate.test(this.dataset);
32
    }
33
34
    @Override
35
    public int arity() {
36 1 1. arity : replaced int return with 0 for com/github/valid8j/metamor/Proposition$Impl::arity → SURVIVED
      return this.dataset.size();
37
    }
38
39
    @Override
40
    public String toString() {
41 1 1. toString : replaced return value with "" for com/github/valid8j/metamor/Proposition$Impl::toString → SURVIVED
      return this.formatter.apply(IntStream.range(0, this.arity())
42
          .mapToObj(dataset::get)
43
          .toArray());
44
    }
45
  }
46
47
  interface Factory<X> extends Function<Dataset<X>, Proposition> {
48
49
    static <X> Factory<X> create(Predicate<Dataset<X>> predicate, Function<Object[], String> formatter, IntFunction<String> placeHolderFormatter, int arity) {
50 1 1. create : replaced return value with null for com/github/valid8j/metamor/Proposition$Factory::create → KILLED
      return new Impl<>(predicate, formatter, placeHolderFormatter, arity);
51
    }
52
53
    class Impl<X> extends PrintableFunction<Dataset<X>, Proposition> implements Factory<X> {
54
55
      protected Impl(Predicate<Dataset<X>> predicate, Function<Object[], String> formatter, IntFunction<String> placeHolderFormatter, int arity) {
56
        super(
57
            new Object(),
58
            emptyList(),
59 1 1. lambda$new$0 : replaced return value with "" for com/github/valid8j/metamor/Proposition$Factory$Impl::lambda$new$0 → SURVIVED
            () -> formatter.apply(IntStream.range(0, arity).mapToObj(placeHolderFormatter).toArray()),
60 1 1. lambda$new$1 : replaced return value with null for com/github/valid8j/metamor/Proposition$Factory$Impl::lambda$new$1 → KILLED
            ds -> new Proposition.Impl<>(predicate, formatter, ds));
61
      }
62
63
      @Override
64
      public Proposition apply(Dataset<X> ds) {
65 1 1. apply : replaced return value with null for com/github/valid8j/metamor/Proposition$Factory$Impl::apply → KILLED
        return super.apply(ds);
66
      }
67
    }
68
  }
69
}

Mutations

31

1.1
Location : evaluate
Killed by : com.github.valid8j.examples.test.ExamplesTest.testMetarmorExamplePassing(com.github.valid8j.examples.test.ExamplesTest)
replaced boolean return with false for com/github/valid8j/metamor/Proposition$Impl::evaluate → KILLED

2.2
Location : evaluate
Killed by : com.github.valid8j.examples.test.ExamplesTest.testMetarmorExampleFailing(com.github.valid8j.examples.test.ExamplesTest)
replaced boolean return with true for com/github/valid8j/metamor/Proposition$Impl::evaluate → KILLED

36

1.1
Location : arity
Killed by : none
replaced int return with 0 for com/github/valid8j/metamor/Proposition$Impl::arity → SURVIVED

41

1.1
Location : toString
Killed by : none
replaced return value with "" for com/github/valid8j/metamor/Proposition$Impl::toString → SURVIVED

50

1.1
Location : create
Killed by : com.github.valid8j.examples.test.ExamplesTest.testMetarmorExamplePassing(com.github.valid8j.examples.test.ExamplesTest)
replaced return value with null for com/github/valid8j/metamor/Proposition$Factory::create → KILLED

59

1.1
Location : lambda$new$0
Killed by : none
replaced return value with "" for com/github/valid8j/metamor/Proposition$Factory$Impl::lambda$new$0 → SURVIVED

60

1.1
Location : lambda$new$1
Killed by : com.github.valid8j.examples.test.ExamplesTest.testMetarmorExamplePassing(com.github.valid8j.examples.test.ExamplesTest)
replaced return value with null for com/github/valid8j/metamor/Proposition$Factory$Impl::lambda$new$1 → KILLED

65

1.1
Location : apply
Killed by : com.github.valid8j.examples.test.ExamplesTest.testMetarmorExamplePassing(com.github.valid8j.examples.test.ExamplesTest)
replaced return value with null for com/github/valid8j/metamor/Proposition$Factory$Impl::apply → KILLED

Active mutators

Tests examined


Report generated by PIT 1.7.3