FixedFormatReader.java

1
/*
2
 * Copyright 2004 the original author or authors.
3
 *
4
 * Licensed under the Apache License, Version 2.0 (the "License");
5
 * you may not use this file except in compliance with the License.
6
 * You may obtain a copy of the License at
7
 *
8
 *     http://www.apache.org/licenses/LICENSE-2.0
9
 *
10
 * Unless required by applicable law or agreed to in writing, software
11
 * distributed under the License is distributed on an "AS IS" BASIS,
12
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
 * See the License for the specific language governing permissions and
14
 * limitations under the License.
15
 */
16
package com.ancientprogramming.fixedformat4j.io.read;
17
18
import com.ancientprogramming.fixedformat4j.exception.FixedFormatIOException;
19
20
import java.io.BufferedReader;
21
import java.io.IOException;
22
import java.io.InputStream;
23
import java.io.InputStreamReader;
24
import java.io.Reader;
25
import java.nio.charset.Charset;
26
import java.nio.charset.StandardCharsets;
27
import java.nio.file.Files;
28
import java.nio.file.Path;
29
import java.util.ArrayList;
30
import java.util.LinkedHashMap;
31
import java.util.List;
32
import java.util.Map;
33
import java.util.Objects;
34
import java.util.function.BiConsumer;
35
import java.util.function.Function;
36
37
import static java.lang.String.format;
38
39
/**
40
 * Reads a fixed-format file or stream line by line, routes each line to one or more
41
 * {@link com.ancientprogramming.fixedformat4j.annotation.Record}-annotated classes via
42
 * {@link LinePattern} discriminators, and produces parsed record objects.
43
 *
44
 * <p>Each physical line is treated as exactly one record (or unmatched). If a file contains
45
 * multiple records packed within a single line, split the line before passing it to this reader.</p>
46
 *
47
 * <p>Records are collected eagerly via {@link #read} or dispatched via
48
 * {@link #process(Reader, HandlerRegistry)}. All input-source overloads default to
49
 * {@link java.nio.charset.StandardCharsets#UTF_8}; explicit {@link Charset} overloads are
50
 * provided for every source type.</p>
51
 *
52
 * <p>Quick start — single record type:</p>
53
 * <pre>{@code
54
 * FixedFormatReader reader = FixedFormatReader.builder()
55
 *     .addMapping(MyRecord.class, LinePattern.matchAll())
56
 *     .build();
57
 *
58
 * List<MyRecord> records = reader.read(Path.of("data.txt")).get(MyRecord.class);
59
 * }</pre>
60
 *
61
 * <p>Quick start — heterogeneous file:</p>
62
 * <pre>{@code
63
 * FixedFormatReader reader = FixedFormatReader.builder()
64
 *     .addMapping(HeaderRecord.class, LinePattern.prefix("HDR"))
65
 *     .addMapping(DetailRecord.class, LinePattern.prefix("DTL"))
66
 *     .build();
67
 *
68
 * ReadResult result = reader.read(Path.of("data.txt"));
69
 * List<HeaderRecord> headers = result.get(HeaderRecord.class);
70
 * List<DetailRecord> details = result.get(DetailRecord.class);
71
 * }</pre>
72
 *
73
 * <p>Quick start — typed handlers (no casts anywhere):</p>
74
 * <pre>{@code
75
 * FixedFormatReader reader = FixedFormatReader.builder()
76
 *     .addMapping(HeaderRecord.class, LinePattern.prefix("HDR"))
77
 *     .addMapping(DetailRecord.class, LinePattern.prefix("DTL"))
78
 *     .build();
79
 *
80
 * reader.process(Path.of("data.txt"), new HandlerRegistry()
81
 *     .on(HeaderRecord.class, this::onHeader)
82
 *     .on(DetailRecord.class, this::onDetail));
83
 * }</pre>
84
 *
85
 * @author Jacob von Eyben - <a href="https://eybenconsult.com">https://eybenconsult.com</a>
86
 * @since 1.8.0
87
 */
