FixedFormatReaderBuilder.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.format.FixedFormatManager;
19
import com.ancientprogramming.fixedformat4j.format.impl.FixedFormatManagerImpl;
20
21
import java.util.ArrayList;
22
import java.util.List;
23
import java.util.Objects;
24
import java.util.function.Predicate;
25
26
/**
27
 * Fluent builder for {@link FixedFormatReader}.
28
 *
29
 * <p>Obtain an instance via {@link FixedFormatReader#builder()}.
30
 * At minimum, one mapping must be added via {@link #addMapping} before calling {@link #build()}.</p>
31
 *
32
 * @author Jacob von Eyben - <a href="https://eybenconsult.com">https://eybenconsult.com</a>
33
 * @since 1.8.0
34
 */
35
public final class FixedFormatReaderBuilder {
36
37 2 1. <init> : Removed assignment to member variable mappings → KILLED
2. <init> : removed call to java/util/ArrayList::<init> → KILLED
  final List<RecordMapping<?>> mappings = new ArrayList<>();
38 2 1. <init> : removed call to com/ancientprogramming/fixedformat4j/io/read/MultiMatchStrategy::firstMatch → KILLED
2. <init> : Removed assignment to member variable multiMatchStrategy → KILLED
  MultiMatchStrategy multiMatchStrategy = MultiMatchStrategy.firstMatch();
39 2 1. <init> : Removed assignment to member variable unmatchStrategy → KILLED
2. <init> : removed call to com/ancientprogramming/fixedformat4j/io/read/UnmatchStrategy::throwException → KILLED
  UnmatchStrategy unmatchStrategy = UnmatchStrategy.throwException();
40 2 1. <init> : removed call to com/ancientprogramming/fixedformat4j/io/read/ParseErrorStrategy::throwException → SURVIVED
2. <init> : Removed assignment to member variable parseErrorStrategy → SURVIVED
  ParseErrorStrategy parseErrorStrategy = ParseErrorStrategy.throwException();
41 3 1. lambda$new$0 : Substituted 0 with 1 → KILLED
2. <init> : Removed assignment to member variable exclusionFilter → KILLED
3. lambda$new$0 : replaced boolean return with true for com/ancientprogramming/fixedformat4j/io/read/FixedFormatReaderBuilder::lambda$new$0 → KILLED
  Predicate<String> exclusionFilter = line -> false;
42 2 1. <init> : removed call to com/ancientprogramming/fixedformat4j/format/impl/FixedFormatManagerImpl::create → KILLED
2. <init> : Removed assignment to member variable manager → KILLED
  FixedFormatManager manager = FixedFormatManagerImpl.create();
43
44
  FixedFormatReaderBuilder() {}
45
46
  /**
47
   * Registers a mapping that routes lines matching {@code pattern} to {@code clazz}.
48
   * When more than one mapping matches a line, the resolution order is "most detailed first,
49
   * then registration order" — see {@link MultiMatchStrategy} for details.
50
   *
51
   * @param clazz   the {@code @Record}-annotated class to instantiate when {@code pattern} matches
52
   * @param pattern the {@link LinePattern} that decides which lines are parsed as {@code clazz};
53
   *                construct via {@link LinePattern#prefix(String)},
54
   *                {@link LinePattern#positional(int[], String)}, or
55
   *                {@link LinePattern#matchAll()}
56
   * @return this builder
57
   * @throws NullPointerException     if {@code clazz} or {@code pattern} is {@code null}
58
   * @throws IllegalArgumentException if {@code clazz} is not annotated with {@code @Record}
59
   */
60
  public <R> FixedFormatReaderBuilder addMapping(Class<R> clazz, LinePattern pattern) {
61 2 1. addMapping : removed call to com/ancientprogramming/fixedformat4j/io/read/RecordMapping::<init> → KILLED
2. addMapping : removed call to java/util/List::add → KILLED
    mappings.add(new RecordMapping<>(clazz, pattern));
62 1 1. addMapping : replaced return value with null for com/ancientprogramming/fixedformat4j/io/read/FixedFormatReaderBuilder::addMapping → KILLED
    return this;
63
  }
64
65
  /**
66
   * Sets the strategy applied when more than one pattern matches a line.
67
   * Defaults to {@link MultiMatchStrategy#firstMatch()}.
68
   *
69
   * @param strategy the multi-match strategy to use; must not be {@code null}
70
   * @return this builder
71
   */
72
  public FixedFormatReaderBuilder multiMatchStrategy(MultiMatchStrategy strategy) {
73 2 1. multiMatchStrategy : replaced call to java/util/Objects::requireNonNull with argument → KILLED
2. multiMatchStrategy : removed call to java/util/Objects::requireNonNull → KILLED
    Objects.requireNonNull(strategy, "strategy must not be null");
74 1 1. multiMatchStrategy : Removed assignment to member variable multiMatchStrategy → KILLED
    this.multiMatchStrategy = strategy;
75 1 1. multiMatchStrategy : replaced return value with null for com/ancientprogramming/fixedformat4j/io/read/FixedFormatReaderBuilder::multiMatchStrategy → KILLED
    return this;
76
  }
77
78
  /**
79
   * Sets the strategy applied when no pattern matches a line.
80
   * Defaults to {@link UnmatchStrategy#throwException()}.
81
   *
82
   * @param strategy the unmatched strategy to use; must not be {@code null}
83
   * @return this builder
84
   */
85
  public FixedFormatReaderBuilder unmatchStrategy(UnmatchStrategy strategy) {
86 2 1. unmatchStrategy : replaced call to java/util/Objects::requireNonNull with argument → KILLED
2. unmatchStrategy : removed call to java/util/Objects::requireNonNull → KILLED
    Objects.requireNonNull(strategy, "strategy must not be null");
87 1 1. unmatchStrategy : Removed assignment to member variable unmatchStrategy → KILLED
    this.unmatchStrategy = strategy;
88 1 1. unmatchStrategy : replaced return value with null for com/ancientprogramming/fixedformat4j/io/read/FixedFormatReaderBuilder::unmatchStrategy → KILLED
    return this;
89
  }
90
91
  /**
92
   * Sets the strategy applied when a matched line fails to parse.
93
   * Defaults to {@link ParseErrorStrategy#throwException()}.
94
   *
95
   * @param strategy the parse-error strategy to use; must not be {@code null}
96
   * @return this builder
97
   */
98
  public FixedFormatReaderBuilder parseErrorStrategy(ParseErrorStrategy strategy) {
99 2 1. parseErrorStrategy : replaced call to java/util/Objects::requireNonNull with argument → KILLED
2. parseErrorStrategy : removed call to java/util/Objects::requireNonNull → KILLED
    Objects.requireNonNull(strategy, "strategy must not be null");
100 1 1. parseErrorStrategy : Removed assignment to member variable parseErrorStrategy → KILLED
    this.parseErrorStrategy = strategy;
101 1 1. parseErrorStrategy : replaced return value with null for com/ancientprogramming/fixedformat4j/io/read/FixedFormatReaderBuilder::parseErrorStrategy → KILLED
    return this;
102
  }
103
104
  /**
105
   * Registers a pre-match line exclusion predicate. Lines for which the predicate returns
106
   * {@code true} are skipped entirely before pattern matching, bypassing the
107
   * {@link UnmatchStrategy}.
108
   *
109
   * <p>Use this to discard structural lines that should never be parsed — for example,
110
   * comment lines or blank separators:</p>
111
   * <pre>{@code
112
   * .excludeLines(line -> line.startsWith("#") || line.isBlank())
113
   * }</pre>
114
   *
115
   * @param predicate returns {@code true} for lines that should be skipped
116
   * @return this builder
117
   */
118
  public FixedFormatReaderBuilder excludeLines(Predicate<String> predicate) {
119 2 1. excludeLines : replaced call to java/util/Objects::requireNonNull with argument → KILLED
2. excludeLines : removed call to java/util/Objects::requireNonNull → KILLED
    Objects.requireNonNull(predicate, "predicate must not be null");
120 1 1. excludeLines : Removed assignment to member variable exclusionFilter → KILLED
    this.exclusionFilter = predicate;
121 1 1. excludeLines : replaced return value with null for com/ancientprogramming/fixedformat4j/io/read/FixedFormatReaderBuilder::excludeLines → KILLED
    return this;
122
  }
123
124
  /**
125
   * Overrides the {@link FixedFormatManager} used to parse each line into a record object.
126
   *
127
   * @param manager the manager to use; must not be {@code null}
128
   * @return this builder
129
   */
130
  public FixedFormatReaderBuilder manager(FixedFormatManager manager) {
131 2 1. manager : replaced call to java/util/Objects::requireNonNull with argument → KILLED
2. manager : removed call to java/util/Objects::requireNonNull → KILLED
    Objects.requireNonNull(manager, "manager must not be null");
132 1 1. manager : Removed assignment to member variable manager → KILLED
    this.manager = manager;
133 1 1. manager : replaced return value with null for com/ancientprogramming/fixedformat4j/io/read/FixedFormatReaderBuilder::manager → KILLED
    return this;
134
  }
135
136
  /**
137
   * Builds and returns a configured {@link FixedFormatReader}.
138
   *
139
   * @return a new reader instance
140
   * @throws IllegalArgumentException if no mappings have been added
141
   */
142
  public FixedFormatReader build() {
143 4 1. build : removed conditional - replaced equality check with false → KILLED
2. build : removed conditional - replaced equality check with true → KILLED
3. build : removed call to java/util/List::isEmpty → KILLED
4. build : negated conditional → KILLED
    if (mappings.isEmpty()) {
144 1 1. build : removed call to java/lang/IllegalArgumentException::<init> → KILLED
      throw new IllegalArgumentException("At least one mapping must be provided");
145
    }
146 2 1. build : replaced return value with null for com/ancientprogramming/fixedformat4j/io/read/FixedFormatReaderBuilder::build → KILLED
2. build : removed call to com/ancientprogramming/fixedformat4j/io/read/FixedFormatReader::<init> → KILLED
    return new FixedFormatReader(this);
147
  }
148
149
  RecordMappingIndex buildIndex() {
150 1 1. buildIndex : removed call to com/ancientprogramming/fixedformat4j/io/read/RecordMappingIndex::builder → KILLED
    RecordMappingIndex.Builder ib = RecordMappingIndex.builder();
151
    for (RecordMapping<?> mapping : mappings) {
152 3 1. buildIndex : replaced call to com/ancientprogramming/fixedformat4j/io/read/RecordMappingIndex$Builder::add with receiver → KILLED
2. buildIndex : removed call to com/ancientprogramming/fixedformat4j/io/read/RecordMappingIndex$Builder::add → KILLED
3. buildIndex : removed call to com/ancientprogramming/fixedformat4j/io/read/RecordMapping::getPattern → KILLED
      ib.add(mapping.getPattern(), mapping);
153
    }
154 2 1. buildIndex : replaced return value with null for com/ancientprogramming/fixedformat4j/io/read/FixedFormatReaderBuilder::buildIndex → KILLED
2. buildIndex : removed call to com/ancientprogramming/fixedformat4j/io/read/RecordMappingIndex$Builder::build → KILLED
    return ib.build();
155
  }
156
}

