IoContext.java

1
package com.github.valid8j.metamor;
2
3
import com.github.valid8j.pcond.core.Evaluator;
4
import com.github.valid8j.pcond.core.printable.PrintableFunction;
5
import com.github.valid8j.pcond.forms.Printables;
6
7
import java.util.function.Function;
8
import java.util.function.IntFunction;
9
10
import static java.util.Objects.requireNonNull;
11
12
public interface IoContext<I, O> {
13
  String prefix();
14
15
  default String name() {
16 1 1. name : replaced return value with "" for com/github/valid8j/metamor/IoContext::name → SURVIVED
    return this.prefix() + ":" + this.input().name() + "=>" + this.output().name();
17
  }
18
19
  Dataset<I> input();
20
21
  Dataset<O> output();
22
23
  enum Utils {
24
    ;
25
26
    public static <I, O> Function<Dataset<I>, Ongoing<I, O>> toContextFunction(String contextName, String outputContextName) {
27 2 1. lambda$toContextFunction$0 : replaced return value with null for com/github/valid8j/metamor/IoContext$Utils::lambda$toContextFunction$0 → KILLED
2. toContextFunction : replaced return value with null for com/github/valid8j/metamor/IoContext$Utils::toContextFunction → KILLED
      return Printables.function("begin:" + contextName, input -> new Ongoing.Impl<>(contextName, input, outputContextName));
28
    }
29
30
    public static <I, O> Function<Ongoing<I, O>, Ongoing<I, O>> toContextEndomorphicFunction(Function<IoContext<I, O>, Function<I, O>> mapper, int numItems, IntFunction<String> variableNameFormatter) {
31
      requireNonNull(mapper);
32
      Function<Ongoing<I, O>, Ongoing<I, O>> ret = null;
33 3 1. toContextEndomorphicFunction : Changed increment from 1 to -1 → TIMED_OUT
2. toContextEndomorphicFunction : changed conditional boundary → KILLED
3. toContextEndomorphicFunction : negated conditional → KILLED
      for (int i = 0; i < numItems; i++) {
34
        Function<Ongoing<I, O>, Ongoing<I, O>> cur = mapperToEndomorphicProcessor(mapper, i, variableNameFormatter);
35 1 1. toContextEndomorphicFunction : negated conditional → KILLED
        if (ret == null) {
36
          ret = cur;
37
        } else
38
          ret = ret.andThen(cur);
39
      }
40
      assert ret != null;
41 1 1. toContextEndomorphicFunction : replaced return value with null for com/github/valid8j/metamor/IoContext$Utils::toContextEndomorphicFunction → KILLED
      return ret;
42
    }
43
44
    public static <I, O> Function<Ongoing<I, O>, Ongoing<I, O>> mapperToEndomorphicProcessor(Function<IoContext<I, O>, Function<I, O>> mapper, int i, IntFunction<String> variableNameFormatter) {
45 1 1. mapperToEndomorphicProcessor : replaced return value with null for com/github/valid8j/metamor/IoContext$Utils::mapperToEndomorphicProcessor → KILLED
      return getOngoingOngoingFunction(mapper, i, variableNameFormatter);
46
    }
47
48
    private static <I, O> Function<Ongoing<I, O>, Ongoing<I, O>> getOngoingOngoingFunction(Function<IoContext<I, O>, Function<I, O>> mapper, int i, IntFunction<String> variableNameFormatter) {
49 1 1. getOngoingOngoingFunction : replaced return value with null for com/github/valid8j/metamor/IoContext$Utils::getOngoingOngoingFunction → KILLED
      return Printables.function(
50 1 1. lambda$getOngoingOngoingFunction$1 : replaced return value with "" for com/github/valid8j/metamor/IoContext$Utils::lambda$getOngoingOngoingFunction$1 → SURVIVED
          () -> String.format("%s(%s)", mapper, variableNameFormatter.apply(i)),
51
          c -> {
52
            I in = c.input().get(i);
53
            O out = mapper.apply(c).apply(in);
54
            c.output().add(out);
55 1 1. lambda$getOngoingOngoingFunction$2 : replaced return value with null for com/github/valid8j/metamor/IoContext$Utils::lambda$getOngoingOngoingFunction$2 → KILLED
            return c.cloneObject();
56
          });
57
    }
58
59
    public static <I, O> Function<Ongoing<I, O>, IoContext<I, O>> toCloseFunction(String contextName) {
60
      // close
61 2 1. lambda$toCloseFunction$3 : replaced return value with "" for com/github/valid8j/metamor/IoContext$Utils::lambda$toCloseFunction$3 → SURVIVED
2. toCloseFunction : replaced return value with null for com/github/valid8j/metamor/IoContext$Utils::toCloseFunction → KILLED
      return ((PrintableFunction<Ongoing<I, O>, IoContext<I, O>>) Printables.<Ongoing<I, O>, IoContext<I, O>>function(() -> "end:" + contextName, Ongoing::close)).makeTrivial();
62
    }
63
64
    public static <I, O> Function<IoContext<I, O>, Dataset<O>> toOutputExtractorFunction(String contextName) {
65 2 1. lambda$toOutputExtractorFunction$4 : replaced return value with "" for com/github/valid8j/metamor/IoContext$Utils::lambda$toOutputExtractorFunction$4 → SURVIVED
2. toOutputExtractorFunction : replaced return value with null for com/github/valid8j/metamor/IoContext$Utils::toOutputExtractorFunction → KILLED
      return Printables.function(() -> "output(" + contextName + ")", IoContext::output);
66
    }
67
  }
68
69
  interface Closed<I, O> extends IoContext<I, O> {
70
    class Impl<I, O> implements Closed<I, O> {
71
      private final Dataset<I> input;
72
      private final Dataset<O> output;
73
      private final String     prefix;
74
75
      public Impl(String prefix, Dataset<I> input, Dataset<O> output) {
76
        this.prefix = prefix;
77
        this.input = input;
78
        this.output = output;
79
      }
80
81
      @Override
82
      public String prefix() {
83 1 1. prefix : replaced return value with "" for com/github/valid8j/metamor/IoContext$Closed$Impl::prefix → SURVIVED
        return this.prefix;
84
      }
85
86
      @Override
87
      public Dataset<I> input() {
88 1 1. input : replaced return value with null for com/github/valid8j/metamor/IoContext$Closed$Impl::input → KILLED
        return input;
89
      }
90
91
      @Override
92
      public Dataset<O> output() {
93 1 1. output : replaced return value with null for com/github/valid8j/metamor/IoContext$Closed$Impl::output → KILLED
        return output;
94
      }
95
96
97
      @Override
98
      public String toString() {
99 1 1. toString : replaced return value with "" for com/github/valid8j/metamor/IoContext$Closed$Impl::toString → SURVIVED
        return "(context:" + name() + ")";
100
      }
101
    }
102
  }
103
104
  interface Ongoing<I, O> extends IoContext<I, O>, Evaluator.Snapshottable {
105
    @Override
106
    Dataset.OnGoing<O> output();
107
108
    default Ongoing<I, O> cloneObject() {
109 1 1. cloneObject : replaced return value with null for com/github/valid8j/metamor/IoContext$Ongoing::cloneObject → KILLED
      return new Impl<>(this.prefix(), input(), output());
110
    }
111
112
    default IoContext<I, O> close() {
113 1 1. close : replaced return value with null for com/github/valid8j/metamor/IoContext$Ongoing::close → KILLED
      return new Closed.Impl<>(this.prefix(), this.input(), this.output().close());
114
    }
115
116
    class Snapshot {
117
      final private Object in;
118
      final private Object out;
119
120
      public Snapshot(Object in, Object out) {
121
        this.in = in;
122
        this.out = out;
123
      }
124
125
      public Object in() {
126 1 1. in : replaced return value with null for com/github/valid8j/metamor/IoContext$Ongoing$Snapshot::in → SURVIVED
        return this.in;
127
      }
128
129
      public Object out() {
130 1 1. out : replaced return value with null for com/github/valid8j/metamor/IoContext$Ongoing$Snapshot::out → SURVIVED
        return this.out;
131
      }
132
133
      public String toString() {
134 1 1. toString : replaced return value with "" for com/github/valid8j/metamor/IoContext$Ongoing$Snapshot::toString → NO_COVERAGE
        return String.format("%s=>%s", this.in, this.out);
135
      }
136
    }
137
138
    class Impl<I, O> implements Ongoing<I, O> {
139
      private final String prefix;
140
      private final Dataset<I>         input;
141
      private final Dataset.OnGoing<O> output;
142
143
      public Impl(String prefix, Dataset<I> input, String outputDatasetName) {
144
        this.prefix = prefix;
145
        this.input = requireNonNull(input);
146
        this.output = new Dataset.OnGoing.Impl<>(outputDatasetName);
147
      }
148
149
      public Impl(String prefix, Dataset<I> input, Dataset<O> output) {
150
        this.prefix = prefix;
151
        this.input = requireNonNull(input);
152
        this.output = new Dataset.OnGoing.Impl<>(output.name(), output);
153
      }
154
155
      @Override
156
      public String prefix() {
157 1 1. prefix : replaced return value with "" for com/github/valid8j/metamor/IoContext$Ongoing$Impl::prefix → SURVIVED
        return this.prefix;
158
      }
159
160
      @Override
161
      public Dataset<I> input() {
162 1 1. input : replaced return value with null for com/github/valid8j/metamor/IoContext$Ongoing$Impl::input → KILLED
        return this.input;
163
      }
164
165
      @Override
166
      public Dataset.OnGoing<O> output() {
167
        assert this.output != null;
168 1 1. output : replaced return value with null for com/github/valid8j/metamor/IoContext$Ongoing$Impl::output → KILLED
        return this.output;
169
      }
170
171
      @Override
172
      public Object snapshot() {
173 1 1. snapshot : negated conditional → KILLED
        if (this.output.size() == 0)
174 1 1. snapshot : replaced return value with null for com/github/valid8j/metamor/IoContext$Ongoing$Impl::snapshot → SURVIVED
          return new Object() {
175
            @Override
176
            public String toString() {
177 1 1. toString : replaced return value with "" for com/github/valid8j/metamor/IoContext$Ongoing$Impl$1::toString → SURVIVED
              return String.format("(context:%s)", Impl.this.name());
178
            }
179
          };
180 2 1. snapshot : replaced return value with null for com/github/valid8j/metamor/IoContext$Ongoing$Impl::snapshot → SURVIVED
2. snapshot : Replaced integer subtraction with addition → KILLED
        return new Snapshot(this.input.get(this.output.size() - 1), this.output.last());
181
      }
182
183
      @Override
184
      public String toString() {
185 1 1. toString : negated conditional → KILLED
        if (this.output.size() == 0)
186 1 1. toString : replaced return value with "" for com/github/valid8j/metamor/IoContext$Ongoing$Impl::toString → SURVIVED
          return "(empty)";
187 2 1. toString : replaced return value with "" for com/github/valid8j/metamor/IoContext$Ongoing$Impl::toString → SURVIVED
2. toString : Replaced integer subtraction with addition → KILLED
        return String.format("in: <%s>%nout:<%s>", this.input.get(this.output.size() - 1), this.output.last());
188
      }
189
    }
190
  }
191
}