88
public final class FixedFormatReader {
89
90
  private final List<RecordMapping<?>> mappings;
91
  private final FixedFormatLineProcessor processor;
92
93
  FixedFormatReader(FixedFormatReaderBuilder builder) {
94 2 1. <init> : Removed assignment to member variable mappings → KILLED
2. <init> : removed call to java/util/List::copyOf → KILLED
    this.mappings = List.copyOf(builder.mappings);
95
    this.processor = new FixedFormatLineProcessor(
96 3 1. <init> : removed call to com/ancientprogramming/fixedformat4j/io/read/FixedFormatLineProcessor::<init> → KILLED
2. <init> : Removed assignment to member variable processor → KILLED
3. <init> : removed call to com/ancientprogramming/fixedformat4j/io/read/FixedFormatReaderBuilder::buildIndex → KILLED
        builder.buildIndex(),
97
        builder.multiMatchStrategy,
98
        builder.unmatchStrategy,
99
        builder.parseErrorStrategy,
100
        builder.exclusionFilter,
101
        builder.manager);
102
  }
103
104
  // --- read ---
105
106
  /**
107
   * Eagerly reads all records from {@code reader} and returns a {@link ReadResult} that
108
   * provides type-safe, class-keyed access without casts.
109
   *
110
   * <p>This method is safe to call concurrently from multiple threads on the same
111
   * {@link FixedFormatReader} instance, provided that all configured strategies and the
112
   * {@link com.ancientprogramming.fixedformat4j.format.FixedFormatManager} are also thread-safe.
113
   * The built-in strategies and
114
   * {@link com.ancientprogramming.fixedformat4j.format.impl.FixedFormatManagerImpl} are thread-safe
115
   * and satisfy this requirement. Each call builds its own independent local state; the shared
116
   * line processor carries no mutable per-call state.</p>
117
   *
118
   * <pre>{@code
119
   * ReadResult result = reader.read(source);
120
   * List<HeaderRecord> headers = result.get(HeaderRecord.class); // no cast
121
   * }</pre>
122
   *
123
   * @param reader the source of lines; closed when this method returns
124
   * @return a {@link ReadResult} grouping records by their matched class; never {@code null}
125
   * @throws FixedFormatIOException if an IO error occurs while reading
126
   */
127
  public ReadResult read(Reader reader) {
128 2 1. read : removed call to java/util/Objects::requireNonNull → KILLED
2. read : replaced call to java/util/Objects::requireNonNull with argument → KILLED
    Objects.requireNonNull(reader, "reader must not be null");
129
    // Seed in registration order so result.classes() iterates by registration, not encounter,
130
    // order. Empty entries are stripped before returning.
131 1 1. read : removed call to java/util/LinkedHashMap::<init> → KILLED
    Map<Class<?>, List<Object>> data = new LinkedHashMap<>();
132
    for (RecordMapping<?> mapping : mappings) {
133 4 1. read : removed call to java/util/ArrayList::<init> → KILLED
2. read : removed call to com/ancientprogramming/fixedformat4j/io/read/RecordMapping::getRecordClass → KILLED
3. read : replaced call to java/util/Map::put with argument → KILLED
4. read : removed call to java/util/Map::put → KILLED
      data.put(mapping.getRecordClass(), new ArrayList<>());
134
    }
135 1 1. read : removed call to java/util/ArrayList::<init> → KILLED
    List<Object> all = new ArrayList<>();
136 1 1. read : removed call to com/ancientprogramming/fixedformat4j/io/read/FixedFormatReader::readWithMappingCallback → KILLED
    readWithMappingCallback(reader, (clazz, record) -> {
137 3 1. lambda$read$0 : removed call to java/util/Map::get → KILLED
2. lambda$read$0 : replaced call to java/util/Map::get with argument → KILLED
3. lambda$read$0 : removed call to java/util/List::add → KILLED
      data.get(clazz).add(record);
138 1 1. lambda$read$0 : removed call to java/util/List::add → KILLED
      all.add(record);
139
    });
140 6 1. lambda$read$1 : replaced boolean return with false for com/ancientprogramming/fixedformat4j/io/read/FixedFormatReader::lambda$read$1 → KILLED
2. lambda$read$1 : removed call to java/util/List::isEmpty → KILLED
3. read : removed call to java/util/Set::removeIf → KILLED
4. lambda$read$1 : replaced boolean return with true for com/ancientprogramming/fixedformat4j/io/read/FixedFormatReader::lambda$read$1 → KILLED
5. read : removed call to java/util/Map::entrySet → KILLED
6. lambda$read$1 : removed call to java/util/Map$Entry::getValue → KILLED
    data.entrySet().removeIf(e -> e.getValue().isEmpty());
141 2 1. read : replaced return value with null for com/ancientprogramming/fixedformat4j/io/read/FixedFormatReader::read → KILLED
2. read : removed call to com/ancientprogramming/fixedformat4j/io/read/ReadResult::<init> → KILLED
    return new ReadResult(data, all);
142
  }
143
144
  /**
145
   * Eagerly reads all records from {@code inputStream} using UTF-8 encoding and returns
146
   * a {@link ReadResult}.
147
   *
148
   * @param inputStream the source stream; closed when this method returns
149
   * @return a {@link ReadResult} grouping records by their matched class; never {@code null}
150
   * @throws FixedFormatIOException if an IO error occurs while reading
151
   */
152
  public ReadResult read(InputStream inputStream) {
153 2 1. read : replaced return value with null for com/ancientprogramming/fixedformat4j/io/read/FixedFormatReader::read → KILLED
2. read : removed call to com/ancientprogramming/fixedformat4j/io/read/FixedFormatReader::read → KILLED
    return read(inputStream, StandardCharsets.UTF_8);
154
  }
155
156
  /**
157
   * Eagerly reads all records from {@code inputStream} using the given charset and returns
158
   * a {@link ReadResult}.
159
   *
160
   * @param inputStream the source stream; closed when this method returns
161
   * @param charset     the character encoding to apply
162
   * @return a {@link ReadResult} grouping records by their matched class; never {@code null}
163
   * @throws FixedFormatIOException if an IO error occurs while reading
164
   */
165
  public ReadResult read(InputStream inputStream, Charset charset) {
166 2 1. read : removed call to com/ancientprogramming/fixedformat4j/io/read/FixedFormatReader::withReader → KILLED
2. read : replaced return value with null for com/ancientprogramming/fixedformat4j/io/read/FixedFormatReader::read → KILLED
    return withReader(inputStream, charset, this::read);
167
  }
168
169
  /**
170
   * Eagerly reads all records from {@code path} using UTF-8 encoding and returns
171
   * a {@link ReadResult}.
172
   *
173
   * @param path the path to read
174
   * @return a {@link ReadResult} grouping records by their matched class; never {@code null}
175
   * @throws FixedFormatIOException if the path cannot be opened or an IO error occurs
176
   */
177
  public ReadResult read(Path path) {
178 2 1. read : replaced return value with null for com/ancientprogramming/fixedformat4j/io/read/FixedFormatReader::read → KILLED
2. read : removed call to com/ancientprogramming/fixedformat4j/io/read/FixedFormatReader::read → KILLED
    return read(path, StandardCharsets.UTF_8);
179
  }
180
181
  /**
182
   * Eagerly reads all records from {@code path} using the given charset and returns
183
   * a {@link ReadResult}.
184
   *
185
   * @param path    the path to read
186
   * @param charset the character encoding to apply
187
   * @return a {@link ReadResult} grouping records by their matched class; never {@code null}
188
   * @throws FixedFormatIOException if the path cannot be opened or an IO error occurs
189
   */
190
  public ReadResult read(Path path, Charset charset) {
191 2 1. read : removed call to com/ancientprogramming/fixedformat4j/io/read/FixedFormatReader::withReader → KILLED
2. read : replaced return value with null for com/ancientprogramming/fixedformat4j/io/read/FixedFormatReader::read → KILLED
    return withReader(path, charset, this::read);
192
  }
193
194
  private void readWithMappingCallback(Reader reader,
195
                                       BiConsumer<Class<?>, Object> callback) {
196 1 1. readWithMappingCallback : removed call to com/ancientprogramming/fixedformat4j/io/read/FixedFormatReader::toBuffered → KILLED
    BufferedReader buffered = toBuffered(reader);
197 3 1. readWithMappingCallback : Substituted 0 with 1 → KILLED
2. readWithMappingCallback : Substituted 0 with 1 → KILLED
3. readWithMappingCallback : Substituted 1 with 0 → KILLED
    long[] lineCounter = {0L};
198
    try (buffered) {
199
      String line;
200 4 1. readWithMappingCallback : removed conditional - replaced equality check with true → TIMED_OUT
2. readWithMappingCallback : removed call to java/io/BufferedReader::readLine → KILLED
3. readWithMappingCallback : removed conditional - replaced equality check with false → KILLED
4. readWithMappingCallback : negated conditional → KILLED
      while ((line = buffered.readLine()) != null) {
201 4 1. readWithMappingCallback : Substituted 1 with 2 → KILLED
2. readWithMappingCallback : removed call to com/ancientprogramming/fixedformat4j/io/read/FixedFormatLineProcessor::processLine → KILLED
3. readWithMappingCallback : Substituted 0 with 1 → KILLED
4. readWithMappingCallback : Replaced long addition with subtraction → KILLED
        processor.processLine(line, ++lineCounter[0], callback);
202
      }
203
    } catch (IOException e) {
204 9 1. readWithMappingCallback : Substituted 0 with 1 → KILLED
2. readWithMappingCallback : removed call to com/ancientprogramming/fixedformat4j/exception/FixedFormatIOException::<init> → KILLED
3. readWithMappingCallback : Replaced long addition with subtraction → KILLED
4. readWithMappingCallback : replaced call to java/lang/String::format with argument → KILLED
5. readWithMappingCallback : removed call to java/lang/String::format → KILLED
6. readWithMappingCallback : Substituted 1 with 0 → KILLED
7. readWithMappingCallback : Substituted 1 with 2 → KILLED
8. readWithMappingCallback : Substituted 0 with 1 → KILLED
9. readWithMappingCallback : removed call to java/lang/Long::valueOf → KILLED
      throw new FixedFormatIOException(format("IO error reading line %d", lineCounter[0] + 1), e);
205
    }
206
  }
207
208
  // --- process ---
209
210
  /**
211
   * Reads all records from {@code reader} and dispatches each to the handler registered
212
   * for its class in {@code registry}.
213
   *
214
   * <p>Classes not present in the registry are silently ignored — they are still parsed,
215
   * but no handler is invoked. Because the registry is supplied per call rather than stored
216
   * in the reader, the same {@link FixedFormatReader} instance is safe to use from multiple
217
   * threads with independent registries, provided that all configured strategies and the
218
   * {@link com.ancientprogramming.fixedformat4j.format.FixedFormatManager} are also thread-safe.
219
   * The built-in strategies and
220
   * {@link com.ancientprogramming.fixedformat4j.format.impl.FixedFormatManagerImpl} are thread-safe
221
   * and satisfy this requirement.</p>
222
   *
223
   * <pre>{@code
224
   * reader.process(source, new HandlerRegistry()
225
   *     .on(HeaderRecord.class, this::onHeader)
226
   *     .on(DetailRecord.class, this::onDetail));
227
   * }</pre>
228
   *
229
   * @param reader   the source of lines; closed when this method returns
230
   * @param registry the typed handlers to invoke per matched class; must not be {@code null}
231
   * @throws FixedFormatIOException if an IO error occurs while reading
232
   */
233
  public void process(Reader reader, HandlerRegistry registry) {
234 2 1. process : removed call to java/util/Objects::requireNonNull → SURVIVED
2. process : replaced call to java/util/Objects::requireNonNull with argument → SURVIVED
    Objects.requireNonNull(reader, "reader must not be null");
235 2 1. process : removed call to java/util/Objects::requireNonNull → SURVIVED
2. process : replaced call to java/util/Objects::requireNonNull with argument → SURVIVED
    Objects.requireNonNull(registry, "registry must not be null");
236 1 1. process : removed call to com/ancientprogramming/fixedformat4j/io/read/FixedFormatReader::readWithMappingCallback → KILLED
    readWithMappingCallback(reader, registry::dispatch);
237
  }
238
239
  /**
240
   * Reads all records from {@code inputStream} using UTF-8 encoding and dispatches each to
241
   * its handler in {@code registry}.
242
   *
243
   * @param inputStream the source stream; closed when this method returns
244
   * @param registry    the typed handlers to invoke per matched class; must not be {@code null}
245
   * @throws FixedFormatIOException if an IO error occurs while reading
246
   */
247
  public void process(InputStream inputStream, HandlerRegistry registry) {
248 1 1. process : removed call to com/ancientprogramming/fixedformat4j/io/read/FixedFormatReader::process → KILLED
    process(inputStream, StandardCharsets.UTF_8, registry);
249
  }
250
251
  /**
252
   * Reads all records from {@code inputStream} using the given charset and dispatches each to
253
   * its handler in {@code registry}.
254
   *
255
   * @param inputStream the source stream; closed when this method returns
256
   * @param charset     the character encoding to apply
257
   * @param registry    the typed handlers to invoke per matched class; must not be {@code null}
258
   * @throws FixedFormatIOException if an IO error occurs while reading
259
   */
260
  public void process(InputStream inputStream, Charset charset, HandlerRegistry registry) {
261 2 1. process : removed call to java/util/Objects::requireNonNull → SURVIVED
2. process : replaced call to java/util/Objects::requireNonNull with argument → SURVIVED
    Objects.requireNonNull(registry, "registry must not be null");
262 2 1. process : removed call to com/ancientprogramming/fixedformat4j/io/read/FixedFormatReader::withReader → KILLED
2. lambda$process$2 : removed call to com/ancientprogramming/fixedformat4j/io/read/FixedFormatReader::process → KILLED
    withReader(inputStream, charset, r -> { process(r, registry); return null; });
263
  }
264
265
  /**
266
   * Reads all records from {@code path} using UTF-8 encoding and dispatches each to
267
   * its handler in {@code registry}.
268
   *
269
   * @param path     the path to read
270
   * @param registry the typed handlers to invoke per matched class; must not be {@code null}
271
   * @throws FixedFormatIOException if the path cannot be opened or an IO error occurs
272
   */
273
  public void process(Path path, HandlerRegistry registry) {
274 1 1. process : removed call to com/ancientprogramming/fixedformat4j/io/read/FixedFormatReader::process → KILLED
    process(path, StandardCharsets.UTF_8, registry);
275
  }
276
277
  /**
278
   * Reads all records from {@code path} using the given charset and dispatches each to
279
   * its handler in {@code registry}.
280
   *
281
   * @param path     the path to read
282
   * @param charset  the character encoding to apply
283
   * @param registry the typed handlers to invoke per matched class; must not be {@code null}
284
   * @throws FixedFormatIOException if the path cannot be opened or an IO error occurs
285
   */
286
  public void process(Path path, Charset charset, HandlerRegistry registry) {
287 2 1. process : removed call to java/util/Objects::requireNonNull → SURVIVED
2. process : replaced call to java/util/Objects::requireNonNull with argument → SURVIVED
    Objects.requireNonNull(registry, "registry must not be null");
288 2 1. process : removed call to com/ancientprogramming/fixedformat4j/io/read/FixedFormatReader::withReader → KILLED
2. lambda$process$3 : removed call to com/ancientprogramming/fixedformat4j/io/read/FixedFormatReader::process → KILLED
    withReader(path, charset, r -> { process(r, registry); return null; });
289
  }
290
291
  // --- factory ---
292
293
  /**
294
   * Returns a new builder for constructing a {@link FixedFormatReader}.
295
   *
296
   * @return a fresh builder instance
297
   */
298
  public static FixedFormatReaderBuilder builder() {
299 2 1. builder : removed call to com/ancientprogramming/fixedformat4j/io/read/FixedFormatReaderBuilder::<init> → KILLED
2. builder : replaced return value with null for com/ancientprogramming/fixedformat4j/io/read/FixedFormatReader::builder → KILLED
    return new FixedFormatReaderBuilder();
300
  }
301
302
  private static BufferedReader toBuffered(Reader reader) {
303 5 1. toBuffered : negated conditional → KILLED
2. toBuffered : removed conditional - replaced equality check with false → KILLED
3. toBuffered : removed conditional - replaced equality check with true → KILLED
4. toBuffered : replaced return value with null for com/ancientprogramming/fixedformat4j/io/read/FixedFormatReader::toBuffered → KILLED
5. toBuffered : removed call to java/io/BufferedReader::<init> → KILLED
    return reader instanceof BufferedReader ? (BufferedReader) reader : new BufferedReader(reader);
304
  }
305
306
  private static <R> R withReader(InputStream inputStream, Charset charset, Function<Reader, R> body) {
307 2 1. withReader : removed call to java/util/Objects::requireNonNull → KILLED
2. withReader : replaced call to java/util/Objects::requireNonNull with argument → KILLED
    Objects.requireNonNull(inputStream, "inputStream must not be null");
308 2 1. withReader : replaced call to java/util/Objects::requireNonNull with argument → SURVIVED
2. withReader : removed call to java/util/Objects::requireNonNull → SURVIVED
    Objects.requireNonNull(charset, "charset must not be null");
309 1 1. withReader : removed call to java/io/InputStreamReader::<init> → KILLED
    try (InputStreamReader r = new InputStreamReader(inputStream, charset)) {
310 3 1. withReader : removed call to java/util/function/Function::apply → KILLED
2. withReader : replaced call to java/util/function/Function::apply with argument → KILLED
3. withReader : replaced return value with null for com/ancientprogramming/fixedformat4j/io/read/FixedFormatReader::withReader → KILLED
      return body.apply(r);
311
    } catch (IOException e) {
312 1 1. withReader : removed call to com/ancientprogramming/fixedformat4j/exception/FixedFormatIOException::<init> → NO_COVERAGE
      throw new FixedFormatIOException("IO error reading input stream", e);
313
    }
314
  }
315
316
  private static <R> R withReader(Path path, Charset charset, Function<Reader, R> body) {
317 2 1. withReader : replaced call to java/util/Objects::requireNonNull with argument → KILLED
2. withReader : removed call to java/util/Objects::requireNonNull → KILLED
    Objects.requireNonNull(path, "path must not be null");
318 2 1. withReader : replaced call to java/util/Objects::requireNonNull with argument → SURVIVED
2. withReader : removed call to java/util/Objects::requireNonNull → SURVIVED
    Objects.requireNonNull(charset, "charset must not be null");
319 3 1. withReader : Substituted 0 with 1 → KILLED
2. withReader : removed call to java/io/InputStreamReader::<init> → KILLED
3. withReader : removed call to java/nio/file/Files::newInputStream → KILLED
    try (InputStreamReader r = new InputStreamReader(Files.newInputStream(path), charset)) {
320 3 1. withReader : replaced call to java/util/function/Function::apply with argument → KILLED
2. withReader : removed call to java/util/function/Function::apply → KILLED
3. withReader : replaced return value with null for com/ancientprogramming/fixedformat4j/io/read/FixedFormatReader::withReader → KILLED
      return body.apply(r);
321
    } catch (IOException e) {
322 5 1. withReader : Substituted 0 with 1 → KILLED
2. withReader : removed call to com/ancientprogramming/fixedformat4j/exception/FixedFormatIOException::<init> → KILLED
3. withReader : removed call to java/lang/String::format → KILLED
4. withReader : Substituted 1 with 0 → KILLED
5. withReader : replaced call to java/lang/String::format with argument → KILLED
      throw new FixedFormatIOException(format("Cannot open path: %s", path), e);
323
    }
324
  }
325
}

