AbstractObjectTransformer.java

1
package com.github.valid8j.pcond.core.fluent;
2
3
import com.github.valid8j.pcond.core.fluent.builtins.*;
4
import com.github.valid8j.pcond.core.refl.MethodQuery;
5
import com.github.valid8j.pcond.forms.Functions;
6
7
import java.util.List;
8
import java.util.Objects;
9
import java.util.function.Function;
10
import java.util.stream.Stream;
11
12
import static java.util.Objects.requireNonNull;
13
14
/**
15
 * @param <TX> The type of the extending class itself.
16
 * @param <V>  A type of checker produced by this transformer.
17
 * @param <T>  The type of the target value of the instance of this interface.
18
 * @param <R>  The type of the target value of the checker instance `V`
19
 */
20
public interface AbstractObjectTransformer<
21
    TX extends AbstractObjectTransformer<TX, V, T, R>,
22
    V extends AbstractObjectChecker<V, T, R>,
23
    T,
24
    R
25
    > extends
26
    Transformer<TX, V, T, R> {
27
  
28
  /**
29
   * Corresponds to {@code toString()} method.
30
   *
31
   * @return this object the method appended.
32
   */
33
  @SuppressWarnings("unchecked")
34
  default StringTransformer<String> stringify() {
35 1 1. stringify : replaced return value with null for com/github/valid8j/pcond/core/fluent/AbstractObjectTransformer::stringify → KILLED
    return (StringTransformer<String>) this.toString(Functions.stringify());
36
  }
37
  
38
  default <E> ObjectTransformer<T, E> function(Function<R, E> function) {
39 1 1. function : replaced return value with null for com/github/valid8j/pcond/core/fluent/AbstractObjectTransformer::function → KILLED
    return this.toObject(Objects.requireNonNull(function));
40
  }
41
  
42
  default <E> ObjectTransformer<T, E> invoke(String methodName, Object... args) {
43 1 1. invoke : replaced return value with null for com/github/valid8j/pcond/core/fluent/AbstractObjectTransformer::invoke → KILLED
    return this.function(Functions.call(MethodQuery.instanceMethod(Functions.parameter(), methodName, args)));
44
  }
45
  
46
  default <E> ObjectTransformer<T, E> invokeStatic(Class<?> klass, String methodName, Object... args) {
47 1 1. invokeStatic : replaced return value with null for com/github/valid8j/pcond/core/fluent/AbstractObjectTransformer::invokeStatic → KILLED
    return this.function(Functions.call(MethodQuery.classMethod(klass, methodName, args)));
48
  }
49
  
50
  /**
51
   * Applies `f`, which is expected to throw an exception object of class `exceptionClass`, to the target value of this transformer object.
52
   * In case no exception is thrown, or a different type of exception is thrown, an exception will be thrown.
53
   * But its type is not specified.
54
   *
55
   * @param exceptionClass A class of exception object of the exception to be thrown by `f`.
56
   * @param f              A function that is expected to throw an exception object of `exceptionClass`.
57
   * @param <O>            An exception class to be thrown by `f`.
58
   * @return A {@link ThrowableTransformer} instance constructed for the thrown exception by `f`.
59
   * @see Functions#expectingException(Class, Function)
60
   */
61
  default <O extends Throwable> ThrowableTransformer<T, O> expectException(Class<O> exceptionClass, Function<? super R, ?> f) {
62
    requireNonNull(exceptionClass);
63 1 1. expectException : replaced return value with null for com/github/valid8j/pcond/core/fluent/AbstractObjectTransformer::expectException → KILLED
    return this.toThrowable(Functions.expectingException(exceptionClass, f));
64
  }
65
  
66
  /**
67
   * Mainly used for internal purposes
68
   *
69
   * @param <E> The type of the target object to be handled by this object transformer.
70
   * @return Another transformer object.
71
   */
72
  @SuppressWarnings("unchecked")
73
  default <E> ObjectTransformer<T, E> asObject() {
74 1 1. asObject : replaced return value with null for com/github/valid8j/pcond/core/fluent/AbstractObjectTransformer::asObject → KILLED
    return (ObjectTransformer<T, E>) this.toObject(Functions.identity());
75
  }
76
  
77
  /**
78
   * Applies a given `function` to the currently targeted value and returns a new `ObjectTransformer` whose target value is the returned value from the `function`.
79
   *
80
   * @param function A function to be applied to the target value.
81
   * @param <E>      The type of the returned value of the `function`.
82
   * @return A new {@link ObjectTransformer} which targets the result of the `function`.
83
   */
84
  default <E> ObjectTransformer<T, E> toObject(Function<R, E> function) {
85 1 1. toObject : replaced return value with null for com/github/valid8j/pcond/core/fluent/AbstractObjectTransformer::toObject → KILLED
    return this.transformValueWith(function, ObjectTransformer.Impl::new);
86
  }
87
  
88
  /**
89
   * A function to create a new transformer connected to this transformer.
90
   *
91
   * @param function A function that maps the target value to `Boolean`.
92
   * @return A desired transformer.
93
   */
94
  default BooleanTransformer<T> toBoolean(Function<? super R, Boolean> function) {
95 1 1. toBoolean : replaced return value with null for com/github/valid8j/pcond/core/fluent/AbstractObjectTransformer::toBoolean → KILLED
    return this.transformValueWith(function, BooleanTransformer.Impl::new);
96
  }
97
  
98
  default IntegerTransformer<T> toInteger(Function<? super R, Integer> function) {
99 1 1. toInteger : replaced return value with null for com/github/valid8j/pcond/core/fluent/AbstractObjectTransformer::toInteger → KILLED
    return this.transformValueWith(function, IntegerTransformer.Impl::new);
100
  }
101
  
102
  default LongTransformer<T> toLong(Function<? super R, Long> function) {
103 1 1. toLong : replaced return value with null for com/github/valid8j/pcond/core/fluent/AbstractObjectTransformer::toLong → KILLED
    return this.transformValueWith(function, LongTransformer.Impl::new);
104
  }
105
  
106
  default ShortTransformer<T> toShort(Function<? super R, Short> function) {
107 1 1. toShort : replaced return value with null for com/github/valid8j/pcond/core/fluent/AbstractObjectTransformer::toShort → KILLED
    return this.transformValueWith(function, ShortTransformer.Impl::new);
108
  }
109
  
110
  default DoubleTransformer<T> toDouble(Function<? super R, Double> function) {
111 1 1. toDouble : replaced return value with null for com/github/valid8j/pcond/core/fluent/AbstractObjectTransformer::toDouble → KILLED
    return this.transformValueWith(function, DoubleTransformer.Impl::new);
112
  }
113
  
114
  default FloatTransformer<T> toFloat(Function<? super R, Float> function) {
115 1 1. toFloat : replaced return value with null for com/github/valid8j/pcond/core/fluent/AbstractObjectTransformer::toFloat → KILLED
    return this.transformValueWith(function, FloatTransformer.Impl::new);
116
  }
117
  
118
  default StringTransformer<T> toString(Function<? super R, String> function) {
119 1 1. toString : replaced return value with null for com/github/valid8j/pcond/core/fluent/AbstractObjectTransformer::toString → KILLED
    return this.transformValueWith(function, StringTransformer.Impl::new);
120
  }
121
  
122
  default <E> ListTransformer<T, E> toList(Function<? super R, List<E>> function) {
123 1 1. toList : replaced return value with null for com/github/valid8j/pcond/core/fluent/AbstractObjectTransformer::toList → KILLED
    return this.transformValueWith(function, ListTransformer.Impl::new);
124
  }
125
  
126
  default <E> StreamTransformer<T, E> toStream(Function<? super R, Stream<E>> function) {
127 1 1. toStream : replaced return value with null for com/github/valid8j/pcond/core/fluent/AbstractObjectTransformer::toStream → KILLED
    return this.transformValueWith(function, StreamTransformer.Impl::new);
128
  }
129
  
130
  default <E extends Throwable> ThrowableTransformer<T, E> toThrowable(Function<? super R, E> function) {
131 1 1. toThrowable : replaced return value with null for com/github/valid8j/pcond/core/fluent/AbstractObjectTransformer::toThrowable → KILLED
    return this.transformValueWith(function, ThrowableTransformer.Impl::new);
132
    
133
  }
134
}

