1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.doxia.module.markdown;
20
21 import java.io.IOException;
22
23 import org.apache.commons.io.output.NullWriter;
24 import org.junit.jupiter.api.BeforeEach;
25 import org.junit.jupiter.api.Test;
26 import org.junit.jupiter.params.ParameterizedTest;
27 import org.junit.jupiter.params.provider.ValueSource;
28
29 import static org.junit.jupiter.api.Assertions.assertFalse;
30 import static org.junit.jupiter.api.Assertions.assertTrue;
31
32 class LastTwoLinesBufferingWriterTest {
33
34 private LastTwoLinesBufferingWriter writer;
35
36 @BeforeEach
37 void setup() {
38 writer = new LastTwoLinesBufferingWriter(NullWriter.INSTANCE);
39 }
40
41 @Test
42 void testEmptyWriter() {
43 assertTrue(writer.isWriterAfterBlankLine());
44 assertTrue(writer.isWriterAtStartOfNewLine());
45 }
46
47 @Test
48 void testWriterWithOneBlankLine() throws IOException {
49 writer.write(" " + System.lineSeparator());
50 assertTrue(writer.isWriterAfterBlankLine());
51 assertTrue(writer.isWriterAtStartOfNewLine());
52 }
53
54 @Test
55 void testWriterWithOneNonBlankLine() throws IOException {
56 writer.write("not blank " + System.lineSeparator());
57 assertFalse(writer.isWriterAfterBlankLine());
58 assertTrue(writer.isWriterAtStartOfNewLine());
59 }
60
61 @Test
62 void testWriterWithTwoBlankLines() throws IOException {
63 writer.write(" " + System.lineSeparator());
64 writer.write(" " + System.lineSeparator());
65 assertTrue(writer.isWriterAfterBlankLine());
66 assertTrue(writer.isWriterAtStartOfNewLine());
67
68 writer.write(" ");
69 writer.write(System.lineSeparator());
70 writer.write(" ");
71 writer.write(System.lineSeparator());
72 assertTrue(writer.isWriterAfterBlankLine());
73 assertTrue(writer.isWriterAtStartOfNewLine());
74 }
75
76 @Test
77 void testWriterWithNonBlankLineFollowingBlankLine() throws IOException {
78 writer.write("\t" + System.lineSeparator());
79 writer.write("test");
80 assertFalse(writer.isWriterAfterBlankLine());
81 assertFalse(writer.isWriterAtStartOfNewLine());
82 }
83
84 @Test
85 void testWriterWithBlankLineFollowingNonBlankLine() throws IOException {
86 writer.write("test");
87 writer.write(System.lineSeparator());
88 writer.write(System.lineSeparator());
89 assertTrue(writer.isWriterAfterBlankLine());
90 assertTrue(writer.isWriterAtStartOfNewLine());
91 }
92
93 @ParameterizedTest()
94 @ValueSource(strings = {"\n", "\r\n"})
95 void testDifferentLineSeparators(String lineSeparator) throws IOException {
96 writer = new LastTwoLinesBufferingWriter(NullWriter.INSTANCE, lineSeparator);
97 writer.write("text" + lineSeparator);
98 assertFalse(writer.isWriterAfterBlankLine());
99 assertTrue(writer.isWriterAtStartOfNewLine());
100 writer.write("text" + lineSeparator + lineSeparator + " ");
101 assertTrue(writer.isWriterAfterBlankLine());
102 assertFalse(writer.isWriterAtStartOfNewLine());
103 }
104 }