PrintablePredicate.java

1
package com.github.dakusui.pcond.core.printable;
2
3
import com.github.dakusui.pcond.core.Evaluable;
4
import com.github.dakusui.pcond.core.identifieable.Identifiable;
5
import com.github.dakusui.pcond.forms.Predicates;
6
7
import java.util.List;
8
import java.util.Objects;
9
import java.util.function.Predicate;
10
import java.util.function.Supplier;
11
12
public abstract class PrintablePredicate<T> extends Identifiable.Base implements Predicate<T>, Evaluable<T>, Cloneable {
13
  protected final Predicate<? super T> predicate;
14
  final           Supplier<String>     formatter;
15
  boolean squashable = false;
16
17
  protected PrintablePredicate(Object creator, List<Object> args, Supplier<String> formatter, Predicate<? super T> predicate) {
18
    super(creator, args);
19
    this.formatter = Objects.requireNonNull(formatter);
20
    this.predicate = requireNonPrintablePredicate(unwrap(Objects.requireNonNull(predicate)));
21
  }
22
23
  @Override
24
  public boolean test(T t) {
25 2 1. test : replaced boolean return with false for com/github/dakusui/pcond/core/printable/PrintablePredicate::test → KILLED
2. test : replaced boolean return with true for com/github/dakusui/pcond/core/printable/PrintablePredicate::test → KILLED
    return this.predicate.test(t);
26
  }
27
28
  @Override
29
  public String toString() {
30 1 1. toString : replaced return value with "" for com/github/dakusui/pcond/core/printable/PrintablePredicate::toString → KILLED
    return formatter.get();
31
  }
32
33
  @Override
34
  public Predicate<T> and(Predicate<? super T> other) {
35 1 1. and : replaced return value with null for com/github/dakusui/pcond/core/printable/PrintablePredicate::and → KILLED
    return Predicates.and(this, other);
36
  }
37
38
  @Override
39
  public Predicate<T> or(Predicate<? super T> other) {
40 1 1. or : replaced return value with null for com/github/dakusui/pcond/core/printable/PrintablePredicate::or → KILLED
    return Predicates.or(this, other);
41
  }
42
43
  @Override
44
  public Predicate<T> negate() {
45 1 1. negate : replaced return value with null for com/github/dakusui/pcond/core/printable/PrintablePredicate::negate → KILLED
    return PrintablePredicateFactory.not(this);
46
  }
47
48
  @SuppressWarnings("unchecked")
49
  static <T> Predicate<? super T> unwrap(Predicate<? super T> predicate) {
50
    Predicate<? super T> ret = predicate;
51 1 1. unwrap : negated conditional → KILLED
    if (predicate instanceof PrintablePredicate) {
52
      ret = ((PrintablePredicate<? super T>) predicate).predicate;
53
      assert !(ret instanceof PrintablePredicate);
54
    }
55 1 1. unwrap : replaced return value with null for com/github/dakusui/pcond/core/printable/PrintablePredicate::unwrap → KILLED
    return ret;
56
  }
57
58
  @SuppressWarnings({ "CloneDoesntDeclareCloneNotSupportedException", "unchecked" })
59
  @Override
60
  protected PrintablePredicate<T> clone() {
61
    try {
62 1 1. clone : replaced return value with null for com/github/dakusui/pcond/core/printable/PrintablePredicate::clone → KILLED
      return (PrintablePredicate<T>) super.clone();
63
    } catch (CloneNotSupportedException e) {
64
      throw new AssertionError();
65
    }
66
  }
67
68
69
  public boolean isSquashable() {
70 2 1. isSquashable : replaced boolean return with false for com/github/dakusui/pcond/core/printable/PrintablePredicate::isSquashable → SURVIVED
2. isSquashable : replaced boolean return with true for com/github/dakusui/pcond/core/printable/PrintablePredicate::isSquashable → SURVIVED
    return this.squashable;
71
  }
72
73
  @Override
74
  public PrintablePredicate<T> makeTrivial() {
75
    PrintablePredicate<T> ret = this.clone();
76
    ret.squashable = true;
77 1 1. makeTrivial : replaced return value with null for com/github/dakusui/pcond/core/printable/PrintablePredicate::makeTrivial → KILLED
    return ret;
78
  }
79
80
  private static <T> Predicate<T> requireNonPrintablePredicate(Predicate<T> predicate) {
81
    assert !(predicate instanceof PrintablePredicate);
82 1 1. requireNonPrintablePredicate : replaced return value with null for com/github/dakusui/pcond/core/printable/PrintablePredicate::requireNonPrintablePredicate → KILLED
    return predicate;
83
  }
84
}