Mutations

35

1.1
Location : stringify
Killed by : com.github.valid8j.ut.styles.fluent.GeneralFluentTest.exerciseTestCase[52: Given:<"A:B">:When::Then:greaterThanOrEqualTo(1), numbersOfExpectAndActualSummaries=>areEqual, numbersOfExpectAndActualSummariesWithDetails=>areEqual, numberOfExpectDetails=>greaterThanOrEqualTo(1), numbersOfExpectAndActualDetails=>areEqual]>](com.github.valid8j.ut.styles.fluent.GeneralFluentTest)
replaced return value with null for com/github/valid8j/pcond/core/fluent/AbstractObjectTransformer::stringify → KILLED

39

1.1
Location : function
Killed by : com.github.valid8j.ut.styles.fluent.GeneralFluentTest.exerciseTestCase[52: Given:<"A:B">:When::Then:greaterThanOrEqualTo(1), numbersOfExpectAndActualSummaries=>areEqual, numbersOfExpectAndActualSummariesWithDetails=>areEqual, numberOfExpectDetails=>greaterThanOrEqualTo(1), numbersOfExpectAndActualDetails=>areEqual]>](com.github.valid8j.ut.styles.fluent.GeneralFluentTest)
replaced return value with null for com/github/valid8j/pcond/core/fluent/AbstractObjectTransformer::function → KILLED

