Skip to content

Commit a951961

Browse files
author
Eugen
committed
Merge pull request eugenp#48 from Doha2012/master
add TestReader to test Read from file
2 parents f024fd8 + d1bc7d2 commit a951961

1 file changed

Lines changed: 247 additions & 0 deletions

File tree

Lines changed: 247 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,247 @@
1+
package org.baeldung.java.io;
2+
3+
import static org.junit.Assert.assertEquals;
4+
import static org.junit.Assert.assertTrue;
5+
6+
import java.io.BufferedOutputStream;
7+
import java.io.BufferedReader;
8+
import java.io.BufferedWriter;
9+
import java.io.DataInputStream;
10+
import java.io.DataOutputStream;
11+
import java.io.File;
12+
import java.io.FileInputStream;
13+
import java.io.FileOutputStream;
14+
import java.io.FileReader;
15+
import java.io.FileWriter;
16+
import java.io.IOException;
17+
import java.io.InputStreamReader;
18+
import java.io.RandomAccessFile;
19+
import java.io.SequenceInputStream;
20+
import java.io.StreamTokenizer;
21+
import java.nio.ByteBuffer;
22+
import java.nio.channels.FileChannel;
23+
import java.nio.file.Files;
24+
import java.nio.file.Path;
25+
import java.nio.file.Paths;
26+
import java.util.Enumeration;
27+
import java.util.Scanner;
28+
import java.util.Vector;
29+
30+
import org.junit.Test;
31+
32+
33+
/*
34+
MappedByteBuffer
35+
36+
*/
37+
public class TestReader {
38+
39+
@Test
40+
public void whenReadWithBufferedReader_thenCorrect() throws IOException {
41+
final String str = "Hello world";
42+
43+
final BufferedWriter writer = new BufferedWriter(new FileWriter("src/test/resources/test_read.txt"));
44+
writer.write(str);
45+
writer.close();
46+
47+
final BufferedReader reader = new BufferedReader(new FileReader("src/test/resources/test_read.txt"));
48+
final String currentLine = reader.readLine();
49+
reader.close();
50+
51+
assertEquals(str, currentLine);
52+
}
53+
54+
@Test
55+
public void whenReadWithScanner_thenCorrect() throws IOException {
56+
final String str = "Hello world 1 2,3,4";
57+
final BufferedWriter writer = new BufferedWriter(new FileWriter("src/test/resources/test_read.txt"));
58+
writer.write(str);
59+
writer.close();
60+
61+
final Scanner scanner = new Scanner(new File("src/test/resources/test_read.txt"));
62+
scanner.useDelimiter(" ");
63+
64+
assertTrue(scanner.hasNext());
65+
assertEquals("Hello", scanner.next());
66+
assertEquals("world", scanner.next());
67+
assertEquals(1, scanner.nextInt());
68+
69+
scanner.useDelimiter(",| ");
70+
71+
assertTrue(scanner.hasNextInt());
72+
assertEquals(2, scanner.nextInt());
73+
assertEquals(3, scanner.nextInt());
74+
assertEquals(4, scanner.nextInt());
75+
76+
scanner.close();
77+
78+
}
79+
80+
@Test
81+
public void whenReadWithStreamTokenizer_thenCorrectTokens() throws IOException {
82+
final String str = "Hello 1";
83+
final BufferedWriter writer = new BufferedWriter(new FileWriter("src/test/resources/test_read.txt"));
84+
writer.write(str);
85+
writer.close();
86+
87+
final FileReader reader = new FileReader("src/test/resources/test_read.txt");
88+
final StreamTokenizer tokenizer = new StreamTokenizer(reader);
89+
90+
tokenizer.nextToken();
91+
assertEquals(StreamTokenizer.TT_WORD, tokenizer.ttype);
92+
assertEquals("Hello", tokenizer.sval);
93+
tokenizer.nextToken();
94+
assertEquals(StreamTokenizer.TT_NUMBER, tokenizer.ttype);
95+
assertEquals(1, tokenizer.nval, 0.0000001);
96+
97+
tokenizer.nextToken();
98+
assertEquals(StreamTokenizer.TT_EOF, tokenizer.ttype);
99+
reader.close();
100+
}
101+
102+
@Test
103+
public void whenReadWithDataInputStream_thenCorrect() throws IOException {
104+
final String value = "Hello";
105+
final DataOutputStream outStream = new DataOutputStream(new BufferedOutputStream(new FileOutputStream("src/test/resources/test_read.txt")));
106+
outStream.writeUTF(value);
107+
outStream.close();
108+
109+
String result;
110+
final DataInputStream reader = new DataInputStream(new FileInputStream("src/test/resources/test_read.txt"));
111+
result = reader.readUTF();
112+
reader.close();
113+
114+
assertEquals(value, result);
115+
}
116+
117+
public void whenReadTwoFilesWithSequenceInputStream_thenCorrect() throws IOException {
118+
final int value1 = 2000;
119+
final int value2 = 5000;
120+
FileOutputStream writer = new FileOutputStream("src/test/resources/test_read.txt");
121+
writer.write(value1);
122+
writer.close();
123+
writer = new FileOutputStream("src/test/resources/test_read1.txt");
124+
writer.write(value2);
125+
writer.close();
126+
127+
final FileInputStream stream1 = new FileInputStream("src/test/resources/test_read.txt");
128+
final FileInputStream stream2 = new FileInputStream("src/test/resources/test_read1.txt");
129+
130+
final SequenceInputStream sequence = new SequenceInputStream(stream1, stream2);
131+
final DataInputStream reader = new DataInputStream(sequence);
132+
133+
assertEquals(value1, reader.readInt());
134+
assertEquals(value2, reader.readInt());
135+
136+
reader.close();
137+
stream2.close();
138+
}
139+
140+
@Test
141+
public void whenReadAllFilesInFolder_thenCorrect() throws IOException {
142+
143+
final File dir = new File("src/test/resources");
144+
final File[] allFiles = dir.listFiles();
145+
final int noOfFiles = allFiles.length;
146+
147+
final Vector<FileInputStream> allStreams = new Vector<FileInputStream>();
148+
149+
for (int i = 0; i < noOfFiles; i++) {
150+
allStreams.add(new FileInputStream(allFiles[i]));
151+
}
152+
153+
final Enumeration<FileInputStream> enu = allStreams.elements();
154+
final SequenceInputStream sequence = new SequenceInputStream(enu);
155+
156+
final BufferedReader reader = new BufferedReader(new InputStreamReader(sequence));
157+
158+
String line = reader.readLine();
159+
while (line != null) {
160+
line = reader.readLine();
161+
}
162+
reader.close();
163+
sequence.close();
164+
}
165+
166+
@Test
167+
public void whenReadUTFEncodedFile_thenCorrect() throws IOException {
168+
final String str = "青空";
169+
final BufferedWriter writer = new BufferedWriter(new FileWriter("src/test/resources/test_read.txt"));
170+
writer.write(str);
171+
writer.close();
172+
173+
final BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("src/test/resources/test_read.txt"), "UTF-8"));
174+
final String currentLine = reader.readLine();
175+
reader.close();
176+
177+
assertEquals(str, currentLine);
178+
}
179+
180+
@Test
181+
public void whenReadFileContentsIntoString_thenCorrect() throws IOException {
182+
final String str = "Hello world \n Test line \n";
183+
final BufferedWriter writer = new BufferedWriter(new FileWriter("src/test/resources/test_read.txt"));
184+
writer.write(str);
185+
writer.close();
186+
187+
final BufferedReader reader = new BufferedReader(new FileReader("src/test/resources/test_read.txt"));
188+
final StringBuilder builder = new StringBuilder();
189+
String currentLine = reader.readLine();
190+
while (currentLine != null) {
191+
builder.append(currentLine);
192+
builder.append("\n");
193+
currentLine = reader.readLine();
194+
}
195+
196+
reader.close();
197+
198+
assertEquals(str, builder.toString());
199+
}
200+
201+
@Test
202+
public void whenReadWithFileChannel_thenCorrect() throws IOException {
203+
final String str = "Hello world";
204+
final BufferedWriter writer = new BufferedWriter(new FileWriter("src/test/resources/test_read.txt"));
205+
writer.write(str);
206+
writer.close();
207+
208+
final RandomAccessFile reader = new RandomAccessFile("src/test/resources/test_read.txt", "r");
209+
final FileChannel channel = reader.getChannel();
210+
211+
int bufferSize = 1024;
212+
if (bufferSize > channel.size())
213+
bufferSize = (int) channel.size();
214+
final ByteBuffer buff = ByteBuffer.allocate(bufferSize);
215+
channel.read(buff);
216+
buff.flip();
217+
assertEquals(str, new String(buff.array()));
218+
channel.close();
219+
reader.close();
220+
}
221+
222+
@Test
223+
public void whenReadSmallFileJava7_thenCorrect() throws IOException {
224+
final String str = "Hello world";
225+
226+
final Path path = Paths.get("src/test/resources/test_read.txt");
227+
final byte[] strToBytes = str.getBytes();
228+
Files.write(path, strToBytes);
229+
230+
final String read = Files.readAllLines(path).get(0);
231+
assertEquals(str, read);
232+
}
233+
234+
@Test
235+
public void whenReadLargeFileJava7_thenCorrect() throws IOException {
236+
final String str = "Hello world";
237+
238+
final Path path = Paths.get("src/test/resources/test_read.txt");
239+
final byte[] strToBytes = str.getBytes();
240+
Files.write(path, strToBytes);
241+
242+
final BufferedReader reader = Files.newBufferedReader(path);
243+
final String line = reader.readLine();
244+
assertEquals(str, line);
245+
}
246+
247+
}

0 commit comments

Comments
 (0)