Skip to content

Commit f32730e

Browse files
committed
Add TestWriter
TestWriter contain methods used in Article Java - Write to file
1 parent 686fdd8 commit f32730e

1 file changed

Lines changed: 202 additions & 0 deletions

File tree

Lines changed: 202 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,202 @@
1+
package test;
2+
3+
import java.io.BufferedInputStream;
4+
import java.io.BufferedOutputStream;
5+
import java.io.DataInputStream;
6+
import java.io.DataOutputStream;
7+
import java.io.FileInputStream;
8+
import java.io.FileOutputStream;
9+
import java.io.FileReader;
10+
import java.io.FileWriter;
11+
import java.io.IOException;
12+
import java.io.ObjectInputStream;
13+
import java.io.ObjectOutputStream;
14+
import java.io.RandomAccessFile;
15+
import java.util.List;
16+
17+
import au.com.bytecode.opencsv.CSVReader;
18+
import au.com.bytecode.opencsv.CSVWriter;
19+
import main.Foo;
20+
import junit.framework.TestCase;
21+
22+
public class TestWriter extends TestCase {
23+
24+
private String fileName1 = "test1.txt";
25+
private String fileName2 = "test2.txt";
26+
private String fileName3 = "test3.txt";
27+
private String fileName4 = "test4.csv";
28+
29+
public TestWriter(String name) {
30+
super(name);
31+
}
32+
33+
protected void setUp() throws Exception {
34+
super.setUp();
35+
}
36+
37+
protected void tearDown() throws Exception {
38+
super.tearDown();
39+
}
40+
41+
public void testWriteDouble_thenReadIt_shouldBeTheSame() {
42+
double value = 2.5;
43+
testWriteDouble(value);
44+
assertEquals(value, testReadDouble(), 0.0000001);
45+
}
46+
47+
public void testWriteToPosition_editValueIfSpecificPos_shouldChange() {
48+
int data1 = 2014;
49+
int data2 = 1500;
50+
testWriteToPosition(data1, 4);
51+
assertEquals(data1, testReadFromPosition(4));
52+
testWriteToPosition(data2, 4);
53+
assertEquals(data2, testReadFromPosition(4));
54+
}
55+
56+
public void testWriteObject_thenReadIt_instanceVariableValuesShouldBeTheSame() {
57+
Foo foo = new Foo(1, "John");
58+
testWriteObject(foo);
59+
Foo read = testReadObject();
60+
assertEquals(foo.getId(), read.getId());
61+
assertEquals(foo.getName(), read.getName());
62+
}
63+
64+
public void testWriteCSVReport_thenReadAllData_shouldBeTheSame() {
65+
Foo[] arr = new Foo[3];
66+
arr[0] = new Foo(1, "John");
67+
arr[1] = new Foo(2, "Adam");
68+
arr[2] = new Foo(3, "Jane");
69+
testWriteCSVReport(arr);
70+
Foo[] read = testReadCSVReport();
71+
assertEquals(arr[0].getId(), read[0].getId());
72+
assertEquals(arr[2].getName(), read[2].getName());
73+
assertEquals(arr[1].getId(), read[1].getId());
74+
}
75+
//================= writer methods========
76+
// use DataOutputStream to write primitive data types
77+
public void testWriteDouble(double value) {
78+
DataOutputStream stream;
79+
try {
80+
FileOutputStream fos = new FileOutputStream(fileName1);
81+
stream = new DataOutputStream(new BufferedOutputStream(fos));
82+
stream.writeDouble(value);
83+
stream.close();
84+
} catch (Exception e) {
85+
System.out.println(e.getLocalizedMessage());
86+
}
87+
}
88+
89+
// use RandomAccessFile to write data at specific position in the file
90+
public void testWriteToPosition(int data, long position) {
91+
try {
92+
RandomAccessFile writer = new RandomAccessFile(fileName2, "rw");
93+
writer.seek(position);
94+
writer.writeInt(data);
95+
writer.close();
96+
} catch (Exception e) {
97+
System.out.println(e.getLocalizedMessage());
98+
}
99+
}
100+
101+
// use ObjectOutputStream to write object
102+
public void testWriteObject(Foo foo) {
103+
FileOutputStream fos;
104+
try {
105+
fos = new FileOutputStream(fileName3);
106+
ObjectOutputStream writer = new ObjectOutputStream(fos);
107+
writer.writeObject(foo);
108+
writer.close();
109+
} catch (Exception e) {
110+
System.out.println(e.getLocalizedMessage());
111+
}
112+
113+
}
114+
115+
// use CSVWriter to write CSV data
116+
public void testWriteCSVReport(Foo[] array) {
117+
try {
118+
CSVWriter writer = new CSVWriter(new FileWriter(fileName4, true), ',');
119+
int len = array.length;
120+
for (int i = 0; i < len; i++) {
121+
writer.writeNext(array[i].toStringArray());
122+
}
123+
writer.close();
124+
} catch (IOException e) {
125+
System.out.println(e.getLocalizedMessage());
126+
}
127+
}
128+
129+
130+
//=============== read methods ======
131+
// use DataInputStream
132+
public double testReadDouble() {
133+
DataInputStream stream;
134+
double result = 0;
135+
try {
136+
FileInputStream fis = new FileInputStream(fileName1);
137+
stream = new DataInputStream(new BufferedInputStream(fis));
138+
result = stream.readDouble();
139+
stream.close();
140+
} catch (Exception e) {
141+
System.out.println(e.getLocalizedMessage());
142+
}
143+
return result;
144+
}
145+
146+
// use RandomAccessFile to read data from specific position in the file
147+
public int testReadFromPosition(long position) {
148+
int result = 0;
149+
try {
150+
RandomAccessFile reader = new RandomAccessFile(fileName2, "r");
151+
reader.seek(position);
152+
result = reader.readInt();
153+
reader.close();
154+
} catch (Exception e) {
155+
System.out.println(e.getLocalizedMessage());
156+
}
157+
return result;
158+
}
159+
160+
// use ObjectInputStream to read object
161+
public Foo testReadObject() {
162+
FileInputStream fis;
163+
Foo result = null;
164+
try {
165+
fis = new FileInputStream(fileName3);
166+
ObjectInputStream reader = new ObjectInputStream(fis);
167+
result = (Foo) reader.readObject();
168+
reader.close();
169+
} catch (Exception e) {
170+
System.out.println(e.getLocalizedMessage());
171+
}
172+
return result;
173+
}
174+
175+
// use CSVReader to read CSV data
176+
public Foo[] testReadCSVReport() {
177+
CSVReader reader;
178+
Foo[] result = null;
179+
try {
180+
reader = new CSVReader(new FileReader(fileName4));
181+
List list = reader.readAll();
182+
int size = list.size();
183+
result = new Foo[size];
184+
Foo temp;
185+
String[] currentItem;
186+
for (int i = 0; i < size; i++) {
187+
temp = new Foo();
188+
currentItem = (String[]) list.get(i);
189+
temp.setId(Long.parseLong(currentItem[0]));
190+
temp.setName(currentItem[1]);
191+
result[i] = temp;
192+
}
193+
reader.close();
194+
} catch (Exception e) {
195+
System.out.println(e.getLocalizedMessage());
196+
}
197+
return result;
198+
}
199+
200+
201+
202+
}

0 commit comments

Comments
 (0)