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 2.2 |
|
30 |
1.1 |
|
35 |
1.1 |
|
40 |
1.1 |
|
45 |
1.1 |
|
51 |
1.1 |
|
55 |
1.1 |
|
62 |
1.1 |
|
70 |
1.1 2.2 |
|
77 |
1.1 |
|
82 |
1.1 |