2828import org .junit .jupiter .api .Test ;
2929
3030/**
31- *
31+ * Test {@link ExtendedBufferedReader}.
3232 */
3333public class ExtendedBufferedReaderTest {
3434
35+ private ExtendedBufferedReader createBufferedReader (final String s ) {
36+ return new ExtendedBufferedReader (new StringReader (s ));
37+ }
38+
3539 @ Test
3640 public void testEmptyInput () throws Exception {
3741 try (final ExtendedBufferedReader br = createBufferedReader ("" )) {
@@ -43,6 +47,97 @@ public void testEmptyInput() throws Exception {
4347 }
4448 }
4549
50+ /*
51+ * Test to illustrate https://issues.apache.org/jira/browse/CSV-75
52+ *
53+ */
54+ @ Test
55+ public void testReadChar () throws Exception {
56+ final String LF = "\n " ;
57+ final String CR = "\r " ;
58+ final String CRLF = CR + LF ;
59+ final String LFCR = LF + CR ;// easier to read the string below
60+ final String test = "a" + LF + "b" + CR + "c" + LF + LF + "d" + CR + CR + "e" + LFCR + "f " + CRLF ;
61+ // EOL eol EOL EOL eol eol EOL+CR EOL
62+ final int EOLeolct = 9 ;
63+
64+ try (final ExtendedBufferedReader br = createBufferedReader (test )) {
65+ assertEquals (0 , br .getCurrentLineNumber ());
66+ while (br .readLine () != null ) {
67+ // consume all
68+ }
69+ assertEquals (EOLeolct , br .getCurrentLineNumber ());
70+ }
71+ try (final ExtendedBufferedReader br = createBufferedReader (test )) {
72+ assertEquals (0 , br .getCurrentLineNumber ());
73+ while (br .read () != -1 ) {
74+ // consume all
75+ }
76+ assertEquals (EOLeolct , br .getCurrentLineNumber ());
77+ }
78+ try (final ExtendedBufferedReader br = createBufferedReader (test )) {
79+ assertEquals (0 , br .getCurrentLineNumber ());
80+ final char [] buff = new char [10 ];
81+ while (br .read (buff , 0 , 3 ) != -1 ) {
82+ // consume all
83+ }
84+ assertEquals (EOLeolct , br .getCurrentLineNumber ());
85+ }
86+ }
87+
88+ @ Test
89+ public void testReadingInDifferentBuffer () throws Exception {
90+ char [] tmp1 = new char [2 ], tmp2 = new char [4 ];
91+ try (ExtendedBufferedReader reader = createBufferedReader ("1\r \n 2\r \n " )) {
92+ reader .read (tmp1 , 0 , 2 );
93+ reader .read (tmp2 , 2 , 2 );
94+ assertEquals (2 , reader .getCurrentLineNumber ());
95+ }
96+ }
97+
98+ @ Test
99+ public void testReadLine () throws Exception {
100+ try (final ExtendedBufferedReader br = createBufferedReader ("" )) {
101+ assertNull (br .readLine ());
102+ }
103+ try (final ExtendedBufferedReader br = createBufferedReader ("\n " )) {
104+ assertEquals ("" , br .readLine ());
105+ assertNull (br .readLine ());
106+ }
107+ try (final ExtendedBufferedReader br = createBufferedReader ("foo\n \n hello" )) {
108+ assertEquals (0 , br .getCurrentLineNumber ());
109+ assertEquals ("foo" , br .readLine ());
110+ assertEquals (1 , br .getCurrentLineNumber ());
111+ assertEquals ("" , br .readLine ());
112+ assertEquals (2 , br .getCurrentLineNumber ());
113+ assertEquals ("hello" , br .readLine ());
114+ assertEquals (3 , br .getCurrentLineNumber ());
115+ assertNull (br .readLine ());
116+ assertEquals (3 , br .getCurrentLineNumber ());
117+ }
118+ try (final ExtendedBufferedReader br = createBufferedReader ("foo\n \n hello" )) {
119+ assertEquals ('f' , br .read ());
120+ assertEquals ('o' , br .lookAhead ());
121+ assertEquals ("oo" , br .readLine ());
122+ assertEquals (1 , br .getCurrentLineNumber ());
123+ assertEquals ('\n' , br .lookAhead ());
124+ assertEquals ("" , br .readLine ());
125+ assertEquals (2 , br .getCurrentLineNumber ());
126+ assertEquals ('h' , br .lookAhead ());
127+ assertEquals ("hello" , br .readLine ());
128+ assertNull (br .readLine ());
129+ assertEquals (3 , br .getCurrentLineNumber ());
130+ }
131+ try (final ExtendedBufferedReader br = createBufferedReader ("foo\r baar\r \n foo" )) {
132+ assertEquals ("foo" , br .readLine ());
133+ assertEquals ('b' , br .lookAhead ());
134+ assertEquals ("baar" , br .readLine ());
135+ assertEquals ('f' , br .lookAhead ());
136+ assertEquals ("foo" , br .readLine ());
137+ assertNull (br .readLine ());
138+ }
139+ }
140+
46141 @ Test
47142 public void testReadLookahead1 () throws Exception {
48143 try (final ExtendedBufferedReader br = createBufferedReader ("1\n 2\r 3\n " )) {
@@ -122,98 +217,4 @@ public void testReadLookahead2() throws Exception {
122217 assertEquals ('d' , br .getLastChar ());
123218 }
124219 }
125-
126- @ Test
127- public void testReadLine () throws Exception {
128- try (final ExtendedBufferedReader br = createBufferedReader ("" )) {
129- assertNull (br .readLine ());
130- }
131- try (final ExtendedBufferedReader br = createBufferedReader ("\n " )) {
132- assertEquals ("" , br .readLine ());
133- assertNull (br .readLine ());
134- }
135- try (final ExtendedBufferedReader br = createBufferedReader ("foo\n \n hello" )) {
136- assertEquals (0 , br .getCurrentLineNumber ());
137- assertEquals ("foo" , br .readLine ());
138- assertEquals (1 , br .getCurrentLineNumber ());
139- assertEquals ("" , br .readLine ());
140- assertEquals (2 , br .getCurrentLineNumber ());
141- assertEquals ("hello" , br .readLine ());
142- assertEquals (3 , br .getCurrentLineNumber ());
143- assertNull (br .readLine ());
144- assertEquals (3 , br .getCurrentLineNumber ());
145- }
146- try (final ExtendedBufferedReader br = createBufferedReader ("foo\n \n hello" )) {
147- assertEquals ('f' , br .read ());
148- assertEquals ('o' , br .lookAhead ());
149- assertEquals ("oo" , br .readLine ());
150- assertEquals (1 , br .getCurrentLineNumber ());
151- assertEquals ('\n' , br .lookAhead ());
152- assertEquals ("" , br .readLine ());
153- assertEquals (2 , br .getCurrentLineNumber ());
154- assertEquals ('h' , br .lookAhead ());
155- assertEquals ("hello" , br .readLine ());
156- assertNull (br .readLine ());
157- assertEquals (3 , br .getCurrentLineNumber ());
158- }
159- try (final ExtendedBufferedReader br = createBufferedReader ("foo\r baar\r \n foo" )) {
160- assertEquals ("foo" , br .readLine ());
161- assertEquals ('b' , br .lookAhead ());
162- assertEquals ("baar" , br .readLine ());
163- assertEquals ('f' , br .lookAhead ());
164- assertEquals ("foo" , br .readLine ());
165- assertNull (br .readLine ());
166- }
167- }
168-
169- /*
170- * Test to illustrate https://issues.apache.org/jira/browse/CSV-75
171- *
172- */
173- @ Test
174- public void testReadChar () throws Exception {
175- final String LF = "\n " ;
176- final String CR = "\r " ;
177- final String CRLF = CR + LF ;
178- final String LFCR = LF + CR ;// easier to read the string below
179- final String test = "a" + LF + "b" + CR + "c" + LF + LF + "d" + CR + CR + "e" + LFCR + "f " + CRLF ;
180- // EOL eol EOL EOL eol eol EOL+CR EOL
181- final int EOLeolct = 9 ;
182-
183- try (final ExtendedBufferedReader br = createBufferedReader (test )) {
184- assertEquals (0 , br .getCurrentLineNumber ());
185- while (br .readLine () != null ) {
186- // consume all
187- }
188- assertEquals (EOLeolct , br .getCurrentLineNumber ());
189- }
190- try (final ExtendedBufferedReader br = createBufferedReader (test )) {
191- assertEquals (0 , br .getCurrentLineNumber ());
192- while (br .read () != -1 ) {
193- // consume all
194- }
195- assertEquals (EOLeolct , br .getCurrentLineNumber ());
196- }
197- try (final ExtendedBufferedReader br = createBufferedReader (test )) {
198- assertEquals (0 , br .getCurrentLineNumber ());
199- final char [] buff = new char [10 ];
200- while (br .read (buff , 0 , 3 ) != -1 ) {
201- // consume all
202- }
203- assertEquals (EOLeolct , br .getCurrentLineNumber ());
204- }
205- }
206-
207- @ Test
208- public void testReadingInDifferentBuffer () throws Exception {
209- char [] tmp1 = new char [2 ], tmp2 = new char [4 ];
210- ExtendedBufferedReader br = createBufferedReader ("1\r \n 2\r \n " );
211- br .read (tmp1 , 0 , 2 );
212- br .read (tmp2 , 2 , 2 );
213- assertEquals (2 , br .getCurrentLineNumber ());
214- }
215-
216- private ExtendedBufferedReader createBufferedReader (final String s ) {
217- return new ExtendedBufferedReader (new StringReader (s ));
218- }
219220}
0 commit comments