Mutations

16

1.1
Location : name
Killed by : none
replaced return value with "" for com/github/valid8j/metamor/IoContext::name → SURVIVED

27

1.1
Location : lambda$toContextFunction$0
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/IoContext$Utils::lambda$toContextFunction$0 → KILLED

2.2
Location : toContextFunction
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/IoContext$Utils::toContextFunction → KILLED

33

1.1
Location : toContextEndomorphicFunction
Killed by : com.github.valid8j.examples.test.ExamplesTest.testMetarmorExamplePassing(com.github.valid8j.examples.test.ExamplesTest)
changed conditional boundary → KILLED

2.2
Location : toContextEndomorphicFunction
Killed by : none
Changed increment from 1 to -1 → TIMED_OUT

3.3
Location : toContextEndomorphicFunction
Killed by : com.github.valid8j.examples.test.ExamplesTest.testMetarmorExamplePassing(com.github.valid8j.examples.test.ExamplesTest)
negated conditional → KILLED

35

1.1
Location : toContextEndomorphicFunction
Killed by : com.github.valid8j.examples.test.ExamplesTest.testMetarmorExamplePassing(com.github.valid8j.examples.test.ExamplesTest)
negated conditional → KILLED

41

1.1
Location : toContextEndomorphicFunction
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/IoContext$Utils::toContextEndomorphicFunction → KILLED

