2
* Licensed to the Apache Software Foundation (ASF) under one or more
3
* contributor license agreements. See the NOTICE file distributed with
4
* this work for additional information regarding copyright ownership.
5
* The ASF licenses this file to You under the Apache License, Version 2.0
6
* (the "License"); you may not use this file except in compliance with
7
* the License. You may obtain a copy of the License at
9
* http://www.apache.org/licenses/LICENSE-2.0
11
* Unless required by applicable law or agreed to in writing, software
12
* distributed under the License is distributed on an "AS IS" BASIS,
13
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
* See the License for the specific language governing permissions and
15
* limitations under the License.
17
package org.apache.commons.csv;
19
import java.io.StringReader;
20
import java.util.Arrays;
22
import junit.framework.Test;
23
import junit.framework.TestCase;
24
import junit.framework.TestSuite;
27
* ExtendedBufferedReaderTest
30
public class ExtendedBufferedReaderTest extends TestCase {
32
private StringBuffer buf = null;
33
private ExtendedBufferedReader br = null;
36
* Constructor for ExtendedBufferedReaderTest.
39
public ExtendedBufferedReaderTest(String arg0) {
43
public static Test suite() {
44
return new TestSuite(ExtendedBufferedReaderTest.class);
47
// ======================================================
49
// ======================================================
51
public void testConstructors() {
52
br = new ExtendedBufferedReader(new StringReader(""));
53
br = new ExtendedBufferedReader(new StringReader(""), 10);
56
public void testReadLookahead1() throws Exception {
58
assertEquals(ExtendedBufferedReader.END_OF_STREAM, getEBR("").read());
59
br = getEBR("1\n2\r3\n");
60
assertEquals('1', br.lookAhead());
61
assertEquals(ExtendedBufferedReader.UNDEFINED, br.readAgain());
62
assertEquals('1', br.read());
63
assertEquals('1', br.readAgain());
65
assertEquals(0, br.getLineNumber());
66
assertEquals('\n', br.lookAhead());
67
assertEquals(0, br.getLineNumber());
68
assertEquals('1', br.readAgain());
69
assertEquals('\n', br.read());
70
assertEquals(1, br.getLineNumber());
71
assertEquals('\n', br.readAgain());
72
assertEquals(1, br.getLineNumber());
74
assertEquals('2', br.lookAhead());
75
assertEquals(1, br.getLineNumber());
76
assertEquals('\n', br.readAgain());
77
assertEquals(1, br.getLineNumber());
78
assertEquals('2', br.read());
79
assertEquals('2', br.readAgain());
81
assertEquals('\r', br.lookAhead());
82
assertEquals('2', br.readAgain());
83
assertEquals('\r', br.read());
84
assertEquals('\r', br.readAgain());
86
assertEquals('3', br.lookAhead());
87
assertEquals('\r', br.readAgain());
88
assertEquals('3', br.read());
89
assertEquals('3', br.readAgain());
91
assertEquals('\n', br.lookAhead());
92
assertEquals(1, br.getLineNumber());
93
assertEquals('3', br.readAgain());
94
assertEquals('\n', br.read());
95
assertEquals(2, br.getLineNumber());
96
assertEquals('\n', br.readAgain());
97
assertEquals(2, br.getLineNumber());
99
assertEquals(ExtendedBufferedReader.END_OF_STREAM, br.lookAhead());
100
assertEquals('\n', br.readAgain());
101
assertEquals(ExtendedBufferedReader.END_OF_STREAM, br.read());
102
assertEquals(ExtendedBufferedReader.END_OF_STREAM, br.readAgain());
103
assertEquals(ExtendedBufferedReader.END_OF_STREAM, br.read());
104
assertEquals(ExtendedBufferedReader.END_OF_STREAM, br.lookAhead());
109
public void testReadLookahead2() throws Exception {
110
char[] ref = new char[5];
111
char[] res = new char[5];
114
assertEquals(0, br.read(res, 0, 0));
115
assertTrue(Arrays.equals(res, ref));
117
br = getEBR("abcdefg");
121
assertEquals(3, br.read(res, 0, 3));
122
assertTrue(Arrays.equals(res, ref));
123
assertEquals('c', br.readAgain());
125
assertEquals('d', br.lookAhead());
127
assertEquals(1, br.read(res, 4, 1));
128
assertTrue(Arrays.equals(res, ref));
129
assertEquals('d', br.readAgain());
133
public void testMarkSupported() {
134
assertFalse(getEBR("foo").markSupported());
137
public void testReadLine() throws Exception {
139
assertTrue(br.readLine() == null);
142
assertTrue(br.readLine().equals(""));
143
assertTrue(br.readLine() == null);
145
br = getEBR("foo\n\nhello");
146
assertEquals(0, br.getLineNumber());
147
assertTrue(br.readLine().equals("foo"));
148
assertEquals(1, br.getLineNumber());
149
assertTrue(br.readLine().equals(""));
150
assertEquals(2, br.getLineNumber());
151
assertTrue(br.readLine().equals("hello"));
152
assertEquals(3, br.getLineNumber());
153
assertTrue(br.readLine() == null);
154
assertEquals(3, br.getLineNumber());
156
br = getEBR("foo\n\nhello");
157
assertEquals('f', br.read());
158
assertEquals('o', br.lookAhead());
159
assertTrue(br.readLine().equals("oo"));
160
assertEquals(1, br.getLineNumber());
161
assertEquals('\n', br.lookAhead());
162
assertTrue(br.readLine().equals(""));
163
assertEquals(2, br.getLineNumber());
164
assertEquals('h', br.lookAhead());
165
assertTrue(br.readLine().equals("hello"));
166
assertTrue(br.readLine() == null);
167
assertEquals(3, br.getLineNumber());
170
br = getEBR("foo\rbaar\r\nfoo");
171
assertTrue(br.readLine().equals("foo"));
172
assertEquals('b', br.lookAhead());
173
assertTrue(br.readLine().equals("baar"));
174
assertEquals('f', br.lookAhead());
175
assertTrue(br.readLine().equals("foo"));
176
assertTrue(br.readLine() == null);
179
public void testSkip0() throws Exception {
182
assertEquals(0, br.skip(0));
183
assertEquals(0, br.skip(1));
186
assertEquals(0, br.skip(1));
188
br = getEBR("abcdefg");
189
assertEquals(0, br.skip(0));
190
assertEquals('a', br.lookAhead());
191
assertEquals(0, br.skip(0));
192
assertEquals('a', br.lookAhead());
193
assertEquals(1, br.skip(1));
194
assertEquals('b', br.lookAhead());
195
assertEquals('b', br.read());
196
assertEquals(3, br.skip(3));
197
assertEquals('f', br.lookAhead());
198
assertEquals(2, br.skip(5));
199
assertTrue(br.readLine() == null);
201
br = getEBR("12345");
202
assertEquals(5, br.skip(5));
203
assertTrue (br.lookAhead() == ExtendedBufferedReader.END_OF_STREAM);
206
public void testSkipUntil() throws Exception {
208
assertEquals(0, br.skipUntil(';'));
209
br = getEBR("ABCDEF,GHL,,MN");
210
assertEquals(6, br.skipUntil(','));
211
assertEquals(0, br.skipUntil(','));
213
assertEquals(3, br.skipUntil(','));
215
assertEquals(0, br.skipUntil(','));
217
assertEquals(2, br.skipUntil(','));
220
public void testReadUntil() throws Exception {
222
assertTrue(br.readUntil(';').equals(""));
223
br = getEBR("ABCDEF;GHL;;MN");
224
assertTrue(br.readUntil(';').equals("ABCDEF"));
225
assertTrue(br.readUntil(';').length() == 0);
227
assertTrue(br.readUntil(';').equals("GHL"));
229
assertTrue(br.readUntil(';').equals(""));
231
assertTrue(br.readUntil(',').equals("MN"));
234
private ExtendedBufferedReader getEBR(String s) {
235
return new ExtendedBufferedReader(new StringReader(s));