43

1.1
Location : invoke
Killed by : com.github.valid8j.ut.styles.fluent.GeneralFluentTest.exerciseTestCase[52: Given:<"A:B">:When::Then:greaterThanOrEqualTo(1), numbersOfExpectAndActualSummaries=>areEqual, numbersOfExpectAndActualSummariesWithDetails=>areEqual, numberOfExpectDetails=>greaterThanOrEqualTo(1), numbersOfExpectAndActualDetails=>areEqual]>](com.github.valid8j.ut.styles.fluent.GeneralFluentTest)
replaced return value with null for com/github/valid8j/pcond/core/fluent/AbstractObjectTransformer::invoke → KILLED

47

1.1
Location : invokeStatic
Killed by : com.github.valid8j.ut.styles.fluent.GeneralFluentTest.exerciseTestCase[52: Given:<"A:B">:When::Then:greaterThanOrEqualTo(1), numbersOfExpectAndActualSummaries=>areEqual, numbersOfExpectAndActualSummariesWithDetails=>areEqual, numberOfExpectDetails=>greaterThanOrEqualTo(1), numbersOfExpectAndActualDetails=>areEqual]>](com.github.valid8j.ut.styles.fluent.GeneralFluentTest)
replaced return value with null for com/github/valid8j/pcond/core/fluent/AbstractObjectTransformer::invokeStatic → KILLED

63

1.1
Location : expectException
Killed by : com.github.valid8j.ut.styles.FluentStyleTestAssertionTest$ForTestAssertionsTest.expectedExceptionThrown_testPassing(com.github.valid8j.ut.styles.FluentStyleTestAssertionTest$ForTestAssertionsTest)
replaced return value with null for com/github/valid8j/pcond/core/fluent/AbstractObjectTransformer::expectException → KILLED

74

1.1
Location : asObject
Killed by : com.github.valid8j.ut.styles.fluent.GeneralFluentTest.exerciseTestCase[52: Given:<"A:B">:When::Then:greaterThanOrEqualTo(1), numbersOfExpectAndActualSummaries=>areEqual, numbersOfExpectAndActualSummariesWithDetails=>areEqual, numberOfExpectDetails=>greaterThanOrEqualTo(1), numbersOfExpectAndActualDetails=>areEqual]>](com.github.valid8j.ut.styles.fluent.GeneralFluentTest)
replaced return value with null for com/github/valid8j/pcond/core/fluent/AbstractObjectTransformer::asObject → KILLED

85

1.1
Location : toObject
Killed by : com.github.valid8j.ut.styles.MoreFluentListTest.test_elementAt(com.github.valid8j.ut.styles.MoreFluentListTest)
replaced return value with null for com/github/valid8j/pcond/core/fluent/AbstractObjectTransformer::toObject → KILLED

95

1.1
Location : toBoolean
Killed by : com.github.valid8j.ut.styles.MoreFluentListTest.test_isEmpty(com.github.valid8j.ut.styles.MoreFluentListTest)
replaced return value with null for com/github/valid8j/pcond/core/fluent/AbstractObjectTransformer::toBoolean → KILLED

99

1.1
Location : toInteger
Killed by : com.github.valid8j.ut.styles.MoreFluentListTest.test_size(com.github.valid8j.ut.styles.MoreFluentListTest)
replaced return value with null for com/github/valid8j/pcond/core/fluent/AbstractObjectTransformer::toInteger → KILLED

