StandardParagraph.java

1
package pro.verron.officestamper.core;
2
3
import jakarta.xml.bind.JAXBElement;
4
import org.docx4j.wml.*;
5
import pro.verron.officestamper.api.*;
6
import pro.verron.officestamper.utils.WmlFactory;
7
import pro.verron.officestamper.utils.WmlUtils;
8
9
import java.math.BigInteger;
10
import java.util.*;
11
import java.util.function.Consumer;
12
13
import static java.util.Arrays.stream;
14
import static java.util.stream.Collectors.joining;
15
import static pro.verron.officestamper.api.OfficeStamperException.throwing;
16
import static pro.verron.officestamper.utils.WmlUtils.getFirstParentWithClass;
17
18
/**
19
 * Represents a wrapper for managing and manipulating DOCX paragraph elements.
20
 * This class provides methods to manipulate the underlying paragraph content,
21
 * process placeholders, and interact with runs within the paragraph.
22
 */
23
public class StandardParagraph
24
        implements Paragraph {
25
26
    private static final Random RANDOM = new Random();
27
    private final DocxPart source;
28
    private final List<Object> contents;
29
    private final P p;
30
    private List<StandardRun> runs;
31
32
    /**
33
     * Constructs a new instance of the StandardParagraph class.
34
     *
35
     * @param source           the source DocxPart that contains the paragraph content.
36
     * @param paragraphContent the list of objects representing the paragraph content.
37
     * @param p                the P object representing the paragraph's structure.
38
     */
39
    private StandardParagraph(DocxPart source, List<Object> paragraphContent, P p) {
40
        this.source = source;
41
        this.contents = paragraphContent;
42
        this.p = p;
43
        this.runs = initializeRunList(contents);
44
    }
45
46
    /**
47
     * Initializes a list of StandardRun objects based on the given list of objects.
48
     * Iterates over the provided list of objects, identifies instances of type R,
49
     * and constructs StandardRun objects while keeping track of their lengths.
50
     *
51
     * @param objects the list of objects to be iterated over and processed into StandardRun instances
52
     *
53
     * @return a list of StandardRun objects created from the given input list
54
     */
55
    private static List<StandardRun> initializeRunList(List<Object> objects) {
56
        var currentLength = 0;
57
        var runList = new ArrayList<StandardRun>(objects.size());
58 2 1. initializeRunList : changed conditional boundary → KILLED
2. initializeRunList : negated conditional → KILLED
        for (int i = 0; i < objects.size(); i++) {
59
            var object = objects.get(i);
60 1 1. initializeRunList : negated conditional → KILLED
            if (object instanceof R run) {
61
                var currentRun = new StandardRun(currentLength, i, run);
62
                runList.add(currentRun);
63 1 1. initializeRunList : Replaced integer addition with subtraction → KILLED
                currentLength += currentRun.length();
64
            }
65
        }
66 1 1. initializeRunList : replaced return value with Collections.emptyList for pro/verron/officestamper/core/StandardParagraph::initializeRunList → KILLED
        return runList;
67
    }
68
69
    /**
70
     * Creates a new instance of StandardParagraph using the provided DocxPart and P objects.
71
     *
72
     * @param source    the source DocxPart containing the paragraph.
73
     * @param paragraph the P object representing the structure and content of the paragraph.
74
     *
75
     * @return a new instance of StandardParagraph constructed based on the provided source and paragraph.
76
     */
77
    public static StandardParagraph from(DocxPart source, P paragraph) {
78 1 1. from : replaced return value with null for pro/verron/officestamper/core/StandardParagraph::from → KILLED
        return new StandardParagraph(source, paragraph.getContent(), paragraph);
79
    }
80
81
    /**
82
     * Creates a new instance of StandardParagraph from the provided DocxPart and CTSdtContentRun objects.
83
     *
84
     * @param source    the source DocxPart containing the paragraph content.
85
     * @param paragraph the CTSdtContentRun object representing the content of the paragraph.
86
     *
87
     * @return a new instance of StandardParagraph constructed based on the provided DocxPart and paragraph.
88
     */
89
    public static StandardParagraph from(DocxPart source, CTSdtContentRun paragraph) {
90
        var parent = (SdtRun) paragraph.getParent();
91
        var parentParent = (P) parent.getParent();
92 1 1. from : replaced return value with null for pro/verron/officestamper/core/StandardParagraph::from → KILLED
        return new StandardParagraph(source, paragraph.getContent(), parentParent);
93
    }
94
95
    @Override
96
    public ProcessorContext processorContext(Placeholder placeholder) {
97
        var comment = comment(placeholder);
98
        var firstRun = (R) contents.getFirst();
99 1 1. processorContext : replaced return value with null for pro/verron/officestamper/core/StandardParagraph::processorContext → KILLED
        return new ProcessorContext(this, firstRun, comment, placeholder);
100
    }
101
102
    @Override
103
    public void replace(List<P> toRemove, List<P> toAdd) {
104
        var siblings = siblings();
105
        int index = siblings.indexOf(p);
106 2 1. replace : changed conditional boundary → KILLED
2. replace : negated conditional → KILLED
        if (index < 0) throw new OfficeStamperException("Impossible");
107
        siblings.addAll(index, toAdd);
108
        siblings.removeAll(toRemove);
109
    }
110
111
    private List<Object> siblings() {
112 1 1. siblings : replaced return value with Collections.emptyList for pro/verron/officestamper/core/StandardParagraph::siblings → KILLED
        return this.parent(ContentAccessor.class, 1)
113
                   .orElseThrow(throwing("This paragraph direct parent is not a classic parent object"))
114
                   .getContent();
115
    }
116
117
    private <T> Optional<T> parent(Class<T> aClass, int depth) {
118 1 1. parent : replaced return value with Optional.empty for pro/verron/officestamper/core/StandardParagraph::parent → KILLED
        return getFirstParentWithClass(p, aClass, depth);
119
    }
120
121
    @Override
122
    public void remove() {
123 1 1. remove : removed call to pro/verron/officestamper/utils/WmlUtils::remove → KILLED
        WmlUtils.remove(p);
124
    }
125
126
    @Deprecated(since = "2.6", forRemoval = true)
127
    @Override
128
    public P getP() {
129 1 1. getP : replaced return value with null for pro/verron/officestamper/core/StandardParagraph::getP → NO_COVERAGE
        return p;
130
    }
131
132
    /**
133
     * Replaces the given expression with the replacement object within the paragraph.
134
     * The replacement object must be a valid DOCX4J Object.
135
     *
136
     * @param placeholder the expression to be replaced.
137
     * @param replacement the object to replace the expression.
138
     */
139
    @Override
140
    public void replace(Placeholder placeholder, Object replacement) {
141
        assert WmlUtils.serializable(replacement);
142
        switch (replacement) {
143 1 1. replace : removed call to pro/verron/officestamper/core/StandardParagraph::replaceWithRun → KILLED
            case R run -> replaceWithRun(placeholder, run);
144 1 1. replace : removed call to pro/verron/officestamper/core/StandardParagraph::replaceWithBr → KILLED
            case Br br -> replaceWithBr(placeholder, br);
145
            default -> throw new AssertionError("Replacement must be a R or Br, but was a " + replacement.getClass());
146
        }
147
    }
148
149
    private void replaceWithRun(Placeholder placeholder, R replacement) {
150
        var text = asString();
151
        String full = placeholder.expression();
152
153
        int matchStartIndex = text.indexOf(full);
154 1 1. replaceWithRun : negated conditional → KILLED
        if (matchStartIndex == -1) {
155
            // nothing to replace
156
            return;
157
        }
158 1 1. replaceWithRun : Replaced integer addition with subtraction → KILLED
        int matchEndIndex = matchStartIndex + full.length();
159
        List<StandardRun> affectedRuns = getAffectedRuns(matchStartIndex, matchEndIndex);
160
161 1 1. replaceWithRun : negated conditional → KILLED
        boolean singleRun = affectedRuns.size() == 1;
162
163 1 1. replaceWithRun : negated conditional → KILLED
        if (singleRun) {
164
            StandardRun run = affectedRuns.getFirst();
165
166 1 1. replaceWithRun : negated conditional → KILLED
            boolean expressionSpansCompleteRun = full.length() == run.length();
167 1 1. replaceWithRun : negated conditional → KILLED
            boolean expressionAtStartOfRun = matchStartIndex == run.startIndex();
168 1 1. replaceWithRun : negated conditional → KILLED
            boolean expressionAtEndOfRun = matchEndIndex == run.endIndex();
169 4 1. replaceWithRun : changed conditional boundary → SURVIVED
2. replaceWithRun : changed conditional boundary → SURVIVED
3. replaceWithRun : negated conditional → KILLED
4. replaceWithRun : negated conditional → KILLED
            boolean expressionWithinRun = matchStartIndex > run.startIndex() && matchEndIndex <= run.endIndex();
170
171 1 1. replaceWithRun : removed call to org/docx4j/wml/R::setRPr → SURVIVED
            replacement.setRPr(run.getPr());
172
173 1 1. replaceWithRun : negated conditional → KILLED
            if (expressionSpansCompleteRun) {
174
                contents.set(run.indexInParent(), replacement);
175
            }
176 1 1. replaceWithRun : negated conditional → KILLED
            else if (expressionAtStartOfRun) {
177 1 1. replaceWithRun : removed call to pro/verron/officestamper/core/StandardParagraph$StandardRun::replace → NO_COVERAGE
                run.replace(matchStartIndex, matchEndIndex, "");
178 1 1. replaceWithRun : removed call to java/util/List::add → NO_COVERAGE
                contents.add(run.indexInParent(), replacement);
179
            }
180 1 1. replaceWithRun : negated conditional → KILLED
            else if (expressionAtEndOfRun) {
181 1 1. replaceWithRun : removed call to pro/verron/officestamper/core/StandardParagraph$StandardRun::replace → KILLED
                run.replace(matchStartIndex, matchEndIndex, "");
182 2 1. replaceWithRun : Replaced integer addition with subtraction → KILLED
2. replaceWithRun : removed call to java/util/List::add → KILLED
                contents.add(run.indexInParent() + 1, replacement);
183
            }
184 1 1. replaceWithRun : negated conditional → KILLED
            else if (expressionWithinRun) {
185
                int startIndex = run.indexOf(full);
186 1 1. replaceWithRun : Replaced integer addition with subtraction → KILLED
                int endIndex = startIndex + full.length();
187
                var newStartRun = RunUtil.create(run.substring(0, startIndex),
188
                        run.run()
189
                           .getRPr());
190
                var newEndRun = RunUtil.create(run.substring(endIndex),
191
                        run.run()
192
                           .getRPr());
193
                contents.remove(run.indexInParent());
194
                contents.addAll(run.indexInParent(), List.of(newStartRun, replacement, newEndRun));
195
            }
196
        }
197
        else {
198
            StandardRun firstRun = affectedRuns.getFirst();
199
            StandardRun lastRun = affectedRuns.getLast();
200 1 1. replaceWithRun : removed call to org/docx4j/wml/R::setRPr → KILLED
            replacement.setRPr(firstRun.getPr());
201 1 1. replaceWithRun : removed call to pro/verron/officestamper/core/StandardParagraph::removeExpression → KILLED
            removeExpression(firstRun, matchStartIndex, matchEndIndex, lastRun, affectedRuns);
202
            // add replacement run between first and last run
203 2 1. replaceWithRun : Replaced integer addition with subtraction → KILLED
2. replaceWithRun : removed call to java/util/List::add → KILLED
            contents.add(firstRun.indexInParent() + 1, replacement);
204
        }
205
        this.runs = initializeRunList(contents);
206
    }
207
208
    private void replaceWithBr(Placeholder placeholder, Br br) {
209
        for (StandardRun standardRun : runs) {
210
            var runContentIterator = standardRun.run()
211
                                                .getContent()
212
                                                .listIterator();
213 1 1. replaceWithBr : negated conditional → KILLED
            while (runContentIterator.hasNext()) {
214
                Object element = runContentIterator.next();
215 1 1. replaceWithBr : negated conditional → KILLED
                if (element instanceof JAXBElement<?> jaxbElement && !jaxbElement.getName()
216
                                                                                 .getLocalPart()
217 1 1. replaceWithBr : negated conditional → KILLED
                                                                                 .equals("instrText"))
218
                    element = jaxbElement.getValue();
219 2 1. replaceWithBr : removed call to pro/verron/officestamper/core/StandardParagraph::replaceWithBr → KILLED
2. replaceWithBr : negated conditional → KILLED
                if (element instanceof Text text) replaceWithBr(placeholder, br, text, runContentIterator);
220
            }
221
        }
222
    }
223
224
    private List<StandardRun> getAffectedRuns(int startIndex, int endIndex) {
225 1 1. getAffectedRuns : replaced return value with Collections.emptyList for pro/verron/officestamper/core/StandardParagraph::getAffectedRuns → KILLED
        return runs.stream()
226 2 1. lambda$getAffectedRuns$0 : replaced boolean return with true for pro/verron/officestamper/core/StandardParagraph::lambda$getAffectedRuns$0 → KILLED
2. lambda$getAffectedRuns$0 : replaced boolean return with false for pro/verron/officestamper/core/StandardParagraph::lambda$getAffectedRuns$0 → KILLED
                   .filter(run -> run.isTouchedByRange(startIndex, endIndex))
227
                   .toList();
228
    }
229
230
    private void removeExpression(
231
            StandardRun firstRun,
232
            int matchStartIndex,
233
            int matchEndIndex,
234
            StandardRun lastRun,
235
            List<StandardRun> affectedRuns
236
    ) {
237
        // remove the expression from the first run
238 1 1. removeExpression : removed call to pro/verron/officestamper/core/StandardParagraph$StandardRun::replace → KILLED
        firstRun.replace(matchStartIndex, matchEndIndex, "");
239
        // remove all runs between first and last
240
        for (StandardRun run : affectedRuns) {
241 2 1. removeExpression : negated conditional → KILLED
2. removeExpression : negated conditional → KILLED
            if (!Objects.equals(run, firstRun) && !Objects.equals(run, lastRun)) {
242
                contents.remove(run.run());
243
            }
244
        }
245
        // remove the expression from the last run
246 1 1. removeExpression : removed call to pro/verron/officestamper/core/StandardParagraph$StandardRun::replace → KILLED
        lastRun.replace(matchStartIndex, matchEndIndex, "");
247
    }
248
249
    private static void replaceWithBr(
250
            Placeholder placeholder,
251
            Br br,
252
            Text text,
253
            ListIterator<Object> runContentIterator
254
    ) {
255
        var value = text.getValue();
256 1 1. replaceWithBr : removed call to java/util/ListIterator::remove → KILLED
        runContentIterator.remove();
257
        var runLinebreakIterator = stream(value.split(placeholder.expression())).iterator();
258 1 1. replaceWithBr : negated conditional → KILLED
        while (runLinebreakIterator.hasNext()) {
259
            var subText = WmlFactory.newText(runLinebreakIterator.next());
260 1 1. replaceWithBr : removed call to java/util/ListIterator::add → KILLED
            runContentIterator.add(subText);
261 2 1. replaceWithBr : negated conditional → KILLED
2. replaceWithBr : removed call to java/util/ListIterator::add → KILLED
            if (runLinebreakIterator.hasNext()) runContentIterator.add(br);
262
        }
263
    }
264
265
    /**
266
     * Returns the aggregated text over all runs.
267
     *
268
     * @return the text of all runs.
269
     */
270
    @Override
271
    public String asString() {
272 1 1. asString : replaced return value with "" for pro/verron/officestamper/core/StandardParagraph::asString → KILLED
        return runs.stream()
273
                   .map(StandardRun::getText)
274
                   .collect(joining());
275
    }
276
277
    @Override
278
    public void apply(Consumer<P> pConsumer) {
279 1 1. apply : removed call to java/util/function/Consumer::accept → KILLED
        pConsumer.accept(p);
280
    }
281
282
    @Override
283
    public <T> Optional<T> parent(Class<T> aClass) {
284 1 1. parent : replaced return value with Optional.empty for pro/verron/officestamper/core/StandardParagraph::parent → KILLED
        return parent(aClass, Integer.MAX_VALUE);
285
    }
286
287
    @Override
288
    public Collection<Comments.Comment> getComment() {
289 1 1. getComment : replaced return value with Collections.emptyList for pro/verron/officestamper/core/StandardParagraph::getComment → KILLED
        return CommentUtil.getCommentFor(contents, source.document());
290
    }
291
292
    private Comment comment(Placeholder placeholder) {
293
        var id = new BigInteger(16, RANDOM);
294 1 1. comment : replaced return value with null for pro/verron/officestamper/core/StandardParagraph::comment → KILLED
        return StandardComment.create(source.document(), p, placeholder, id);
295
    }
296
297
    /**
298
     * {@inheritDoc}
299
     */
300
    @Override
301
    public String toString() {
302 1 1. toString : replaced return value with "" for pro/verron/officestamper/core/StandardParagraph::toString → NO_COVERAGE
        return asString();
303
    }
304
305
    /**
306
     * Represents a run (i.e., a text fragment) in a paragraph. The run is indexed relative to the containing paragraph
307
     * and also relative to the containing document.
308
     *
309
     * @param startIndex    the start index of the run relative to the containing paragraph.
310
     * @param indexInParent the index of the run relative to the containing document.
311
     * @param run           the run itself.
312
     *
313
     * @author Joseph Verron
314
     * @author Tom Hombergs
315
     * @version ${version}
316
     * @since 1.0.0
317
     */
318
    public record StandardRun(int startIndex, int indexInParent, R run) {
319
320
        /**
321
         * Retrieves a substring from the text content of this run, starting at the specified begin index.
322
         *
323
         * @param beginIndex the beginning index, inclusive, for the substring.
324
         *
325
         * @return the substring of the run's text starting from the specified begin index to the end of the text.
326
         */
327
        public String substring(int beginIndex) {
328 1 1. substring : replaced return value with "" for pro/verron/officestamper/core/StandardParagraph$StandardRun::substring → KILLED
            return getText().substring(beginIndex);
329
        }
330
331
        /**
332
         * Retrieves a substring from the text content of this run, starting
333
         * at the specified begin index and ending at the specified end index.
334
         *
335
         * @param beginIndex the beginning index, inclusive, for the substring.
336
         * @param endIndex   the ending index, exclusive, for the substring.
337
         *
338
         * @return the substring of the run's text from the specified begin index to the specified end index.
339
         */
340
        public String substring(int beginIndex, int endIndex) {
341 1 1. substring : replaced return value with "" for pro/verron/officestamper/core/StandardParagraph$StandardRun::substring → KILLED
            return getText().substring(beginIndex, endIndex);
342
        }
343
344
        /**
345
         * Finds the index of the first occurrence of the specified substring in the text of the current run.
346
         *
347
         * @param full the substring to search for within the run's text.
348
         *
349
         * @return the index of the first occurrence of the specified substring,
350
         * or –1 if the substring is not found.
351
         */
352
        public int indexOf(String full) {
353 1 1. indexOf : replaced int return with 0 for pro/verron/officestamper/core/StandardParagraph$StandardRun::indexOf → KILLED
            return getText().indexOf(full);
354
        }
355
356
        /**
357
         * Returns the text string of a run.
358
         *
359
         * @return {@link String} representation of the run.
360
         */
361
        public String getText() {
362 1 1. getText : replaced return value with "" for pro/verron/officestamper/core/StandardParagraph$StandardRun::getText → KILLED
            return RunUtil.getText(run);
363
        }
364
365
        /**
366
         * Retrieves the properties associated with this run.
367
         *
368
         * @return the {@link RPr} object representing the properties of the run.
369
         */
370
        public RPr getPr() {
371 1 1. getPr : replaced return value with null for pro/verron/officestamper/core/StandardParagraph$StandardRun::getPr → KILLED
            return run.getRPr();
372
        }
373
374
        /**
375
         * Determines whether the current run is affected by the specified range of global start and end indices.
376
         * A run is considered "touched" if any part of it overlaps with the given range.
377
         *
378
         * @param globalStartIndex the global start index of the range.
379
         * @param globalEndIndex   the global end index of the range.
380
         *
381
         * @return {@code true} if the current run is touched by the specified range; {@code false} otherwise.
382
         */
383
        public boolean isTouchedByRange(int globalStartIndex, int globalEndIndex) {
384 4 1. isTouchedByRange : changed conditional boundary → SURVIVED
2. isTouchedByRange : negated conditional → KILLED
3. isTouchedByRange : negated conditional → KILLED
4. isTouchedByRange : changed conditional boundary → KILLED
            var startsInRange = (globalStartIndex < startIndex) && (startIndex <= globalEndIndex);
385 4 1. isTouchedByRange : changed conditional boundary → SURVIVED
2. isTouchedByRange : changed conditional boundary → KILLED
3. isTouchedByRange : negated conditional → KILLED
4. isTouchedByRange : negated conditional → KILLED
            var endsInRange = (globalStartIndex < endIndex()) && (endIndex() <= globalEndIndex);
386 4 1. isTouchedByRange : changed conditional boundary → SURVIVED
2. isTouchedByRange : changed conditional boundary → SURVIVED
3. isTouchedByRange : negated conditional → KILLED
4. isTouchedByRange : negated conditional → KILLED
            var rangeFullyContainsRun = (startIndex <= globalStartIndex) && (globalEndIndex <= endIndex());
387 4 1. isTouchedByRange : negated conditional → KILLED
2. isTouchedByRange : replaced boolean return with true for pro/verron/officestamper/core/StandardParagraph$StandardRun::isTouchedByRange → KILLED
3. isTouchedByRange : negated conditional → KILLED
4. isTouchedByRange : negated conditional → KILLED
            return startsInRange || endsInRange || rangeFullyContainsRun;
388
        }
389
390
        /**
391
         * Calculates the end index of the current run based on its start index and length.
392
         *
393
         * @return the end index of the run.
394
         */
395
        public int endIndex() {
396 2 1. endIndex : replaced int return with 0 for pro/verron/officestamper/core/StandardParagraph$StandardRun::endIndex → KILLED
2. endIndex : Replaced integer addition with subtraction → KILLED
            return startIndex + length();
397
        }
398
399
        /**
400
         * Calculates the length of the text content of this run.
401
         *
402
         * @return the length of the text in the current run.
403
         */
404
        public int length() {
405 1 1. length : replaced int return with 0 for pro/verron/officestamper/core/StandardParagraph$StandardRun::length → KILLED
            return getText().length();
406
        }
407
408
        /**
409
         * Replaces the substring starting at the given index with the given replacement string.
410
         *
411
         * @param globalStartIndex the global index at which to
412
         *                         start the replacement.
413
         * @param globalEndIndex   the global index at which to end
414
         *                         the replacement.
415
         * @param replacement      the string to replace the substring at the specified global index.
416
         */
417
        public void replace(int globalStartIndex, int globalEndIndex, String replacement) {
418
            int localStartIndex = globalIndexToLocalIndex(globalStartIndex);
419
            int localEndIndex = globalIndexToLocalIndex(globalEndIndex);
420
            var text = substring(0, localStartIndex);
421
            text += replacement;
422
            String runText = getText();
423 1 1. replace : negated conditional → KILLED
            if (!runText.isEmpty()) {
424
                text += substring(localEndIndex);
425
            }
426 1 1. replace : removed call to pro/verron/officestamper/core/RunUtil::setText → KILLED
            RunUtil.setText(run, text);
427
        }
428
429
        /**
430
         * Converts a global index to a local index within the context of this run.
431
         * (meaning the index relative to multiple aggregated runs)
432
         *
433
         * @param globalIndex the global index to convert.
434
         *
435
         * @return the local index corresponding to the given global index.
436
         */
437
        private int globalIndexToLocalIndex(int globalIndex) {
438 2 1. globalIndexToLocalIndex : changed conditional boundary → SURVIVED
2. globalIndexToLocalIndex : negated conditional → KILLED
            if (globalIndex < startIndex) return 0;
439 3 1. globalIndexToLocalIndex : changed conditional boundary → SURVIVED
2. globalIndexToLocalIndex : negated conditional → KILLED
3. globalIndexToLocalIndex : replaced int return with 0 for pro/verron/officestamper/core/StandardParagraph$StandardRun::globalIndexToLocalIndex → KILLED
            else if (globalIndex > endIndex()) return length();
440 2 1. globalIndexToLocalIndex : replaced int return with 0 for pro/verron/officestamper/core/StandardParagraph$StandardRun::globalIndexToLocalIndex → KILLED
2. globalIndexToLocalIndex : Replaced integer subtraction with addition → KILLED
            else return globalIndex - startIndex;
441
        }
442
443
444
    }
445
}

