AsciiDocModel.java

1
package pro.verron.officestamper.asciidoc;
2
3
import java.util.*;
4
5
import static java.util.Collections.emptyList;
6
7
/// Represents a minimal in-memory model of an AsciiDoc document.
8
///
9
/// This model intentionally supports a compact subset sufficient for rendering to WordprocessingML and JavaFX Scene: -
10
/// Headings (levels 1..6) using leading '=' markers - Paragraphs separated by blank lines - Inline emphasis for bold
11
/// and italic using AsciiDoc-like markers: *bold*, _italic_
12
public final class AsciiDocModel {
13
    private final List<Block> blocks;
14
15
    private AsciiDocModel(List<Block> blocks) {
16
        this.blocks = List.copyOf(blocks);
17
    }
18
19
    /// Creates a new [AsciiDocModel] from the provided blocks.
20
    ///
21
    /// @param blocks ordered content blocks
22
    ///
23
    /// @return immutable AsciiDocModel
24
    public static AsciiDocModel of(List<Block> blocks) {
25
        Objects.requireNonNull(blocks, "blocks");
26 1 1. of : replaced return value with null for pro/verron/officestamper/asciidoc/AsciiDocModel::of → KILLED
        return new AsciiDocModel(new ArrayList<>(blocks));
27
    }
28
29
    /// Returns the ordered list of blocks comprising the document.
30
    ///
31
    /// @return immutable list of blocks
32
    public List<Block> getBlocks() {
33 1 1. getBlocks : replaced return value with Collections.emptyList for pro/verron/officestamper/asciidoc/AsciiDocModel::getBlocks → KILLED
        return blocks;
34
    }
35
36
    /// Marker interface for document blocks.
37
    public sealed interface Block
38
            permits Blockquote, Break, CodeBlock, CommentLine, Heading, ImageBlock, MacroBlock, OpenBlock,
39
            OrderedList, Paragraph, Table, UnorderedList {
40
        int size();
41
    }
42
43
    /// Inline fragment inside a paragraph/heading.
44
    public sealed interface Inline
45
            permits Bold, InlineImage, InlineMacro, Italic, Link, Styled, Sub, Sup, Tab, Text {
46
        /// Returns the text of the inline fragment.
47
        ///
48
        /// @return text
49
        String text();
50
    }
51
52
    /// Heading block (levels 1..6).
53
    ///
54
    /// @param level heading level
55
    /// @param inlines inline fragments
56
    public record Heading(List<String> header, int level, List<Inline> inlines)
57
            implements Block {
58
        /// Constructs a Heading object with the specified heading level and inline fragments.
59
        ///
60
        /// @param level the heading level, must be between 1 and 6 (inclusive)
61
        /// @param inlines the list of inline fragments representing the content of the heading
62
        /// @throws IllegalArgumentException if the heading level is outside the range of 1 to 6
63
        public Heading(int level, List<Inline> inlines) {
64
            this(emptyList(), level, inlines);
65
        }
66
67
        /// Constructor.
68
        ///
69
        /// @param level heading level
70
        /// @param inlines inline fragments
71
        public Heading(List<String> header, int level, List<Inline> inlines) {
72
            if (level < 1 || level > 6) {
73
                throw new IllegalArgumentException("Heading level must be between 1 and 6");
74
            }
75
            this.header = List.copyOf(header);
76
            this.level = level;
77
            this.inlines = List.copyOf(inlines);
78
        }
79
80
        @Override
81
        public int size() {
82 1 1. size : replaced int return with 0 for pro/verron/officestamper/asciidoc/AsciiDocModel$Heading::size → NO_COVERAGE
            return 1;
83
        }
84
    }
85
86
    /// Paragraph block.
87
    ///
88
    /// @param inlines inline fragments
89
    public record Paragraph(List<String> header, List<Inline> inlines)
90
            implements Block {
91
        /// Constructs a Paragraph object with the specified list of inline elements.
92
        /// This constructor initializes the paragraph without any header and sets the
93
        /// inline fragments to the provided list.
94
        ///
95
        /// @param inlines the list of inline elements that make up the paragraph
96
        public Paragraph(List<Inline> inlines) {
97
            this(emptyList(), inlines);
98
        }
99
100
        /// Constructor.
101
        ///
102
        /// @param inlines inline fragments
103
        public Paragraph(List<String> header, List<Inline> inlines) {
104
            this.header = List.copyOf(header);
105
            this.inlines = List.copyOf(inlines);
106
        }
107
108
        @Override
109
        public int size() {
110 1 1. size : replaced int return with 0 for pro/verron/officestamper/asciidoc/AsciiDocModel$Paragraph::size → SURVIVED
            return 1;
111
        }
112
    }
113
114
    /// Text fragment.
115
    ///
116
    /// @param text text
117
    public record Text(String text)
118
            implements Inline {}
119
120
    /// Bold inline that can contain nested inlines.
121
    ///
122
    /// @param children nested inline fragments
123
    public record Bold(List<Inline> children)
124
            implements Inline {
125
        /// Constructor.
126
        ///
127
        /// @param children nested inline fragments
128
        public Bold(List<Inline> children) {
129
            this.children = List.copyOf(children);
130
        }
131
132
        @Override
133
        public String text() {
134
            StringBuilder sb = new StringBuilder();
135
            for (Inline in : children) sb.append(in.text());
136 1 1. text : replaced return value with "" for pro/verron/officestamper/asciidoc/AsciiDocModel$Bold::text → KILLED
            return sb.toString();
137
        }
138
    }
139
140
    /// Represents a superscript inline fragment in an AsciiDoc document.
141
    ///
142
    /// This class encapsulates a list of child [Inline] elements and provides a method to return
143
    /// the concatenated text content of all child elements. It is an immutable record type, providing
144
    /// safety and ensuring that the children list cannot be externally modified after the instance
145
    /// is created.
146
    public record Sup(List<Inline> children)
147
            implements Inline {
148
        /// Constructs a [Sup] instance, representing a superscript inline fragment in an AsciiDoc document.
149
        ///
150
        /// The Sup instance encapsulates a list of [Inline] child elements. The list is copied to ensure immutability,
151
        /// providing safety and preventing external modification after creation.
152
        ///
153
        /// @param children the list of [Inline] elements to be included as children of the superscript fragment
154
        ///                 (must not be null; each element should represent a valid inline fragment)
155
        public Sup(List<Inline> children) {
156
            this.children = List.copyOf(children);
157
        }
158
159
        @Override
160
        public String text() {
161
            StringBuilder sb = new StringBuilder();
162
            for (Inline in : children) sb.append(in.text());
163 1 1. text : replaced return value with "" for pro/verron/officestamper/asciidoc/AsciiDocModel$Sup::text → NO_COVERAGE
            return sb.toString();
164
        }
165
    }
166
167
    /// Represents a subscript inline element within an AsciiDoc document model.
168
    ///
169
    /// This class implements the Inline interface and contains a list of child inlines.
170
    /// It is used to represent text or elements that should appear as subscript.
171
    ///
172
    /// The content of this inline element is immutable, and the provided child elements
173
    /// are deep-copied to preserve immutability.
174
    ///
175
    /// @param children the list of inline fragments contained within this subscript element
176
    public record Sub(List<Inline> children)
177
            implements Inline {
178
        public Sub(List<Inline> children) {
179
            this.children = List.copyOf(children);
180
        }
181
182
        @Override
183
        public String text() {
184
            StringBuilder sb = new StringBuilder();
185
            for (Inline in : children) sb.append(in.text());
186 1 1. text : replaced return value with "" for pro/verron/officestamper/asciidoc/AsciiDocModel$Sub::text → NO_COVERAGE
            return sb.toString();
187
        }
188
    }
189
190
    /// Italic inline that can contain nested inlines.
191
    ///
192
    /// @param children nested inline fragments
193
    public record Italic(List<Inline> children)
194
            implements Inline {
195
        /// Constructor.
196
        ///
197
        /// @param children nested inline fragments
198
        public Italic(List<Inline> children) {
199
            this.children = List.copyOf(children);
200
        }
201
202
        @Override
203
        public String text() {
204
            StringBuilder sb = new StringBuilder();
205
            for (Inline in : children) sb.append(in.text());
206 1 1. text : replaced return value with "" for pro/verron/officestamper/asciidoc/AsciiDocModel$Italic::text → KILLED
            return sb.toString();
207
        }
208
    }
209
210
    /// Inline tab marker to be rendered as a DOCX tab stop.
211
    public record Tab()
212
            implements Inline {
213
        @Override
214
        public String text() {
215 1 1. text : replaced return value with "" for pro/verron/officestamper/asciidoc/AsciiDocModel$Tab::text → NO_COVERAGE
            return "\t";
216
        }
217
    }
218
219
    /// Simple table block: list of rows; each row is a list of cells; each cell contains inline content.
220
    ///
221
    /// @param rows table rows
222
    public record Table(List<Row> rows)
223
            implements Block {
224
        /// Constructor.
225
        ///
226
        /// @param rows table rows
227
        public Table(List<Row> rows) {
228
            this.rows = List.copyOf(rows);
229
        }
230
231
        @Override
232
        public int size() {
233 1 1. size : replaced int return with 0 for pro/verron/officestamper/asciidoc/AsciiDocModel$Table::size → SURVIVED
            return rows.stream()
234
                       .map(Row::cells)
235
                       .flatMap(Collection::stream)
236
                       .map(Cell::blocks)
237
                       .flatMap(Collection::stream)
238
                       .mapToInt(Block::size)
239
                       .sum();
240
        }
241
    }
242
243
    /// Table row.
244
    ///
245
    /// @param cells table cells
246
    public record Row(List<Cell> cells, Optional<String> style) {
247
        /// Constructor.
248
        ///
249
        /// @param cells table cells
250
        public Row(List<Cell> cells) {
251
            this(cells, Optional.empty());
252
        }
253
254
        public Row(List<Cell> cells, Optional<String> style) {
255
            this.cells = List.copyOf(cells);
256
            this.style = style;
257
        }
258
259
        /// Creates a list containing a single [Row] instance, where the row itself contains a list of default [Cell]
260
        ///  instances.
261
        ///
262
        /// @return an immutable list with one [Row], which wraps a list of predefined [Cell] objects
263
        public static List<Row> listOf() {
264 1 1. listOf : replaced return value with Collections.emptyList for pro/verron/officestamper/asciidoc/AsciiDocModel$Row::listOf → KILLED
            return List.of(of(Cell.listOf()));
265
        }
266
267
        private static Row of(List<Cell> cells) {
268 1 1. of : replaced return value with null for pro/verron/officestamper/asciidoc/AsciiDocModel$Row::of → KILLED
            return new Row(cells);
269
        }
270
    }
271
272
    /// Table cell.
273
    ///
274
    /// @param blocks cell content blocks
275
    public record Cell(List<Block> blocks, Optional<String> style) {
276
        public Cell(List<Block> blocks) {
277
            this(blocks, Optional.empty());
278
        }
279
280
        /// Constructor.
281
        ///
282
        /// @param blocks cell content blocks
283
        public Cell(List<Block> blocks, Optional<String> style) {
284
            this.blocks = List.copyOf(blocks);
285
            this.style = style;
286
        }
287
288
        private static List<Cell> listOf() {
289 1 1. listOf : replaced return value with Collections.emptyList for pro/verron/officestamper/asciidoc/AsciiDocModel$Cell::listOf → KILLED
            return List.of(ofInlines(List.of(new Text("A"))), ofInlines(List.of(new Text("B"))));
290
        }
291
292
        /// Creates a new [Cell] instance by wrapping a list of [Inline] elements
293
        /// into a [Paragraph] and adding it to the cell's content blocks.
294
        ///
295
        /// @param inlines the list of [Inline] elements to be wrapped into a [Paragraph]
296
        /// @return a [Cell] containing the specified [Inline] elements as a single [Paragraph]
297
        public static Cell ofInlines(List<Inline> inlines) {
298 1 1. ofInlines : replaced return value with null for pro/verron/officestamper/asciidoc/AsciiDocModel$Cell::ofInlines → KILLED
            return new Cell(List.of(new Paragraph(inlines)));
299
        }
300
    }
301
302
    /// Unordered list.
303
    ///
304
    /// @param items list items
305
    public record UnorderedList(List<ListItem> items)
306
            implements Block {
307
        @Override
308
        public int size() {
309 1 1. size : replaced int return with 0 for pro/verron/officestamper/asciidoc/AsciiDocModel$UnorderedList::size → NO_COVERAGE
            return items.size();
310
        }
311
    }
312
313
    /// Ordered list.
314
    ///
315
    /// @param items list items
316
    public record OrderedList(List<ListItem> items)
317
            implements Block {
318
        @Override
319
        public int size() {
320 1 1. size : replaced int return with 0 for pro/verron/officestamper/asciidoc/AsciiDocModel$OrderedList::size → NO_COVERAGE
            return items.size();
321
        }
322
    }
323
324
    /// List item.
325
    ///
326
    /// @param inlines inline fragments
327
    public record ListItem(List<Inline> inlines) {
328
        /// Constructor.
329
        ///
330
        /// @param inlines inline fragments
331
        public ListItem(List<Inline> inlines) {
332
            this.inlines = List.copyOf(inlines);
333
        }
334
    }
335
336
    /// Blockquote.
337
    ///
338
    /// @param inlines inline fragments
339
    public record Blockquote(List<Inline> inlines)
340
            implements Block {
341
        /// Constructor.
342
        ///
343
        /// @param inlines inline fragments
344
        public Blockquote(List<Inline> inlines) {
345
            this.inlines = List.copyOf(inlines);
346
        }
347
348
        @Override
349
        public int size() {
350 1 1. size : replaced int return with 0 for pro/verron/officestamper/asciidoc/AsciiDocModel$Blockquote::size → NO_COVERAGE
            return 1;
351
        }
352
    }
353
354
    /// Code block.
355
    ///
356
    /// @param language language
357
    /// @param content code content
358
    public record CodeBlock(String language, String content)
359
            implements Block {
360
        @Override
361
        public int size() {
362 1 1. size : replaced int return with 0 for pro/verron/officestamper/asciidoc/AsciiDocModel$CodeBlock::size → NO_COVERAGE
            return 1;
363
        }
364
    }
365
366
    /// Image block.
367
    ///
368
    /// @param url image URL
369
    /// @param altText alternative text
370
    public record ImageBlock(String url, String altText)
371
            implements Block {
372
        @Override
373
        public int size() {
374 1 1. size : replaced int return with 0 for pro/verron/officestamper/asciidoc/AsciiDocModel$ImageBlock::size → NO_COVERAGE
            return 1;
375
        }
376
    }
377
378
    /// Link inline.
379
    ///
380
    /// @param url link URL
381
    /// @param text link text
382
    public record Link(String url, String text)
383
            implements Inline {}
384
385
    /// Inline image.
386
    ///
387
    /// @param path image path
388
    /// @param map alternative text
389
    public record InlineImage(String path, Map<String, String> map)
390
            implements Inline {
391
392
        /// Constructs an instance of the InlineImage class with the specified image path and alternative text mappings.
393
        ///
394
        /// @param path the path to the image
395
        /// @param map a mapping of alternative text attributes associated with the image;
396
        ///            keys and values represent descriptive labels for different use cases or locales
397
        public InlineImage(String path, Map<String, String> map) {
398
            this.path = path;
399
            this.map = Collections.unmodifiableMap(new TreeMap<>(map));
400
        }
401
402
        @Override
403
        public String text() {
404 1 1. text : replaced return value with "" for pro/verron/officestamper/asciidoc/AsciiDocModel$InlineImage::text → NO_COVERAGE
            return path;
405
        }
406
    }
407
408
409
    /// Represents an OpenBlock element in an AsciiDoc model.
410
    ///
411
    /// An OpenBlock is a container for grouping other blocks and includes both header and content sections.
412
    /// The header contains metadata or data relevant to the block, while the content is the list of
413
    /// individual blocks encapsulated within this OpenBlock.
414
    ///
415
    /// This implementation computes the size of the OpenBlock as the sum of the sizes of its content blocks.
416
    ///
417
    /// @param header  a list of strings representing metadata or informational content about the OpenBlock.
418
    /// @param content a list of [Block] elements comprising the actual blocks grouped by this OpenBlock.
419
    ///
420
    /// @see Block
421
    public record OpenBlock(List<String> header, List<Block> content)
422
            implements Block {
423
        @Override
424
        public int size() {
425 1 1. size : replaced int return with 0 for pro/verron/officestamper/asciidoc/AsciiDocModel$OpenBlock::size → NO_COVERAGE
            return content.stream()
426
                          .mapToInt(Block::size)
427
                          .sum();
428
        }
429
    }
430
431
    /// Represents a line break in a document structure.
432
    /// This is a marker record that implements the [Block] interface.
433
    /// It has a fixed size of zero, indicating no content spans across the line break.
434
    public record Break()
435
            implements Block {
436
        @Override
437
        public int size() {
438
            return 0;
439
        }
440
    }
441
442
    /// Represents a comment line in the AsciiDoc document model.
443
    ///
444
    /// A comment line is considered a block-level element but does not contribute
445
    /// any visible content to the output document. It is typically used to store
446
    /// annotations or additional information within the block structure.
447
    ///
448
    /// This class implements the [Block] interface, which mandates
449
    /// implementing the [#size()] method. The size of a comment line
450
    /// is always zero, as it does not represent any visual or measurable content.
451
    ///
452
    /// @param comment the text of the comment line
453
    public record CommentLine(String comment)
454
            implements Block {
455
        @Override
456
        public int size() {
457
            return 0;
458
        }
459
    }
460
461
    /// Represents an inline fragment within a paragraph or heading that is styled with a specific role.
462
    ///
463
    /// A Styled instance encapsulates:
464
    /// - A role, which defines the style or semantic meaning associated with the content.
465
    /// - A list of children, which are other inline elements that are part of this styled fragment.
466
    ///
467
    /// This record implements the Inline interface, providing functionality to retrieve
468
    /// styled text by concatenating the text from all its child inline elements.
469
    ///
470
    /// Responsibilities:
471
    /// - Holds a role and its associated inline content.
472
    /// - Provides a textual representation of the styled content by aggregating the text
473
    ///   from all children inline elements.
474
    public record Styled(String role, List<Inline> children)
475
            implements Inline {
476
        @Override
477
        public String text() {
478
            StringBuilder sb = new StringBuilder();
479
            for (Inline in : children) sb.append(in.text());
480 1 1. text : replaced return value with "" for pro/verron/officestamper/asciidoc/AsciiDocModel$Styled::text → NO_COVERAGE
            return sb.toString();
481
        }
482
    }
483
484
    /// Represents a macro block in an AsciiDoc document, which is a specialized block
485
    /// containing a unique identifier, a name, and a list of associated data.
486
    ///
487
    /// The [MacroBlock] is immutable and implements the [Block] interface.
488
    /// It provides a concrete implementation for determining the size of the block.
489
    ///
490
    /// @param name the name of the macro block
491
    /// @param id the unique identifier for the macro block
492
    /// @param list an ordered list of strings associated with the macro block
493
    public record MacroBlock(String name, String id, List<String> list)
494
            implements Block {
495
        @Override
496
        public int size() {
497 1 1. size : replaced int return with 0 for pro/verron/officestamper/asciidoc/AsciiDocModel$MacroBlock::size → NO_COVERAGE
            return 1;
498
        }
499
    }
500
501
    /// Represents an inline macro in an AsciiDoc document.
502
    /// An inline macro is a specialized inline element with a name, an identifier,
503
    /// and a list of string values that represent its content.
504
    ///
505
    /// @param name the name of the macro, describing its purpose or type
506
    /// @param id   an identifier associated with the macro, often used for reference
507
    /// @param list a list of strings representing the components of the macro's content
508
    public record InlineMacro(String name, String id, List<String> list)
509
            implements Inline {
510
511
        @Override
512
        public String text() {
513 1 1. text : replaced return value with "" for pro/verron/officestamper/asciidoc/AsciiDocModel$InlineMacro::text → NO_COVERAGE
            return String.join("", list);
514
        }
515
    }
516
}

