1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 package net.grinder.util;
23
24 import static net.grinder.testutility.FileUtilities.createRandomFile;
25
26 import java.io.File;
27 import java.io.FileReader;
28 import java.io.IOException;
29 import java.io.Reader;
30 import java.io.Writer;
31
32 import net.grinder.testutility.AbstractFileTestCase;
33
34
35
36
37
38
39
40 public final class TestDelayedCreationFileWriter extends AbstractFileTestCase {
41
42 public void testConstructor() throws Exception {
43 final File file = new File(getDirectory(), "blah");
44
45 final Writer w0 = new DelayedCreationFileWriter(file, false);
46 assertFalse(file.exists());
47
48 createRandomFile(file);
49 assertTrue(file.exists());
50
51 final Writer w1 = new DelayedCreationFileWriter(file, true);
52 assertTrue(file.exists());
53
54
55 final Writer w2 = new DelayedCreationFileWriter(file, false);
56 assertFalse(file.exists());
57
58 w0.close();
59 w1.close();
60 w2.close();
61 assertFalse(file.exists());
62 }
63
64 public void testWriteAndFlush() throws Exception {
65
66 final File file = new File(getDirectory(), "blah");
67
68 final Writer w0 = new DelayedCreationFileWriter(file, false);
69 w0.flush();
70 assertFalse(file.exists());
71
72 final String string0 = "Those evil chemicals.";
73 final String string1 = "Egg & Chips";
74
75 w0.write(string0);
76 assertTrue(file.exists());
77
78 w0.write(string1);
79
80 w0.flush();
81 w0.close();
82
83 final String string2 = "The light at the end of the tunnel";
84 final Writer w1 = new DelayedCreationFileWriter(file, true);
85 w1.write(string2);
86 w1.close();
87
88 final Reader reader = new FileReader(file);
89 final char[] chars = new char[100];
90 final int n = reader.read(chars);
91 assertEquals(string0 + string1 + string2, new String(chars, 0, n));
92 reader.close();
93
94 final File brokenFile = new File(file, "blah");
95 final Writer w2 = new DelayedCreationFileWriter(brokenFile, false);
96
97 try {
98 w2.write("");
99 fail("Expected IOException");
100 }
101 catch (IOException e) {
102 }
103
104 w2.close();
105 }
106 }