Mutations

25

1.1
Location : test
Killed by : com.github.dakusui.ut.thincrest.ut.PredicatesTest$IsNotNullTest
replaced boolean return with false for com/github/dakusui/pcond/core/printable/PrintablePredicate::test → KILLED

2.2
Location : test
Killed by : com.github.dakusui.ut.thincrest.ut.PredicatesTest$IsNotNullTest
replaced boolean return with true for com/github/dakusui/pcond/core/printable/PrintablePredicate::test → KILLED

30

1.1
Location : toString
Killed by : com.github.dakusui.pcond.ut.TransformingPredicateTest.givenNullForName$whenToString$thenLooksGood(com.github.dakusui.pcond.ut.TransformingPredicateTest)
replaced return value with "" for com/github/dakusui/pcond/core/printable/PrintablePredicate::toString → KILLED

35

1.1
Location : and
Killed by : com.github.dakusui.pcond.ut.PrintablesTest$PredicateTest.givenPredicateReturnedByAnd$whenTest$thenWorksRight(com.github.dakusui.pcond.ut.PrintablesTest$PredicateTest)
replaced return value with null for com/github/dakusui/pcond/core/printable/PrintablePredicate::and → KILLED

40

1.1
Location : or
Killed by : com.github.dakusui.pcond.ut.PrintablesTest$PredicateTest.givenPredicateReturnedByOr$whenTest$thenWorksRight(com.github.dakusui.pcond.ut.PrintablesTest$PredicateTest)
replaced return value with null for com/github/dakusui/pcond/core/printable/PrintablePredicate::or → KILLED

45

1.1
Location : negate
Killed by : com.github.dakusui.pcond.ut.PrintablesTest$PredicateTest.givenPredicateReturnedByNegate$whenTest$thenWorksRight(com.github.dakusui.pcond.ut.PrintablesTest$PredicateTest)
replaced return value with null for com/github/dakusui/pcond/core/printable/PrintablePredicate::negate → KILLED

51

1.1
Location : unwrap
Killed by : com.github.dakusui.pcond.ut.InternalUtilsTest$ToEvaluableIfNecessaryTest.givenNonEvaluable$whenToEvaluableIfNecessary$thenConverted(com.github.dakusui.pcond.ut.InternalUtilsTest$ToEvaluableIfNecessaryTest)
negated conditional → KILLED

55

1.1
Location : unwrap
Killed by : com.github.dakusui.ut.thincrest.ut.PredicatesTest$ContainsStringTest.whenMet$thenTrue(com.github.dakusui.ut.thincrest.ut.PredicatesTest$ContainsStringTest)
replaced return value with null for com/github/dakusui/pcond/core/printable/PrintablePredicate::unwrap → KILLED

62

1.1
Location : clone
Killed by : com.github.dakusui.ut.valid8j.ut.styles.FluentStyleDbCTest$ForEnsuresTest.test_preconditions(com.github.dakusui.ut.valid8j.ut.styles.FluentStyleDbCTest$ForEnsuresTest)
replaced return value with null for com/github/dakusui/pcond/core/printable/PrintablePredicate::clone → KILLED

70

1.1
Location : isSquashable
Killed by : none
replaced boolean return with false for com/github/dakusui/pcond/core/printable/PrintablePredicate::isSquashable → SURVIVED

2.2
Location : isSquashable
Killed by : none
replaced boolean return with true for com/github/dakusui/pcond/core/printable/PrintablePredicate::isSquashable → SURVIVED

77

1.1
Location : makeTrivial
Killed by : com.github.dakusui.ut.valid8j.ut.styles.FluentStyleDbCTest$ForEnsuresTest.test_preconditions(com.github.dakusui.ut.valid8j.ut.styles.FluentStyleDbCTest$ForEnsuresTest)
replaced return value with null for com/github/dakusui/pcond/core/printable/PrintablePredicate::makeTrivial → KILLED

82

1.1
Location : requireNonPrintablePredicate
Killed by : com.github.dakusui.ut.thincrest.ut.PredicatesTest$ContainsStringTest.whenMet$thenTrue(com.github.dakusui.ut.thincrest.ut.PredicatesTest$ContainsStringTest)
replaced return value with null for com/github/dakusui/pcond/core/printable/PrintablePredicate::requireNonPrintablePredicate → KILLED

Active mutators

Tests examined


Report generated by PIT 1.7.3