103

1.1
Location : toLong
Killed by : com.github.valid8j.ut.styles.fluent.GeneralFluentTest.exerciseTestCase[52: Given:<"A:B">:When::Then:greaterThanOrEqualTo(1), numbersOfExpectAndActualSummaries=>areEqual, numbersOfExpectAndActualSummariesWithDetails=>areEqual, numberOfExpectDetails=>greaterThanOrEqualTo(1), numbersOfExpectAndActualDetails=>areEqual]>](com.github.valid8j.ut.styles.fluent.GeneralFluentTest)
replaced return value with null for com/github/valid8j/pcond/core/fluent/AbstractObjectTransformer::toLong → KILLED

107

1.1
Location : toShort
Killed by : com.github.valid8j.ut.styles.fluent.GeneralFluentTest.exerciseTestCase[52: Given:<"A:B">:When::Then:greaterThanOrEqualTo(1), numbersOfExpectAndActualSummaries=>areEqual, numbersOfExpectAndActualSummariesWithDetails=>areEqual, numberOfExpectDetails=>greaterThanOrEqualTo(1), numbersOfExpectAndActualDetails=>areEqual]>](com.github.valid8j.ut.styles.fluent.GeneralFluentTest)
replaced return value with null for com/github/valid8j/pcond/core/fluent/AbstractObjectTransformer::toShort → KILLED

111

1.1
Location : toDouble
Killed by : com.github.valid8j.ut.styles.fluent.GeneralFluentTest.exerciseTestCase[52: Given:<"A:B">:When::Then:greaterThanOrEqualTo(1), numbersOfExpectAndActualSummaries=>areEqual, numbersOfExpectAndActualSummariesWithDetails=>areEqual, numberOfExpectDetails=>greaterThanOrEqualTo(1), numbersOfExpectAndActualDetails=>areEqual]>](com.github.valid8j.ut.styles.fluent.GeneralFluentTest)
replaced return value with null for com/github/valid8j/pcond/core/fluent/AbstractObjectTransformer::toDouble → KILLED

115

1.1
Location : toFloat
Killed by : com.github.valid8j.ut.styles.fluent.GeneralFluentTest.exerciseTestCase[52: Given:<"A:B">:When::Then:greaterThanOrEqualTo(1), numbersOfExpectAndActualSummaries=>areEqual, numbersOfExpectAndActualSummariesWithDetails=>areEqual, numberOfExpectDetails=>greaterThanOrEqualTo(1), numbersOfExpectAndActualDetails=>areEqual]>](com.github.valid8j.ut.styles.fluent.GeneralFluentTest)
replaced return value with null for com/github/valid8j/pcond/core/fluent/AbstractObjectTransformer::toFloat → KILLED

119

1.1
Location : toString
Killed by : com.github.valid8j.entrypoints.ValidationFluentsTest$Singular.test1(com.github.valid8j.entrypoints.ValidationFluentsTest$Singular)
replaced return value with null for com/github/valid8j/pcond/core/fluent/AbstractObjectTransformer::toString → KILLED

123

1.1
Location : toList
Killed by : com.github.valid8j.ut.styles.FluentStyleTestAssertionTest$ForTestAssertionsTest.stream_assertThatTest_passed(com.github.valid8j.ut.styles.FluentStyleTestAssertionTest$ForTestAssertionsTest)
replaced return value with null for com/github/valid8j/pcond/core/fluent/AbstractObjectTransformer::toList → KILLED

127

1.1
Location : toStream
Killed by : com.github.valid8j.ut.styles.MoreFluentListTest.test_stream(com.github.valid8j.ut.styles.MoreFluentListTest)
replaced return value with null for com/github/valid8j/pcond/core/fluent/AbstractObjectTransformer::toStream → KILLED

131

1.1
Location : toThrowable
Killed by : com.github.valid8j.ut.styles.FluentStyleTestAssertionTest$ForTestAssertionsTest.expectedExceptionThrown_testPassing(com.github.valid8j.ut.styles.FluentStyleTestAssertionTest$ForTestAssertionsTest)
replaced return value with null for com/github/valid8j/pcond/core/fluent/AbstractObjectTransformer::toThrowable → KILLED

Active mutators

Tests examined


Report generated by PIT 1.7.3