Mutations

37

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

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

38

1.1
Location : <init>
Killed by : com.ancientprogramming.fixedformat4j.issues.TestIssue97RestOfLine.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.issues.TestIssue97RestOfLine]/[method:roundTrip_heterogeneousFile_allLinesPreservedVerbatim()]
removed call to com/ancientprogramming/fixedformat4j/io/read/MultiMatchStrategy::firstMatch → KILLED

2.2
Location : <init>
Killed by : com.ancientprogramming.fixedformat4j.issues.TestIssue97RestOfLine.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.issues.TestIssue97RestOfLine]/[method:roundTrip_heterogeneousFile_allLinesPreservedVerbatim()]
Removed assignment to member variable multiMatchStrategy → KILLED

39

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

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

40

1.1
Location : <init>
Killed by : none
removed call to com/ancientprogramming/fixedformat4j/io/read/ParseErrorStrategy::throwException → SURVIVED
Covering tests

2.2
Location : <init>
Killed by : none
Removed assignment to member variable parseErrorStrategy → SURVIVED Covering tests

41

1.1
Location : lambda$new$0
Killed by : com.ancientprogramming.fixedformat4j.io.TestStrategiesAndHandlers.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestStrategiesAndHandlers]/[method:multiMatchThrowOnAmbiguityThrowsWhenTwoPatternsMatch()]
Substituted 0 with 1 → 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 exclusionFilter → KILLED