Mutations

26

1.1
Location : of
Killed by : pro.verron.officestamper.asciidoc.test.AsciiDocParserTest.[engine:junit-jupiter]/[class:pro.verron.officestamper.asciidoc.test.AsciiDocParserTest]/[test-template:parse_shouldReturnEmptyModel_whenInputIsNull(java.lang.String)]/[test-template-invocation:#2]
replaced return value with null for pro/verron/officestamper/asciidoc/AsciiDocModel::of → KILLED

33

1.1
Location : getBlocks
Killed by : pro.verron.officestamper.asciidoc.test.AsciiDocParserTest.[engine:junit-jupiter]/[class:pro.verron.officestamper.asciidoc.test.AsciiDocParserTest]/[method:parse_shouldParseImageBlock()]
replaced return value with Collections.emptyList for pro/verron/officestamper/asciidoc/AsciiDocModel::getBlocks → KILLED

82

1.1
Location : size
Killed by : none
replaced int return with 0 for pro/verron/officestamper/asciidoc/AsciiDocModel$Heading::size → NO_COVERAGE

110

1.1
Location : size
Killed by : none
replaced int return with 0 for pro/verron/officestamper/asciidoc/AsciiDocModel$Paragraph::size → SURVIVED
Covering tests

136

1.1
Location : text
Killed by : pro.verron.officestamper.asciidoc.test.AsciiDocParserTest.[engine:junit-jupiter]/[class:pro.verron.officestamper.asciidoc.test.AsciiDocParserTest]/[method:parse_shouldParseInlines()]
replaced return value with "" for pro/verron/officestamper/asciidoc/AsciiDocModel$Bold::text → KILLED

163

1.1
Location : text
Killed by : none
replaced return value with "" for pro/verron/officestamper/asciidoc/AsciiDocModel$Sup::text → NO_COVERAGE

186

1.1
Location : text
Killed by : none
replaced return value with "" for pro/verron/officestamper/asciidoc/AsciiDocModel$Sub::text → NO_COVERAGE

206

1.1
Location : text
Killed by : pro.verron.officestamper.asciidoc.test.AsciiDocParserTest.[engine:junit-jupiter]/[class:pro.verron.officestamper.asciidoc.test.AsciiDocParserTest]/[method:parse_shouldParseInlines()]
replaced return value with "" for pro/verron/officestamper/asciidoc/AsciiDocModel$Italic::text → KILLED

215

1.1
Location : text
Killed by : none
replaced return value with "" for pro/verron/officestamper/asciidoc/AsciiDocModel$Tab::text → NO_COVERAGE

233

1.1
Location : size
Killed by : none
replaced int return with 0 for pro/verron/officestamper/asciidoc/AsciiDocModel$Table::size → SURVIVED
Covering tests

264

1.1
Location : listOf
Killed by : pro.verron.officestamper.asciidoc.test.DocxToAsciiDocTest.[engine:junit-jupiter]/[class:pro.verron.officestamper.asciidoc.test.DocxToAsciiDocTest]/[method:shouldRenderNestedTable()]
replaced return value with Collections.emptyList for pro/verron/officestamper/asciidoc/AsciiDocModel$Row::listOf → KILLED

268

1.1
Location : of
Killed by : pro.verron.officestamper.asciidoc.test.DocxToAsciiDocTest.[engine:junit-jupiter]/[class:pro.verron.officestamper.asciidoc.test.DocxToAsciiDocTest]/[method:shouldRenderNestedTable()]
replaced return value with null for pro/verron/officestamper/asciidoc/AsciiDocModel$Row::of → KILLED

289

1.1
Location : listOf
Killed by : pro.verron.officestamper.asciidoc.test.DocxToAsciiDocTest.[engine:junit-jupiter]/[class:pro.verron.officestamper.asciidoc.test.DocxToAsciiDocTest]/[method:shouldRenderNestedTable()]
replaced return value with Collections.emptyList for pro/verron/officestamper/asciidoc/AsciiDocModel$Cell::listOf → KILLED

298

1.1
Location : ofInlines
Killed by : pro.verron.officestamper.asciidoc.test.AsciiDocParserTest.[engine:junit-jupiter]/[class:pro.verron.officestamper.asciidoc.test.AsciiDocParserTest]/[method:parse_shouldParseTable()]
replaced return value with null for pro/verron/officestamper/asciidoc/AsciiDocModel$Cell::ofInlines → KILLED

309

1.1
Location : size
Killed by : none
replaced int return with 0 for pro/verron/officestamper/asciidoc/AsciiDocModel$UnorderedList::size → NO_COVERAGE

320

1.1
Location : size
Killed by : none
replaced int return with 0 for pro/verron/officestamper/asciidoc/AsciiDocModel$OrderedList::size → NO_COVERAGE

350

1.1
Location : size
Killed by : none
replaced int return with 0 for pro/verron/officestamper/asciidoc/AsciiDocModel$Blockquote::size → NO_COVERAGE

362

1.1
Location : size
Killed by : none
replaced int return with 0 for pro/verron/officestamper/asciidoc/AsciiDocModel$CodeBlock::size → NO_COVERAGE

374

1.1
Location : size
Killed by : none
replaced int return with 0 for pro/verron/officestamper/asciidoc/AsciiDocModel$ImageBlock::size → NO_COVERAGE

404

1.1
Location : text
Killed by : none
replaced return value with "" for pro/verron/officestamper/asciidoc/AsciiDocModel$InlineImage::text → NO_COVERAGE

425

1.1
Location : size
Killed by : none
replaced int return with 0 for pro/verron/officestamper/asciidoc/AsciiDocModel$OpenBlock::size → NO_COVERAGE

480

1.1
Location : text
Killed by : none
replaced return value with "" for pro/verron/officestamper/asciidoc/AsciiDocModel$Styled::text → NO_COVERAGE

497

1.1
Location : size
Killed by : none
replaced int return with 0 for pro/verron/officestamper/asciidoc/AsciiDocModel$MacroBlock::size → NO_COVERAGE

513

1.1
Location : text
Killed by : none
replaced return value with "" for pro/verron/officestamper/asciidoc/AsciiDocModel$InlineMacro::text → NO_COVERAGE

Active mutators

Tests examined


Report generated by PIT 1.23.1 support