Mutations

58

1.1
Location : initializeRunList
Killed by : pro.verron.officestamper.test.ResolutionTest.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.ResolutionTest]/[test-template:testCustomResolution(java.lang.String, boolean, boolean, boolean, boolean, boolean, java.lang.String, boolean, java.lang.String)]/[test-template-invocation:#29]
changed conditional boundary → KILLED

2.2
Location : initializeRunList
Killed by : pro.verron.officestamper.test.ResolutionTest.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.ResolutionTest]/[test-template:testCustomResolution(java.lang.String, boolean, boolean, boolean, boolean, boolean, java.lang.String, boolean, java.lang.String)]/[test-template-invocation:#29]
negated conditional → KILLED

60

1.1
Location : initializeRunList
Killed by : pro.verron.officestamper.test.ResolutionTest.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.ResolutionTest]/[test-template:testCustomResolution(java.lang.String, boolean, boolean, boolean, boolean, boolean, java.lang.String, boolean, java.lang.String)]/[test-template-invocation:#29]
negated conditional → KILLED

63

1.1
Location : initializeRunList
Killed by : pro.verron.officestamper.test.ResolutionTest.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.ResolutionTest]/[test-template:testCustomResolution(java.lang.String, boolean, boolean, boolean, boolean, boolean, java.lang.String, boolean, java.lang.String)]/[test-template-invocation:#28]
Replaced integer addition with subtraction → KILLED

66

1.1
Location : initializeRunList
Killed by : pro.verron.officestamper.test.ResolutionTest.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.ResolutionTest]/[test-template:testCustomResolution(java.lang.String, boolean, boolean, boolean, boolean, boolean, java.lang.String, boolean, java.lang.String)]/[test-template-invocation:#29]
replaced return value with Collections.emptyList for pro/verron/officestamper/core/StandardParagraph::initializeRunList → KILLED

78

1.1
Location : from
Killed by : pro.verron.officestamper.test.ResolutionTest.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.ResolutionTest]/[test-template:testCustomResolution(java.lang.String, boolean, boolean, boolean, boolean, boolean, java.lang.String, boolean, java.lang.String)]/[test-template-invocation:#29]
replaced return value with null for pro/verron/officestamper/core/StandardParagraph::from → KILLED

92

1.1
Location : from
Killed by : pro.verron.officestamper.test.DefaultTests.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.DefaultTests]/[test-template:features(java.lang.String, pro.verron.officestamper.api.OfficeStamperConfiguration, java.lang.Object, java.io.InputStream, java.lang.String)]/[test-template-invocation:#36]
replaced return value with null for pro/verron/officestamper/core/StandardParagraph::from → KILLED

99

1.1
Location : processorContext
Killed by : pro.verron.officestamper.test.SpelInjectionTest.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.SpelInjectionTest]/[test-template:spelInjectionTest(pro.verron.officestamper.test.ContextFactory)]/[test-template-invocation:#2]
replaced return value with null for pro/verron/officestamper/core/StandardParagraph::processorContext → KILLED

106

1.1
Location : replace
Killed by : pro.verron.officestamper.test.RepeatParagraphTest.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.RepeatParagraphTest]/[method:shouldAcceptQueue()]
changed conditional boundary → KILLED