3.3
Location : lambda$new$0
Killed by : com.ancientprogramming.fixedformat4j.io.TestStrategiesAndHandlers.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestStrategiesAndHandlers]/[method:multiMatchThrowOnAmbiguityThrowsWhenTwoPatternsMatch()]
replaced boolean return with true for com/ancientprogramming/fixedformat4j/io/read/FixedFormatReaderBuilder::lambda$new$0 → KILLED

42

1.1
Location : <init>
Killed by : com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderUnmatched.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderUnmatched]/[method:strategyNotInvokedForMatchedLines()]
removed call to com/ancientprogramming/fixedformat4j/format/impl/FixedFormatManagerImpl::create → KILLED

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

61

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

2.2
Location : addMapping
Killed by : com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderBuilder.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderBuilder]/[method:buildsSuccessfullyWithOneMapping()]
removed call to java/util/List::add → KILLED

62

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

73

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

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

74

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

75

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

86

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

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

87

1.1
Location : unmatchStrategy
Killed by : com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderUnmatched.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderUnmatched]/[method:customLambdaStrategyReceivesLineNumberAndContent()]
Removed assignment to member variable unmatchStrategy → KILLED

88

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

99

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

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

100

1.1
Location : parseErrorStrategy
Killed by : com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderParseError.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderParseError]/[method:skipAndLogSkipsBadLineAndContinuesParsing()]
Removed assignment to member variable parseErrorStrategy → KILLED