Mutations

94

1.1
Location : <init>
Killed by : com.ancientprogramming.fixedformat4j.io.TestStrategiesAndHandlers.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestStrategiesAndHandlers]/[method:multiMatchThrowOnAmbiguityThrowsWhenTwoPatternsMatch()]
Removed assignment to member variable mappings → KILLED

2.2
Location : <init>
Killed by : com.ancientprogramming.fixedformat4j.io.TestStrategiesAndHandlers.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestStrategiesAndHandlers]/[method:multiMatchThrowOnAmbiguityThrowsWhenTwoPatternsMatch()]
removed call to java/util/List::copyOf → KILLED

96

1.1
Location : <init>
Killed by : com.ancientprogramming.fixedformat4j.io.TestStrategiesAndHandlers.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestStrategiesAndHandlers]/[method:multiMatchThrowOnAmbiguityThrowsWhenTwoPatternsMatch()]
removed call to com/ancientprogramming/fixedformat4j/io/read/FixedFormatLineProcessor::<init> → KILLED

2.2
Location : <init>
Killed by : com.ancientprogramming.fixedformat4j.io.TestStrategiesAndHandlers.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestStrategiesAndHandlers]/[method:multiMatchThrowOnAmbiguityThrowsWhenTwoPatternsMatch()]
Removed assignment to member variable processor → KILLED

