ToStringResolver.java

1
package pro.verron.officestamper.preset.resolvers.objects;
2
3
import org.jspecify.annotations.Nullable;
4
import pro.verron.officestamper.api.DocxPart;
5
import pro.verron.officestamper.api.Insert;
6
import pro.verron.officestamper.api.ObjectResolver;
7
8
import java.util.ArrayList;
9
import java.util.List;
10
11
import static pro.verron.officestamper.utils.wml.WmlFactory.*;
12
13
/// This class is an implementation of the [ObjectResolver] interface that resolves objects by converting them to a
14
/// string representation using the [Object#toString()] method and creating a new run with the resolved content.
15
///
16
/// @author Joseph Verron
17
/// @since 1.6.7
18
public class ToStringResolver
19
        implements ObjectResolver {
20
21
    private final String linebreakPlaceholder;
22
23
24
    /// Creates a new instance of the [ToStringResolver] class with the specified line break placeholder.
25
    ///
26
    /// @param linebreakPlaceholder the placeholder string used to identify line breaks within the string
27
    ///         representation of an object. This placeholder will be replaced with actual line break elements in the
28
    ///         resulting document.
29
    public ToStringResolver(String linebreakPlaceholder) {
30
        this.linebreakPlaceholder = linebreakPlaceholder;
31
    }
32
33
    @Override
34
    public Insert resolve(DocxPart part, String expression, @Nullable Object object) {
35
        var string = String.valueOf(object);
36
37
        var split = string.split(linebreakPlaceholder);
38 2 1. resolve : negated conditional → KILLED
2. resolve : replaced return value with null for pro/verron/officestamper/preset/resolvers/objects/ToStringResolver::resolve → KILLED
        if (split.length == 1) return new Insert(newRun(string));
39
        var elements = new ArrayList<>();
40 3 1. resolve : negated conditional → KILLED
2. resolve : changed conditional boundary → KILLED
3. resolve : Replaced integer subtraction with addition → KILLED
        for (int i = 0; i < split.length - 1; i++) {
41
            var line = split[i];
42
            elements.add(newRun(List.of(newText(line), newBr())));
43
        }
44 1 1. resolve : Replaced integer subtraction with addition → KILLED
        elements.add(newRun(split[split.length - 1]));
45 1 1. resolve : replaced return value with null for pro/verron/officestamper/preset/resolvers/objects/ToStringResolver::resolve → KILLED
        return new Insert(elements);
46
    }
47
48
    @Override
49
    public boolean canResolve(@Nullable Object object) {
50 2 1. canResolve : replaced boolean return with true for pro/verron/officestamper/preset/resolvers/objects/ToStringResolver::canResolve → TIMED_OUT
2. canResolve : negated conditional → KILLED
        return object != null;
51
    }
52
}

Mutations

38

1.1
Location : resolve
Killed by : pro.verron.officestamper.test.DefaultTests.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.DefaultTests]/[test-template:features(pro.verron.officestamper.api.OfficeStamperConfiguration, java.lang.Object, org.docx4j.openpackaging.packages.WordprocessingMLPackage, java.lang.String)]/[test-template-invocation:#26]
negated conditional → KILLED

2.2
Location : resolve
Killed by : pro.verron.officestamper.test.CustomFunctionTests.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.CustomFunctionTests]/[test-template:trifunctions(pro.verron.officestamper.test.utils.ContextFactory, java.lang.String, java.lang.String)]/[test-template-invocation:#12]
replaced return value with null for pro/verron/officestamper/preset/resolvers/objects/ToStringResolver::resolve → KILLED

40

1.1
Location : resolve
Killed by : pro.verron.officestamper.test.DefaultTests.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.DefaultTests]/[test-template:features(pro.verron.officestamper.api.OfficeStamperConfiguration, java.lang.Object, org.docx4j.openpackaging.packages.WordprocessingMLPackage, java.lang.String)]/[test-template-invocation:#26]
negated conditional → KILLED

2.2
Location : resolve
Killed by : pro.verron.officestamper.test.DefaultTests.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.DefaultTests]/[test-template:features(pro.verron.officestamper.api.OfficeStamperConfiguration, java.lang.Object, org.docx4j.openpackaging.packages.WordprocessingMLPackage, java.lang.String)]/[test-template-invocation:#26]
changed conditional boundary → KILLED

3.3
Location : resolve
Killed by : pro.verron.officestamper.test.DefaultTests.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.DefaultTests]/[test-template:features(pro.verron.officestamper.api.OfficeStamperConfiguration, java.lang.Object, org.docx4j.openpackaging.packages.WordprocessingMLPackage, java.lang.String)]/[test-template-invocation:#26]
Replaced integer subtraction with addition → KILLED

44

1.1
Location : resolve
Killed by : pro.verron.officestamper.test.DefaultTests.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.DefaultTests]/[test-template:features(pro.verron.officestamper.api.OfficeStamperConfiguration, java.lang.Object, org.docx4j.openpackaging.packages.WordprocessingMLPackage, java.lang.String)]/[test-template-invocation:#26]
Replaced integer subtraction with addition → KILLED

45

1.1
Location : resolve
Killed by : pro.verron.officestamper.test.DefaultTests.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.DefaultTests]/[test-template:features(pro.verron.officestamper.api.OfficeStamperConfiguration, java.lang.Object, org.docx4j.openpackaging.packages.WordprocessingMLPackage, java.lang.String)]/[test-template-invocation:#26]
replaced return value with null for pro/verron/officestamper/preset/resolvers/objects/ToStringResolver::resolve → KILLED

50

1.1
Location : canResolve
Killed by : none
replaced boolean return with true for pro/verron/officestamper/preset/resolvers/objects/ToStringResolver::canResolve → TIMED_OUT

2.2
Location : canResolve
Killed by : pro.verron.officestamper.test.CustomFunctionTests.[engine:junit-jupiter]/[class:pro.verron.officestamper.test.CustomFunctionTests]/[test-template:trifunctions(pro.verron.officestamper.test.utils.ContextFactory, java.lang.String, java.lang.String)]/[test-template-invocation:#12]
negated conditional → KILLED

Active mutators

Tests examined


Report generated by PIT 1.25.5 support