45

1.1
Location : mapperToEndomorphicProcessor
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/IoContext$Utils::mapperToEndomorphicProcessor → KILLED

49

1.1
Location : getOngoingOngoingFunction
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/IoContext$Utils::getOngoingOngoingFunction → KILLED

50

1.1
Location : lambda$getOngoingOngoingFunction$1
Killed by : none
replaced return value with "" for com/github/valid8j/metamor/IoContext$Utils::lambda$getOngoingOngoingFunction$1 → SURVIVED

55

1.1
Location : lambda$getOngoingOngoingFunction$2
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/IoContext$Utils::lambda$getOngoingOngoingFunction$2 → KILLED

61

1.1
Location : lambda$toCloseFunction$3
Killed by : none
replaced return value with "" for com/github/valid8j/metamor/IoContext$Utils::lambda$toCloseFunction$3 → SURVIVED

2.2
Location : toCloseFunction
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/IoContext$Utils::toCloseFunction → KILLED

65

1.1
Location : lambda$toOutputExtractorFunction$4
Killed by : none
replaced return value with "" for com/github/valid8j/metamor/IoContext$Utils::lambda$toOutputExtractorFunction$4 → SURVIVED

2.2
Location : toOutputExtractorFunction
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/IoContext$Utils::toOutputExtractorFunction → KILLED