3.3
Location : <init>
Killed by : com.ancientprogramming.fixedformat4j.io.TestStrategiesAndHandlers.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestStrategiesAndHandlers]/[method:multiMatchThrowOnAmbiguityThrowsWhenTwoPatternsMatch()]
removed call to com/ancientprogramming/fixedformat4j/io/read/FixedFormatReaderBuilder::buildIndex → KILLED

128

1.1
Location : read
Killed by : com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources]/[method:readNullReader_npeMessageNamesParameter()]
removed call to java/util/Objects::requireNonNull → KILLED

2.2
Location : read
Killed by : com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources]/[method:readNullReader_npeMessageNamesParameter()]
replaced call to java/util/Objects::requireNonNull with argument → KILLED

131

1.1
Location : read
Killed by : com.ancientprogramming.fixedformat4j.io.TestStrategiesAndHandlers.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestStrategiesAndHandlers]/[method:multiMatchThrowOnAmbiguityThrowsWhenTwoPatternsMatch()]
removed call to java/util/LinkedHashMap::<init> → KILLED

133

1.1
Location : read
Killed by : com.ancientprogramming.fixedformat4j.io.TestStrategiesAndHandlers.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestStrategiesAndHandlers]/[method:parseErrorCustomLambdaCanRethrowToAbortProcessing()]
removed call to java/util/ArrayList::<init> → KILLED

