View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *   http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
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          // try writing the same two lines in other blocks
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 }