2.2
Location : replace
Killed by : pro.verron.officestamper.test.RepeatParagraphTest.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.RepeatParagraphTest]/[method:shouldAcceptQueue()]
negated conditional → KILLED

112

1.1
Location : siblings
Killed by : pro.verron.officestamper.test.RepeatParagraphTest.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.RepeatParagraphTest]/[method:shouldAcceptQueue()]
replaced return value with Collections.emptyList for pro/verron/officestamper/core/StandardParagraph::siblings → KILLED

118

1.1
Location : parent
Killed by : pro.verron.officestamper.test.ConditionalDisplayTest.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.ConditionalDisplayTest]/[test-template:conditionalDisplayOfTableRowsTest(pro.verron.officestamper.test.ContextFactory)]/[test-template-invocation:#1]
replaced return value with Optional.empty for pro/verron/officestamper/core/StandardParagraph::parent → KILLED

123

1.1
Location : remove
Killed by : pro.verron.officestamper.test.ConditionalDisplayTest.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.ConditionalDisplayTest]/[test-template:conditionalDisplayOfTableBug32Test(pro.verron.officestamper.test.ContextFactory)]/[test-template-invocation:#2]
removed call to pro/verron/officestamper/utils/WmlUtils::remove → KILLED

129

1.1
Location : getP
Killed by : none
replaced return value with null for pro/verron/officestamper/core/StandardParagraph::getP → NO_COVERAGE

143

1.1
Location : replace
Killed by : pro.verron.officestamper.test.ResolutionTest.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.ResolutionTest]/[test-template:testCustomResolution(java.lang.String, boolean, boolean, boolean, boolean, boolean, java.lang.String, boolean, java.lang.String)]/[test-template-invocation:#28]
removed call to pro/verron/officestamper/core/StandardParagraph::replaceWithRun → KILLED

144

1.1
Location : replace
Killed by : pro.verron.officestamper.test.DefaultTests.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.DefaultTests]/[test-template:features(java.lang.String, pro.verron.officestamper.api.OfficeStamperConfiguration, java.lang.Object, java.io.InputStream, java.lang.String)]/[test-template-invocation:#14]
removed call to pro/verron/officestamper/core/StandardParagraph::replaceWithBr → KILLED

154

1.1
Location : replaceWithRun
Killed by : pro.verron.officestamper.test.ResolutionTest.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.ResolutionTest]/[test-template:testCustomResolution(java.lang.String, boolean, boolean, boolean, boolean, boolean, java.lang.String, boolean, java.lang.String)]/[test-template-invocation:#28]
negated conditional → KILLED

158

1.1
Location : replaceWithRun
Killed by : pro.verron.officestamper.test.ResolutionTest.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.ResolutionTest]/[test-template:testCustomResolution(java.lang.String, boolean, boolean, boolean, boolean, boolean, java.lang.String, boolean, java.lang.String)]/[test-template-invocation:#28]
Replaced integer addition with subtraction → KILLED

161

1.1
Location : replaceWithRun
Killed by : pro.verron.officestamper.test.ResolutionTest.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.ResolutionTest]/[test-template:testCustomResolution(java.lang.String, boolean, boolean, boolean, boolean, boolean, java.lang.String, boolean, java.lang.String)]/[test-template-invocation:#28]
negated conditional → KILLED

163

1.1
Location : replaceWithRun
Killed by : pro.verron.officestamper.test.ResolutionTest.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.ResolutionTest]/[test-template:testCustomResolution(java.lang.String, boolean, boolean, boolean, boolean, boolean, java.lang.String, boolean, java.lang.String)]/[test-template-invocation:#28]
negated conditional → KILLED

166

1.1
Location : replaceWithRun
Killed by : pro.verron.officestamper.test.DefaultTests.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.DefaultTests]/[test-template:features(java.lang.String, pro.verron.officestamper.api.OfficeStamperConfiguration, java.lang.Object, java.io.InputStream, java.lang.String)]/[test-template-invocation:#37]
negated conditional → KILLED

167

1.1
Location : replaceWithRun
Killed by : pro.verron.officestamper.test.DefaultTests.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.DefaultTests]/[test-template:features(java.lang.String, pro.verron.officestamper.api.OfficeStamperConfiguration, java.lang.Object, java.io.InputStream, java.lang.String)]/[test-template-invocation:#37]
negated conditional → KILLED

168

1.1
Location : replaceWithRun
Killed by : pro.verron.officestamper.test.DefaultTests.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.DefaultTests]/[test-template:features(java.lang.String, pro.verron.officestamper.api.OfficeStamperConfiguration, java.lang.Object, java.io.InputStream, java.lang.String)]/[test-template-invocation:#23]
negated conditional → KILLED

169

1.1
Location : replaceWithRun
Killed by : none
changed conditional boundary → SURVIVED
Covering tests

2.2
Location : replaceWithRun
Killed by : pro.verron.officestamper.test.DefaultTests.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.DefaultTests]/[test-template:features(java.lang.String, pro.verron.officestamper.api.OfficeStamperConfiguration, java.lang.Object, java.io.InputStream, java.lang.String)]/[test-template-invocation:#23]
negated conditional → KILLED

3.3
Location : replaceWithRun
Killed by : none
changed conditional boundary → SURVIVED Covering tests

4.4
Location : replaceWithRun
Killed by : pro.verron.officestamper.test.DefaultTests.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.DefaultTests]/[test-template:features(java.lang.String, pro.verron.officestamper.api.OfficeStamperConfiguration, java.lang.Object, java.io.InputStream, java.lang.String)]/[test-template-invocation:#23]
negated conditional → KILLED

171

1.1
Location : replaceWithRun
Killed by : none
removed call to org/docx4j/wml/R::setRPr → SURVIVED
Covering tests

173

1.1
Location : replaceWithRun
Killed by : pro.verron.officestamper.test.DefaultTests.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.DefaultTests]/[test-template:features(java.lang.String, pro.verron.officestamper.api.OfficeStamperConfiguration, java.lang.Object, java.io.InputStream, java.lang.String)]/[test-template-invocation:#37]
negated conditional → KILLED

176

1.1
Location : replaceWithRun
Killed by : pro.verron.officestamper.test.DefaultTests.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.DefaultTests]/[test-template:features(java.lang.String, pro.verron.officestamper.api.OfficeStamperConfiguration, java.lang.Object, java.io.InputStream, java.lang.String)]/[test-template-invocation:#37]
negated conditional → KILLED

177

1.1
Location : replaceWithRun
Killed by : none
removed call to pro/verron/officestamper/core/StandardParagraph$StandardRun::replace → NO_COVERAGE

178

1.1
Location : replaceWithRun
Killed by : none
removed call to java/util/List::add → NO_COVERAGE

180

1.1
Location : replaceWithRun
Killed by : pro.verron.officestamper.test.DefaultTests.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.DefaultTests]/[test-template:features(java.lang.String, pro.verron.officestamper.api.OfficeStamperConfiguration, java.lang.Object, java.io.InputStream, java.lang.String)]/[test-template-invocation:#23]
negated conditional → KILLED

181

1.1
Location : replaceWithRun
Killed by : pro.verron.officestamper.test.DefaultTests.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.DefaultTests]/[test-template:features(java.lang.String, pro.verron.officestamper.api.OfficeStamperConfiguration, java.lang.Object, java.io.InputStream, java.lang.String)]/[test-template-invocation:#37]
removed call to pro/verron/officestamper/core/StandardParagraph$StandardRun::replace → KILLED

182

1.1
Location : replaceWithRun
Killed by : pro.verron.officestamper.test.DefaultTests.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.DefaultTests]/[test-template:features(java.lang.String, pro.verron.officestamper.api.OfficeStamperConfiguration, java.lang.Object, java.io.InputStream, java.lang.String)]/[test-template-invocation:#37]
Replaced integer addition with subtraction → KILLED

2.2
Location : replaceWithRun
Killed by : pro.verron.officestamper.test.DefaultTests.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.DefaultTests]/[test-template:features(java.lang.String, pro.verron.officestamper.api.OfficeStamperConfiguration, java.lang.Object, java.io.InputStream, java.lang.String)]/[test-template-invocation:#37]
removed call to java/util/List::add → KILLED

184

1.1
Location : replaceWithRun
Killed by : pro.verron.officestamper.test.DefaultTests.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.DefaultTests]/[test-template:features(java.lang.String, pro.verron.officestamper.api.OfficeStamperConfiguration, java.lang.Object, java.io.InputStream, java.lang.String)]/[test-template-invocation:#23]
negated conditional → KILLED

186

1.1
Location : replaceWithRun
Killed by : pro.verron.officestamper.test.DefaultTests.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.DefaultTests]/[test-template:features(java.lang.String, pro.verron.officestamper.api.OfficeStamperConfiguration, java.lang.Object, java.io.InputStream, java.lang.String)]/[test-template-invocation:#23]
Replaced integer addition with subtraction → KILLED

200

1.1
Location : replaceWithRun
Killed by : pro.verron.officestamper.test.DefaultTests.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.DefaultTests]/[test-template:features(java.lang.String, pro.verron.officestamper.api.OfficeStamperConfiguration, java.lang.Object, java.io.InputStream, java.lang.String)]/[test-template-invocation:#8]
removed call to org/docx4j/wml/R::setRPr → KILLED

201

1.1
Location : replaceWithRun
Killed by : pro.verron.officestamper.test.ResolutionTest.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.ResolutionTest]/[test-template:testCustomResolution(java.lang.String, boolean, boolean, boolean, boolean, boolean, java.lang.String, boolean, java.lang.String)]/[test-template-invocation:#28]
removed call to pro/verron/officestamper/core/StandardParagraph::removeExpression → KILLED

203

1.1
Location : replaceWithRun
Killed by : pro.verron.officestamper.test.ResolutionTest.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.ResolutionTest]/[test-template:testCustomResolution(java.lang.String, boolean, boolean, boolean, boolean, boolean, java.lang.String, boolean, java.lang.String)]/[test-template-invocation:#28]
Replaced integer addition with subtraction → KILLED

2.2
Location : replaceWithRun
Killed by : pro.verron.officestamper.test.ResolutionTest.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.ResolutionTest]/[test-template:testCustomResolution(java.lang.String, boolean, boolean, boolean, boolean, boolean, java.lang.String, boolean, java.lang.String)]/[test-template-invocation:#28]
removed call to java/util/List::add → KILLED

213

1.1
Location : replaceWithBr
Killed by : pro.verron.officestamper.test.ResolutionTest.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.ResolutionTest]/[test-template:testCustomResolution(java.lang.String, boolean, boolean, boolean, boolean, boolean, java.lang.String, boolean, java.lang.String)]/[test-template-invocation:#9]
negated conditional → KILLED

215

1.1
Location : replaceWithBr
Killed by : pro.verron.officestamper.test.ResolutionTest.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.ResolutionTest]/[test-template:testCustomResolution(java.lang.String, boolean, boolean, boolean, boolean, boolean, java.lang.String, boolean, java.lang.String)]/[test-template-invocation:#28]
negated conditional → KILLED

217

1.1
Location : replaceWithBr
Killed by : pro.verron.officestamper.test.DefaultTests.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.DefaultTests]/[test-template:features(java.lang.String, pro.verron.officestamper.api.OfficeStamperConfiguration, java.lang.Object, java.io.InputStream, java.lang.String)]/[test-template-invocation:#14]
negated conditional → KILLED

219

1.1
Location : replaceWithBr
Killed by : pro.verron.officestamper.test.DefaultTests.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.DefaultTests]/[test-template:features(java.lang.String, pro.verron.officestamper.api.OfficeStamperConfiguration, java.lang.Object, java.io.InputStream, java.lang.String)]/[test-template-invocation:#14]
removed call to pro/verron/officestamper/core/StandardParagraph::replaceWithBr → KILLED

2.2
Location : replaceWithBr
Killed by : pro.verron.officestamper.test.DefaultTests.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.DefaultTests]/[test-template:features(java.lang.String, pro.verron.officestamper.api.OfficeStamperConfiguration, java.lang.Object, java.io.InputStream, java.lang.String)]/[test-template-invocation:#14]
negated conditional → KILLED

225

1.1
Location : getAffectedRuns
Killed by : pro.verron.officestamper.test.ResolutionTest.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.ResolutionTest]/[test-template:testCustomResolution(java.lang.String, boolean, boolean, boolean, boolean, boolean, java.lang.String, boolean, java.lang.String)]/[test-template-invocation:#28]
replaced return value with Collections.emptyList for pro/verron/officestamper/core/StandardParagraph::getAffectedRuns → KILLED

226

1.1
Location : lambda$getAffectedRuns$0
Killed by : pro.verron.officestamper.test.DefaultTests.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.DefaultTests]/[test-template:features(java.lang.String, pro.verron.officestamper.api.OfficeStamperConfiguration, java.lang.Object, java.io.InputStream, java.lang.String)]/[test-template-invocation:#22]
replaced boolean return with true for pro/verron/officestamper/core/StandardParagraph::lambda$getAffectedRuns$0 → KILLED

2.2
Location : lambda$getAffectedRuns$0
Killed by : pro.verron.officestamper.test.ResolutionTest.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.ResolutionTest]/[test-template:testCustomResolution(java.lang.String, boolean, boolean, boolean, boolean, boolean, java.lang.String, boolean, java.lang.String)]/[test-template-invocation:#28]
replaced boolean return with false for pro/verron/officestamper/core/StandardParagraph::lambda$getAffectedRuns$0 → KILLED

238

1.1
Location : removeExpression
Killed by : pro.verron.officestamper.test.ResolutionTest.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.ResolutionTest]/[test-template:testCustomResolution(java.lang.String, boolean, boolean, boolean, boolean, boolean, java.lang.String, boolean, java.lang.String)]/[test-template-invocation:#28]
removed call to pro/verron/officestamper/core/StandardParagraph$StandardRun::replace → KILLED

241

1.1
Location : removeExpression
Killed by : pro.verron.officestamper.test.ResolutionTest.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.ResolutionTest]/[test-template:testCustomResolution(java.lang.String, boolean, boolean, boolean, boolean, boolean, java.lang.String, boolean, java.lang.String)]/[test-template-invocation:#28]
negated conditional → KILLED

2.2
Location : removeExpression
Killed by : pro.verron.officestamper.test.ResolutionTest.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.ResolutionTest]/[test-template:testCustomResolution(java.lang.String, boolean, boolean, boolean, boolean, boolean, java.lang.String, boolean, java.lang.String)]/[test-template-invocation:#28]
negated conditional → KILLED

246

1.1
Location : removeExpression
Killed by : pro.verron.officestamper.test.ResolutionTest.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.ResolutionTest]/[test-template:testCustomResolution(java.lang.String, boolean, boolean, boolean, boolean, boolean, java.lang.String, boolean, java.lang.String)]/[test-template-invocation:#28]
removed call to pro/verron/officestamper/core/StandardParagraph$StandardRun::replace → KILLED

256

1.1
Location : replaceWithBr
Killed by : pro.verron.officestamper.test.ResolutionTest.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.ResolutionTest]/[test-template:testCustomResolution(java.lang.String, boolean, boolean, boolean, boolean, boolean, java.lang.String, boolean, java.lang.String)]/[test-template-invocation:#28]
removed call to java/util/ListIterator::remove → KILLED

258

1.1
Location : replaceWithBr
Killed by : pro.verron.officestamper.test.ResolutionTest.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.ResolutionTest]/[test-template:testCustomResolution(java.lang.String, boolean, boolean, boolean, boolean, boolean, java.lang.String, boolean, java.lang.String)]/[test-template-invocation:#28]
negated conditional → KILLED

260

1.1
Location : replaceWithBr
Killed by : pro.verron.officestamper.test.ResolutionTest.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.ResolutionTest]/[test-template:testCustomResolution(java.lang.String, boolean, boolean, boolean, boolean, boolean, java.lang.String, boolean, java.lang.String)]/[test-template-invocation:#28]
removed call to java/util/ListIterator::add → KILLED

261

1.1
Location : replaceWithBr
Killed by : pro.verron.officestamper.test.ResolutionTest.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.ResolutionTest]/[test-template:testCustomResolution(java.lang.String, boolean, boolean, boolean, boolean, boolean, java.lang.String, boolean, java.lang.String)]/[test-template-invocation:#28]
negated conditional → KILLED

2.2
Location : replaceWithBr
Killed by : pro.verron.officestamper.test.DefaultTests.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.DefaultTests]/[test-template:features(java.lang.String, pro.verron.officestamper.api.OfficeStamperConfiguration, java.lang.Object, java.io.InputStream, java.lang.String)]/[test-template-invocation:#14]
removed call to java/util/ListIterator::add → KILLED

272

1.1
Location : asString
Killed by : pro.verron.officestamper.test.ResolutionTest.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.ResolutionTest]/[test-template:testCustomResolution(java.lang.String, boolean, boolean, boolean, boolean, boolean, java.lang.String, boolean, java.lang.String)]/[test-template-invocation:#29]
replaced return value with "" for pro/verron/officestamper/core/StandardParagraph::asString → KILLED

279

1.1
Location : apply
Killed by : pro.verron.officestamper.test.DefaultTests.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.DefaultTests]/[test-template:features(java.lang.String, pro.verron.officestamper.api.OfficeStamperConfiguration, java.lang.Object, java.io.InputStream, java.lang.String)]/[test-template-invocation:#35]
removed call to java/util/function/Consumer::accept → KILLED

284

1.1
Location : parent
Killed by : pro.verron.officestamper.test.ConditionalDisplayTest.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.ConditionalDisplayTest]/[test-template:conditionalDisplayOfTableRowsTest(pro.verron.officestamper.test.ContextFactory)]/[test-template-invocation:#1]
replaced return value with Optional.empty for pro/verron/officestamper/core/StandardParagraph::parent → KILLED

289

1.1
Location : getComment
Killed by : pro.verron.officestamper.test.FailOnUnresolvedPlaceholderTest.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.FailOnUnresolvedPlaceholderTest]/[test-template:fails(pro.verron.officestamper.test.ContextFactory)]/[test-template-invocation:#1]
replaced return value with Collections.emptyList for pro/verron/officestamper/core/StandardParagraph::getComment → KILLED

294

1.1
Location : comment
Killed by : pro.verron.officestamper.test.SpelInjectionTest.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.SpelInjectionTest]/[test-template:spelInjectionTest(pro.verron.officestamper.test.ContextFactory)]/[test-template-invocation:#2]
replaced return value with null for pro/verron/officestamper/core/StandardParagraph::comment → KILLED

302

1.1
Location : toString
Killed by : none
replaced return value with "" for pro/verron/officestamper/core/StandardParagraph::toString → NO_COVERAGE

328

1.1
Location : substring
Killed by : pro.verron.officestamper.test.DefaultTests.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.DefaultTests]/[test-template:features(java.lang.String, pro.verron.officestamper.api.OfficeStamperConfiguration, java.lang.Object, java.io.InputStream, java.lang.String)]/[test-template-invocation:#23]
replaced return value with "" for pro/verron/officestamper/core/StandardParagraph$StandardRun::substring → KILLED

341

1.1
Location : substring
Killed by : pro.verron.officestamper.test.DefaultTests.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.DefaultTests]/[test-template:features(java.lang.String, pro.verron.officestamper.api.OfficeStamperConfiguration, java.lang.Object, java.io.InputStream, java.lang.String)]/[test-template-invocation:#37]
replaced return value with "" for pro/verron/officestamper/core/StandardParagraph$StandardRun::substring → KILLED

353

1.1
Location : indexOf
Killed by : pro.verron.officestamper.test.DefaultTests.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.DefaultTests]/[test-template:features(java.lang.String, pro.verron.officestamper.api.OfficeStamperConfiguration, java.lang.Object, java.io.InputStream, java.lang.String)]/[test-template-invocation:#23]
replaced int return with 0 for pro/verron/officestamper/core/StandardParagraph$StandardRun::indexOf → KILLED

362

1.1
Location : getText
Killed by : pro.verron.officestamper.test.ResolutionTest.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.ResolutionTest]/[test-template:testCustomResolution(java.lang.String, boolean, boolean, boolean, boolean, boolean, java.lang.String, boolean, java.lang.String)]/[test-template-invocation:#29]
replaced return value with "" for pro/verron/officestamper/core/StandardParagraph$StandardRun::getText → KILLED

371

1.1
Location : getPr
Killed by : pro.verron.officestamper.test.DefaultTests.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.DefaultTests]/[test-template:features(java.lang.String, pro.verron.officestamper.api.OfficeStamperConfiguration, java.lang.Object, java.io.InputStream, java.lang.String)]/[test-template-invocation:#8]
replaced return value with null for pro/verron/officestamper/core/StandardParagraph$StandardRun::getPr → KILLED

384

1.1
Location : isTouchedByRange
Killed by : pro.verron.officestamper.test.DefaultTests.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.DefaultTests]/[test-template:features(java.lang.String, pro.verron.officestamper.api.OfficeStamperConfiguration, java.lang.Object, java.io.InputStream, java.lang.String)]/[test-template-invocation:#27]
negated conditional → KILLED

2.2
Location : isTouchedByRange
Killed by : none
changed conditional boundary → SURVIVED
Covering tests

3.3
Location : isTouchedByRange
Killed by : pro.verron.officestamper.test.DefaultTests.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.DefaultTests]/[test-template:features(java.lang.String, pro.verron.officestamper.api.OfficeStamperConfiguration, java.lang.Object, java.io.InputStream, java.lang.String)]/[test-template-invocation:#22]
negated conditional → KILLED

4.4
Location : isTouchedByRange
Killed by : pro.verron.officestamper.test.RepeatTableRowTest.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.RepeatTableRowTest]/[test-template:features(java.lang.String, pro.verron.officestamper.api.OfficeStamperConfiguration, java.lang.Object, java.io.InputStream, java.lang.String)]/[test-template-invocation:#3]
changed conditional boundary → KILLED

385

1.1
Location : isTouchedByRange
Killed by : pro.verron.officestamper.test.DefaultTests.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.DefaultTests]/[test-template:features(java.lang.String, pro.verron.officestamper.api.OfficeStamperConfiguration, java.lang.Object, java.io.InputStream, java.lang.String)]/[test-template-invocation:#8]
changed conditional boundary → KILLED

2.2
Location : isTouchedByRange
Killed by : pro.verron.officestamper.test.ResolutionTest.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.ResolutionTest]/[test-template:testCustomResolution(java.lang.String, boolean, boolean, boolean, boolean, boolean, java.lang.String, boolean, java.lang.String)]/[test-template-invocation:#28]
negated conditional → KILLED

3.3
Location : isTouchedByRange
Killed by : pro.verron.officestamper.test.ResolutionTest.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.ResolutionTest]/[test-template:testCustomResolution(java.lang.String, boolean, boolean, boolean, boolean, boolean, java.lang.String, boolean, java.lang.String)]/[test-template-invocation:#28]
negated conditional → KILLED

4.4
Location : isTouchedByRange
Killed by : none
changed conditional boundary → SURVIVED
Covering tests

386

1.1
Location : isTouchedByRange
Killed by : none
changed conditional boundary → SURVIVED
Covering tests

2.2
Location : isTouchedByRange
Killed by : pro.verron.officestamper.test.DefaultTests.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.DefaultTests]/[test-template:features(java.lang.String, pro.verron.officestamper.api.OfficeStamperConfiguration, java.lang.Object, java.io.InputStream, java.lang.String)]/[test-template-invocation:#23]
negated conditional → KILLED

3.3
Location : isTouchedByRange
Killed by : pro.verron.officestamper.test.DefaultTests.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.DefaultTests]/[test-template:features(java.lang.String, pro.verron.officestamper.api.OfficeStamperConfiguration, java.lang.Object, java.io.InputStream, java.lang.String)]/[test-template-invocation:#23]
negated conditional → KILLED

4.4
Location : isTouchedByRange
Killed by : none
changed conditional boundary → SURVIVED Covering tests

387

1.1
Location : isTouchedByRange
Killed by : pro.verron.officestamper.test.DefaultTests.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.DefaultTests]/[test-template:features(java.lang.String, pro.verron.officestamper.api.OfficeStamperConfiguration, java.lang.Object, java.io.InputStream, java.lang.String)]/[test-template-invocation:#22]
negated conditional → KILLED

2.2
Location : isTouchedByRange
Killed by : pro.verron.officestamper.test.DefaultTests.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.DefaultTests]/[test-template:features(java.lang.String, pro.verron.officestamper.api.OfficeStamperConfiguration, java.lang.Object, java.io.InputStream, java.lang.String)]/[test-template-invocation:#22]
replaced boolean return with true for pro/verron/officestamper/core/StandardParagraph$StandardRun::isTouchedByRange → KILLED

3.3
Location : isTouchedByRange
Killed by : pro.verron.officestamper.test.ResolutionTest.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.ResolutionTest]/[test-template:testCustomResolution(java.lang.String, boolean, boolean, boolean, boolean, boolean, java.lang.String, boolean, java.lang.String)]/[test-template-invocation:#28]
negated conditional → KILLED

4.4
Location : isTouchedByRange
Killed by : pro.verron.officestamper.test.DefaultTests.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.DefaultTests]/[test-template:features(java.lang.String, pro.verron.officestamper.api.OfficeStamperConfiguration, java.lang.Object, java.io.InputStream, java.lang.String)]/[test-template-invocation:#23]
negated conditional → KILLED

396

1.1
Location : endIndex
Killed by : pro.verron.officestamper.test.ResolutionTest.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.ResolutionTest]/[test-template:testCustomResolution(java.lang.String, boolean, boolean, boolean, boolean, boolean, java.lang.String, boolean, java.lang.String)]/[test-template-invocation:#28]
replaced int return with 0 for pro/verron/officestamper/core/StandardParagraph$StandardRun::endIndex → KILLED

2.2
Location : endIndex
Killed by : pro.verron.officestamper.test.ResolutionTest.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.ResolutionTest]/[test-template:testCustomResolution(java.lang.String, boolean, boolean, boolean, boolean, boolean, java.lang.String, boolean, java.lang.String)]/[test-template-invocation:#28]
Replaced integer addition with subtraction → KILLED

405

1.1
Location : length
Killed by : pro.verron.officestamper.test.ResolutionTest.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.ResolutionTest]/[test-template:testCustomResolution(java.lang.String, boolean, boolean, boolean, boolean, boolean, java.lang.String, boolean, java.lang.String)]/[test-template-invocation:#28]
replaced int return with 0 for pro/verron/officestamper/core/StandardParagraph$StandardRun::length → KILLED

423

1.1
Location : replace
Killed by : pro.verron.officestamper.test.DefaultTests.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.DefaultTests]/[test-template:features(java.lang.String, pro.verron.officestamper.api.OfficeStamperConfiguration, java.lang.Object, java.io.InputStream, java.lang.String)]/[test-template-invocation:#22]
negated conditional → KILLED

426

1.1
Location : replace
Killed by : pro.verron.officestamper.test.ResolutionTest.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.ResolutionTest]/[test-template:testCustomResolution(java.lang.String, boolean, boolean, boolean, boolean, boolean, java.lang.String, boolean, java.lang.String)]/[test-template-invocation:#28]
removed call to pro/verron/officestamper/core/RunUtil::setText → KILLED

438

1.1
Location : globalIndexToLocalIndex
Killed by : none
changed conditional boundary → SURVIVED
Covering tests

2.2
Location : globalIndexToLocalIndex
Killed by : pro.verron.officestamper.test.ResolutionTest.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.ResolutionTest]/[test-template:testCustomResolution(java.lang.String, boolean, boolean, boolean, boolean, boolean, java.lang.String, boolean, java.lang.String)]/[test-template-invocation:#28]
negated conditional → KILLED

439

1.1
Location : globalIndexToLocalIndex
Killed by : none
changed conditional boundary → SURVIVED
Covering tests

2.2
Location : globalIndexToLocalIndex
Killed by : pro.verron.officestamper.test.ResolutionTest.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.ResolutionTest]/[test-template:testCustomResolution(java.lang.String, boolean, boolean, boolean, boolean, boolean, java.lang.String, boolean, java.lang.String)]/[test-template-invocation:#28]
negated conditional → KILLED

3.3
Location : globalIndexToLocalIndex
Killed by : pro.verron.officestamper.test.ResolutionTest.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.ResolutionTest]/[test-template:testCustomResolution(java.lang.String, boolean, boolean, boolean, boolean, boolean, java.lang.String, boolean, java.lang.String)]/[test-template-invocation:#28]
replaced int return with 0 for pro/verron/officestamper/core/StandardParagraph$StandardRun::globalIndexToLocalIndex → KILLED

440

1.1
Location : globalIndexToLocalIndex
Killed by : pro.verron.officestamper.test.ResolutionTest.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.ResolutionTest]/[test-template:testCustomResolution(java.lang.String, boolean, boolean, boolean, boolean, boolean, java.lang.String, boolean, java.lang.String)]/[test-template-invocation:#28]
replaced int return with 0 for pro/verron/officestamper/core/StandardParagraph$StandardRun::globalIndexToLocalIndex → KILLED

2.2
Location : globalIndexToLocalIndex
Killed by : pro.verron.officestamper.test.ResolutionTest.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.ResolutionTest]/[test-template:testCustomResolution(java.lang.String, boolean, boolean, boolean, boolean, boolean, java.lang.String, boolean, java.lang.String)]/[test-template-invocation:#28]
Replaced integer subtraction with addition → KILLED

Active mutators

Tests examined


Report generated by PIT 1.20.0