2.2
Location : read
Killed by : com.ancientprogramming.fixedformat4j.io.TestStrategiesAndHandlers.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestStrategiesAndHandlers]/[method:parseErrorCustomLambdaCanRethrowToAbortProcessing()]
removed call to com/ancientprogramming/fixedformat4j/io/read/RecordMapping::getRecordClass → KILLED

3.3
Location : read
Killed by : com.ancientprogramming.fixedformat4j.io.TestStrategiesAndHandlers.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestStrategiesAndHandlers]/[method:parseErrorCustomLambdaCanRethrowToAbortProcessing()]
replaced call to java/util/Map::put with argument → KILLED

4.4
Location : read
Killed by : com.ancientprogramming.fixedformat4j.io.TestStrategiesAndHandlers.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestStrategiesAndHandlers]/[method:parseErrorCustomLambdaCanRethrowToAbortProcessing()]
removed call to java/util/Map::put → KILLED

135

1.1
Location : read
Killed by : com.ancientprogramming.fixedformat4j.io.TestStrategiesAndHandlers.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestStrategiesAndHandlers]/[method:parseErrorCustomLambdaCanRethrowToAbortProcessing()]
removed call to java/util/ArrayList::<init> → KILLED

136

1.1
Location : read
Killed by : com.ancientprogramming.fixedformat4j.io.TestStrategiesAndHandlers.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestStrategiesAndHandlers]/[method:multiMatchThrowOnAmbiguityThrowsWhenTwoPatternsMatch()]
removed call to com/ancientprogramming/fixedformat4j/io/read/FixedFormatReader::readWithMappingCallback → KILLED

137

1.1
Location : lambda$read$0
Killed by : com.ancientprogramming.fixedformat4j.io.TestStrategiesAndHandlers.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestStrategiesAndHandlers]/[method:parseErrorCustomLambdaCanRethrowToAbortProcessing()]
removed call to java/util/Map::get → KILLED

2.2
Location : lambda$read$0
Killed by : com.ancientprogramming.fixedformat4j.io.TestStrategiesAndHandlers.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestStrategiesAndHandlers]/[method:parseErrorCustomLambdaCanRethrowToAbortProcessing()]
replaced call to java/util/Map::get with argument → KILLED

3.3
Location : lambda$read$0
Killed by : com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderOutputShapes.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderOutputShapes]/[method:readGetReturnsTypedRecordsInOrder()]
removed call to java/util/List::add → KILLED

138

1.1
Location : lambda$read$0
Killed by : com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderParseError.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderParseError]/[method:customLambdaStrategyDoesNotEmitRecordForFailedLine()]
removed call to java/util/List::add → KILLED

140