101

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

119

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

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

120

1.1
Location : excludeLines
Killed by : com.ancientprogramming.fixedformat4j.io.TestStrategiesAndHandlers.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestStrategiesAndHandlers]/[method:excludeLinesLogsDebugWithLineNumberAndContent()]
Removed assignment to member variable exclusionFilter → KILLED

121

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

131

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

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

132

1.1
Location : manager
Killed by : com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderParseError.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderParseError]/[method:throwExceptionStrategy_doesNotContinuePastBadLine()]
Removed assignment to member variable manager → KILLED

133

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

143

1.1
Location : build
Killed by : com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderBuilder.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderBuilder]/[method:throwsWhenNoMappings()]
removed conditional - replaced equality check with false → KILLED

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

3.3
Location : build
Killed by : com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderBuilder.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderBuilder]/[method:throwsWhenNoMappings()]
removed call to java/util/List::isEmpty → KILLED

4.4
Location : build
Killed by : com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderBuilder.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderBuilder]/[method:throwsWhenNoMappings()]
negated conditional → KILLED

144

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

146

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

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

150

1.1
Location : buildIndex
Killed by : com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderBuilder.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderBuilder]/[method:buildsSuccessfullyWithOneMapping()]
removed call to com/ancientprogramming/fixedformat4j/io/read/RecordMappingIndex::builder → KILLED

152

1.1
Location : buildIndex
Killed by : com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderParseError.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderParseError]/[method:skipAndLogSkipsBadLineAndContinuesParsing()]
replaced call to com/ancientprogramming/fixedformat4j/io/read/RecordMappingIndex$Builder::add with receiver → KILLED

2.2
Location : buildIndex
Killed by : com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderParseError.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderParseError]/[method:skipAndLogSkipsBadLineAndContinuesParsing()]
removed call to com/ancientprogramming/fixedformat4j/io/read/RecordMappingIndex$Builder::add → KILLED

3.3
Location : buildIndex
Killed by : com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderBuilder.[engine:junit-jupiter]/[class:com.ancientprogramming.fixedformat4j.io.TestFixedFormatReaderBuilder]/[method:buildsSuccessfullyWithOneMapping()]
removed call to com/ancientprogramming/fixedformat4j/io/read/RecordMapping::getPattern → KILLED

154

1.1
Location : buildIndex
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/FixedFormatReaderBuilder::buildIndex → KILLED

2.2
Location : buildIndex
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/RecordMappingIndex$Builder::build → KILLED

Active mutators

Tests examined


Report generated by PIT 1.23.1 support