83

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

88

1.1
Location : input
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/IoContext$Closed$Impl::input → KILLED

93

1.1
Location : output
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/IoContext$Closed$Impl::output → KILLED

99

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

109

1.1
Location : cloneObject
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/IoContext$Ongoing::cloneObject → KILLED

113

1.1
Location : close
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/IoContext$Ongoing::close → KILLED

126

1.1
Location : in
Killed by : none
replaced return value with null for com/github/valid8j/metamor/IoContext$Ongoing$Snapshot::in → SURVIVED

130

1.1
Location : out
Killed by : none
replaced return value with null for com/github/valid8j/metamor/IoContext$Ongoing$Snapshot::out → SURVIVED

134

1.1
Location : toString
Killed by : none
replaced return value with "" for com/github/valid8j/metamor/IoContext$Ongoing$Snapshot::toString → NO_COVERAGE

157

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

162

1.1
Location : input
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/IoContext$Ongoing$Impl::input → KILLED

168

1.1
Location : output
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/IoContext$Ongoing$Impl::output → KILLED

173

1.1
Location : snapshot
Killed by : com.github.valid8j.examples.test.ExamplesTest.testMetarmorExamplePassing(com.github.valid8j.examples.test.ExamplesTest)
negated conditional → KILLED

174

1.1
Location : snapshot
Killed by : none
replaced return value with null for com/github/valid8j/metamor/IoContext$Ongoing$Impl::snapshot → SURVIVED

177

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

180

1.1
Location : snapshot
Killed by : com.github.valid8j.examples.test.ExamplesTest.testMetarmorExamplePassing(com.github.valid8j.examples.test.ExamplesTest)
Replaced integer subtraction with addition → KILLED

2.2
Location : snapshot
Killed by : none
replaced return value with null for com/github/valid8j/metamor/IoContext$Ongoing$Impl::snapshot → SURVIVED

185

1.1
Location : toString
Killed by : com.github.valid8j.examples.test.ExamplesTest.testMetarmorExamplePassing(com.github.valid8j.examples.test.ExamplesTest)
negated conditional → KILLED

186

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

187

1.1
Location : toString
Killed by : com.github.valid8j.examples.test.ExamplesTest.testMetarmorExamplePassing(com.github.valid8j.examples.test.ExamplesTest)
Replaced integer subtraction with addition → KILLED

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

Active mutators

Tests examined


Report generated by PIT 1.7.3