1.1
Location : lambda$read$1
Killed by : com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderProcess.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderProcess]/[method:readResultExcludesClassesWithNoMatches()]
replaced boolean return with false for com/ancientprogramming/fixedformat4j/io/read/FixedFormatReader::lambda$read$1 → KILLED

2.2
Location : lambda$read$1
Killed by : com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderProcess.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderProcess]/[method:readResultExcludesClassesWithNoMatches()]
removed call to java/util/List::isEmpty → KILLED

3.3
Location : read
Killed by : com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderProcess.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderProcess]/[method:readResultExcludesClassesWithNoMatches()]
removed call to java/util/Set::removeIf → KILLED

4.4
Location : lambda$read$1
Killed by : com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderOutputShapes.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderOutputShapes]/[method:readGetReturnsTypedRecordsInOrder()]
replaced boolean return with true for com/ancientprogramming/fixedformat4j/io/read/FixedFormatReader::lambda$read$1 → KILLED

5.5
Location : read
Killed by : com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderParseError.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderParseError]/[method:skipAndLogSkipsBadLineAndContinuesParsing()]
removed call to java/util/Map::entrySet → KILLED

6.6
Location : lambda$read$1
Killed by : com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderParseError.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderParseError]/[method:skipAndLogSkipsBadLineAndContinuesParsing()]
removed call to java/util/Map$Entry::getValue → KILLED

141

1.1
Location : read
Killed by : com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderParseError.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderParseError]/[method:customLambdaStrategyDoesNotEmitRecordForFailedLine()]
replaced return value with null for com/ancientprogramming/fixedformat4j/io/read/FixedFormatReader::read → KILLED

2.2
Location : read
Killed by : com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderParseError.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderParseError]/[method:customLambdaStrategyDoesNotEmitRecordForFailedLine()]
removed call to com/ancientprogramming/fixedformat4j/io/read/ReadResult::<init> → KILLED

153

1.1
Location : read
Killed by : com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources]/[method:readsFromInputStream()]
replaced return value with null for com/ancientprogramming/fixedformat4j/io/read/FixedFormatReader::read → KILLED

2.2
Location : read
Killed by : com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources]/[method:throwsNullPointerWhenInputStreamIsNull()]
removed call to com/ancientprogramming/fixedformat4j/io/read/FixedFormatReader::read → KILLED

166

1.1
Location : read
Killed by : com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources]/[method:throwsNullPointerWhenInputStreamIsNull()]
removed call to com/ancientprogramming/fixedformat4j/io/read/FixedFormatReader::withReader → KILLED

2.2
Location : read
Killed by : com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources]/[method:readsFromInputStream()]
replaced return value with null for com/ancientprogramming/fixedformat4j/io/read/FixedFormatReader::read → KILLED

178

1.1
Location : read
Killed by : com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources]/[method:readsFromPath()]
replaced return value with null for com/ancientprogramming/fixedformat4j/io/read/FixedFormatReader::read → KILLED

2.2
Location : read
Killed by : com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources]/[method:readNullPath_npeMessageNamesParameter()]
removed call to com/ancientprogramming/fixedformat4j/io/read/FixedFormatReader::read → KILLED

191

1.1
Location : read
Killed by : com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources]/[method:readNullPath_npeMessageNamesParameter()]
removed call to com/ancientprogramming/fixedformat4j/io/read/FixedFormatReader::withReader → KILLED

2.2
Location : read
Killed by : com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources]/[method:readsFromPath()]
replaced return value with null for com/ancientprogramming/fixedformat4j/io/read/FixedFormatReader::read → KILLED

196

1.1
Location : readWithMappingCallback
Killed by : com.ancientprogramming.fixedformat4j.io.TestStrategiesAndHandlers.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestStrategiesAndHandlers]/[method:multiMatchThrowOnAmbiguityThrowsWhenTwoPatternsMatch()]
removed call to com/ancientprogramming/fixedformat4j/io/read/FixedFormatReader::toBuffered → KILLED

197

1.1
Location : readWithMappingCallback
Killed by : com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderUnmatched.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderUnmatched]/[method:throwsOnUnmatchedLineWhenStrategyIsThrowException()]
Substituted 0 with 1 → KILLED

2.2
Location : readWithMappingCallback
Killed by : com.ancientprogramming.fixedformat4j.io.TestStrategiesAndHandlers.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestStrategiesAndHandlers]/[method:multiMatchThrowOnAmbiguityThrowsWhenTwoPatternsMatch()]
Substituted 0 with 1 → KILLED

3.3
Location : readWithMappingCallback
Killed by : com.ancientprogramming.fixedformat4j.io.TestStrategiesAndHandlers.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestStrategiesAndHandlers]/[method:multiMatchThrowOnAmbiguityThrowsWhenTwoPatternsMatch()]
Substituted 1 with 0 → KILLED

200

1.1
Location : readWithMappingCallback
Killed by : com.ancientprogramming.fixedformat4j.io.TestStrategiesAndHandlers.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestStrategiesAndHandlers]/[method:multiMatchThrowOnAmbiguityThrowsWhenTwoPatternsMatch()]
removed call to java/io/BufferedReader::readLine → KILLED

2.2
Location : readWithMappingCallback
Killed by : com.ancientprogramming.fixedformat4j.io.TestStrategiesAndHandlers.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestStrategiesAndHandlers]/[method:multiMatchThrowOnAmbiguityThrowsWhenTwoPatternsMatch()]
removed conditional - replaced equality check with false → KILLED

3.3
Location : readWithMappingCallback
Killed by : com.ancientprogramming.fixedformat4j.io.TestStrategiesAndHandlers.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestStrategiesAndHandlers]/[method:multiMatchThrowOnAmbiguityThrowsWhenTwoPatternsMatch()]
negated conditional → KILLED

4.4
Location : readWithMappingCallback
Killed by : none
removed conditional - replaced equality check with true → TIMED_OUT

201

1.1
Location : readWithMappingCallback
Killed by : com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderUnmatched.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderUnmatched]/[method:throwsOnUnmatchedLineWhenStrategyIsThrowException()]
Substituted 1 with 2 → KILLED

2.2
Location : readWithMappingCallback
Killed by : com.ancientprogramming.fixedformat4j.io.TestStrategiesAndHandlers.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestStrategiesAndHandlers]/[method:multiMatchThrowOnAmbiguityThrowsWhenTwoPatternsMatch()]
removed call to com/ancientprogramming/fixedformat4j/io/read/FixedFormatLineProcessor::processLine → KILLED

3.3
Location : readWithMappingCallback
Killed by : com.ancientprogramming.fixedformat4j.io.TestStrategiesAndHandlers.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestStrategiesAndHandlers]/[method:multiMatchThrowOnAmbiguityThrowsWhenTwoPatternsMatch()]
Substituted 0 with 1 → KILLED

4.4
Location : readWithMappingCallback
Killed by : com.ancientprogramming.fixedformat4j.io.TestStrategiesAndHandlers.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestStrategiesAndHandlers]/[method:parseErrorCustomLambdaInvokesHandlerAndDoesNotEmitRecord()]
Replaced long addition with subtraction → KILLED

204

1.1
Location : readWithMappingCallback
Killed by : com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources]/[method:ioErrorMidReadMessageContainsCorrectLineNumber()]
Substituted 0 with 1 → KILLED

2.2
Location : readWithMappingCallback
Killed by : com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources]/[method:ioErrorMidReadMessageContainsCorrectLineNumber()]
removed call to com/ancientprogramming/fixedformat4j/exception/FixedFormatIOException::<init> → KILLED

3.3
Location : readWithMappingCallback
Killed by : com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources]/[method:ioErrorMidReadMessageContainsCorrectLineNumber()]
Replaced long addition with subtraction → KILLED

4.4
Location : readWithMappingCallback
Killed by : com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources]/[method:ioErrorMidReadMessageContainsCorrectLineNumber()]
replaced call to java/lang/String::format with argument → KILLED

5.5
Location : readWithMappingCallback
Killed by : com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources]/[method:ioErrorMidReadMessageContainsCorrectLineNumber()]
removed call to java/lang/String::format → KILLED

6.6
Location : readWithMappingCallback
Killed by : com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources]/[method:ioErrorMidReadMessageContainsCorrectLineNumber()]
Substituted 1 with 0 → KILLED

7.7
Location : readWithMappingCallback
Killed by : com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources]/[method:ioErrorMidReadMessageContainsCorrectLineNumber()]
Substituted 1 with 2 → KILLED

8.8
Location : readWithMappingCallback
Killed by : com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources]/[method:ioErrorMidReadMessageContainsCorrectLineNumber()]
Substituted 0 with 1 → KILLED

9.9
Location : readWithMappingCallback
Killed by : com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources]/[method:ioErrorMidReadMessageContainsCorrectLineNumber()]
removed call to java/lang/Long::valueOf → KILLED

234

1.1
Location : process
Killed by : none
removed call to java/util/Objects::requireNonNull → SURVIVED
Covering tests

2.2
Location : process
Killed by : none
replaced call to java/util/Objects::requireNonNull with argument → SURVIVED Covering tests

235

1.1
Location : process
Killed by : none
removed call to java/util/Objects::requireNonNull → SURVIVED
Covering tests

2.2
Location : process
Killed by : none
replaced call to java/util/Objects::requireNonNull with argument → SURVIVED Covering tests

236

1.1
Location : process
Killed by : com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderProcess.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderProcess]/[method:processWorksWithInputStreamAndCharset()]
removed call to com/ancientprogramming/fixedformat4j/io/read/FixedFormatReader::readWithMappingCallback → KILLED

248

1.1
Location : process
Killed by : com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderProcess.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderProcess]/[method:throwsNullPointerWhenInputStreamIsNullOnProcess()]
removed call to com/ancientprogramming/fixedformat4j/io/read/FixedFormatReader::process → KILLED

261

1.1
Location : process
Killed by : none
removed call to java/util/Objects::requireNonNull → SURVIVED
Covering tests

2.2
Location : process
Killed by : none
replaced call to java/util/Objects::requireNonNull with argument → SURVIVED Covering tests

262

1.1
Location : process
Killed by : com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderProcess.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderProcess]/[method:throwsNullPointerWhenCharsetIsNullOnProcess()]
removed call to com/ancientprogramming/fixedformat4j/io/read/FixedFormatReader::withReader → KILLED

2.2
Location : lambda$process$2
Killed by : com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderProcess.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderProcess]/[method:processWorksWithInputStreamAndCharset()]
removed call to com/ancientprogramming/fixedformat4j/io/read/FixedFormatReader::process → KILLED

274

1.1
Location : process
Killed by : com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderProcess.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderProcess]/[method:throwsNullPointerWhenRegistryIsNullForPathNoCharset(java.nio.file.Path)]
removed call to com/ancientprogramming/fixedformat4j/io/read/FixedFormatReader::process → KILLED

287

1.1
Location : process
Killed by : none
removed call to java/util/Objects::requireNonNull → SURVIVED
Covering tests

2.2
Location : process
Killed by : none
replaced call to java/util/Objects::requireNonNull with argument → SURVIVED Covering tests

288

1.1
Location : process
Killed by : com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderProcess.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderProcess]/[method:processWorksWithPath()]
removed call to com/ancientprogramming/fixedformat4j/io/read/FixedFormatReader::withReader → KILLED

2.2
Location : lambda$process$3
Killed by : com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderProcess.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderProcess]/[method:processWorksWithPath()]
removed call to com/ancientprogramming/fixedformat4j/io/read/FixedFormatReader::process → KILLED

299

1.1
Location : builder
Killed by : com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderBuilder.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderBuilder]/[method:throwsWhenNoMappings()]
removed call to com/ancientprogramming/fixedformat4j/io/read/FixedFormatReaderBuilder::<init> → KILLED

2.2
Location : builder
Killed by : com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderBuilder.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderBuilder]/[method:throwsWhenNoMappings()]
replaced return value with null for com/ancientprogramming/fixedformat4j/io/read/FixedFormatReader::builder → KILLED

303

1.1
Location : toBuffered
Killed by : com.ancientprogramming.fixedformat4j.io.TestStrategiesAndHandlers.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestStrategiesAndHandlers]/[method:multiMatchThrowOnAmbiguityThrowsWhenTwoPatternsMatch()]
negated conditional → KILLED

2.2
Location : toBuffered
Killed by : com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources]/[method:ioErrorMidReadMessageContainsCorrectLineNumber()]
removed conditional - replaced equality check with false → KILLED

3.3
Location : toBuffered
Killed by : com.ancientprogramming.fixedformat4j.io.TestStrategiesAndHandlers.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestStrategiesAndHandlers]/[method:multiMatchThrowOnAmbiguityThrowsWhenTwoPatternsMatch()]
removed conditional - replaced equality check with true → KILLED

4.4
Location : toBuffered
Killed by : com.ancientprogramming.fixedformat4j.io.TestStrategiesAndHandlers.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestStrategiesAndHandlers]/[method:multiMatchThrowOnAmbiguityThrowsWhenTwoPatternsMatch()]
replaced return value with null for com/ancientprogramming/fixedformat4j/io/read/FixedFormatReader::toBuffered → KILLED

5.5
Location : toBuffered
Killed by : com.ancientprogramming.fixedformat4j.io.TestStrategiesAndHandlers.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestStrategiesAndHandlers]/[method:multiMatchThrowOnAmbiguityThrowsWhenTwoPatternsMatch()]
removed call to java/io/BufferedReader::<init> → KILLED

307

1.1
Location : withReader
Killed by : com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources]/[method:readNullInputStream_npeMessageNamesParameter()]
removed call to java/util/Objects::requireNonNull → KILLED

2.2
Location : withReader
Killed by : com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources]/[method:readNullInputStream_npeMessageNamesParameter()]
replaced call to java/util/Objects::requireNonNull with argument → KILLED

308

1.1
Location : withReader
Killed by : none
replaced call to java/util/Objects::requireNonNull with argument → SURVIVED
Covering tests

2.2
Location : withReader
Killed by : none
removed call to java/util/Objects::requireNonNull → SURVIVED Covering tests

309

1.1
Location : withReader
Killed by : com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources]/[method:readsFromInputStream()]
removed call to java/io/InputStreamReader::<init> → KILLED

310

1.1
Location : withReader
Killed by : com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources]/[method:readsFromInputStream()]
removed call to java/util/function/Function::apply → KILLED

2.2
Location : withReader
Killed by : com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources]/[method:readsFromInputStream()]
replaced call to java/util/function/Function::apply with argument → KILLED

3.3
Location : withReader
Killed by : com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources]/[method:readsFromInputStream()]
replaced return value with null for com/ancientprogramming/fixedformat4j/io/read/FixedFormatReader::withReader → KILLED

312

1.1
Location : withReader
Killed by : none
removed call to com/ancientprogramming/fixedformat4j/exception/FixedFormatIOException::<init> → NO_COVERAGE

317

1.1
Location : withReader
Killed by : com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources]/[method:readNullPath_npeMessageNamesParameter()]
replaced call to java/util/Objects::requireNonNull with argument → KILLED

2.2
Location : withReader
Killed by : com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources]/[method:readNullPath_npeMessageNamesParameter()]
removed call to java/util/Objects::requireNonNull → KILLED

318

1.1
Location : withReader
Killed by : none
replaced call to java/util/Objects::requireNonNull with argument → SURVIVED
Covering tests

2.2
Location : withReader
Killed by : none
removed call to java/util/Objects::requireNonNull → SURVIVED Covering tests

319

1.1
Location : withReader
Killed by : com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources]/[method:nonExistentPathThrowsWithPathInMessage()]
Substituted 0 with 1 → KILLED

2.2
Location : withReader
Killed by : com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources]/[method:readsFromPath()]
removed call to java/io/InputStreamReader::<init> → KILLED

3.3
Location : withReader
Killed by : com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources]/[method:nonExistentPathThrowsWithPathInMessage()]
removed call to java/nio/file/Files::newInputStream → KILLED

320

1.1
Location : withReader
Killed by : com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources]/[method:readsFromPath()]
replaced call to java/util/function/Function::apply with argument → KILLED

2.2
Location : withReader
Killed by : com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources]/[method:readsFromPath()]
removed call to java/util/function/Function::apply → KILLED

3.3
Location : withReader
Killed by : com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources]/[method:readsFromPath()]
replaced return value with null for com/ancientprogramming/fixedformat4j/io/read/FixedFormatReader::withReader → KILLED

322

1.1
Location : withReader
Killed by : com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources]/[method:nonExistentPathThrowsWithPathInMessage()]
Substituted 0 with 1 → KILLED

2.2
Location : withReader
Killed by : com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources]/[method:nonExistentPathThrowsWithPathInMessage()]
removed call to com/ancientprogramming/fixedformat4j/exception/FixedFormatIOException::<init> → KILLED

3.3
Location : withReader
Killed by : com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources]/[method:nonExistentPathThrowsWithPathInMessage()]
removed call to java/lang/String::format → KILLED

4.4
Location : withReader
Killed by : com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources]/[method:nonExistentPathThrowsWithPathInMessage()]
Substituted 1 with 0 → KILLED

5.5
Location : withReader
Killed by : com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderInputSources]/[method:nonExistentPathThrowsWithPathInMessage()]
replaced call to java/lang/String::format with argument → KILLED

Active mutators

Tests examined


Report generated by PIT 1.23.1 support