Skip to content

Commit 3d9aff9

Browse files
committed
Add test cases for ByteStreamFileWriter
1 parent 71e1421 commit 3d9aff9

File tree

2 files changed

+103
-0
lines changed

2 files changed

+103
-0
lines changed

metafacture-io/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,5 @@ dependencies {
2525
runtimeOnly 'org.tukaani:xz:1.6'
2626
testImplementation 'junit:junit:4.12'
2727
testImplementation 'org.mockito:mockito-core:2.5.5'
28+
testImplementation 'org.assertj:assertj-core:3.11.1'
2829
}
Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
package org.metafacture.io;
2+
3+
import static java.util.Arrays.asList;
4+
import static org.assertj.core.api.Assertions.assertThat;
5+
import static org.assertj.core.api.Assertions.contentOf;
6+
7+
import java.io.File;
8+
import java.io.IOException;
9+
import java.nio.charset.StandardCharsets;
10+
import java.util.List;
11+
12+
import org.junit.Before;
13+
import org.junit.Rule;
14+
import org.junit.Test;
15+
import org.junit.rules.TemporaryFolder;
16+
import org.mockito.junit.MockitoJUnit;
17+
import org.mockito.junit.MockitoRule;
18+
19+
public class ByteStreamFileWriterTest {
20+
21+
private ByteStreamFileWriter byteStreamFileWriter;
22+
23+
@Before
24+
public void setupSystemUnderTest() {
25+
26+
byteStreamFileWriter = new ByteStreamFileWriter();
27+
}
28+
29+
@Test
30+
public void shouldWriteBytesToFile() throws IOException {
31+
32+
File outputFile = tempFolder.newFile();
33+
byteStreamFileWriter.setFileNameSupplier(() -> outputFile);
34+
35+
byteStreamFileWriter.process(SOME_DATA.getBytes(StandardCharsets.UTF_8));
36+
byteStreamFileWriter.closeStream();
37+
38+
assertThat(outputFile).isFile();
39+
assertThat(contentOf(outputFile)).isEqualTo(SOME_DATA);
40+
}
41+
42+
@Test
43+
public void shouldStartNewOutputFileOnResetStreamEvent() throws IOException {
44+
45+
List<File> outputFiles = asList(
46+
tempFolder.newFile(),
47+
tempFolder.newFile());
48+
byteStreamFileWriter.setFileNameSupplier(outputFiles.iterator()::next);
49+
50+
byteStreamFileWriter.process(SOME_DATA.getBytes(StandardCharsets.UTF_8));
51+
byteStreamFileWriter.resetStream();
52+
byteStreamFileWriter.process(SOME_MORE_DATA.getBytes(StandardCharsets.UTF_8));
53+
byteStreamFileWriter.closeStream();
54+
55+
assertThat(outputFiles.get(0)).isFile();
56+
assertThat(contentOf(outputFiles.get(0))).isEqualTo(SOME_DATA);
57+
assertThat(outputFiles.get(1)).isFile();
58+
assertThat(contentOf(outputFiles.get(1))).isEqualTo(SOME_MORE_DATA);
59+
}
60+
61+
@Test
62+
public void shouldOverwriteExistingFilesByDefault() throws IOException {
63+
64+
File outputFile = tempFolder.newFile();
65+
byteStreamFileWriter.setFileNameSupplier(() -> outputFile);
66+
67+
byteStreamFileWriter.process(SOME_DATA.getBytes(StandardCharsets.UTF_8));
68+
byteStreamFileWriter.resetStream();
69+
byteStreamFileWriter.process(SOME_MORE_DATA.getBytes(StandardCharsets.UTF_8));
70+
byteStreamFileWriter.closeStream();
71+
72+
assertThat(outputFile).isFile();
73+
assertThat(contentOf(outputFile)).isEqualTo(SOME_MORE_DATA);
74+
}
75+
76+
@Test
77+
public void shouldAppendIfParameterAppendIfFileExistsIsSet() throws IOException {
78+
79+
80+
File outputFile = tempFolder.newFile();
81+
byteStreamFileWriter.setFileNameSupplier(() -> outputFile);
82+
byteStreamFileWriter.setAppendIfFileExists(true);
83+
84+
byteStreamFileWriter.process(SOME_DATA.getBytes(StandardCharsets.UTF_8));
85+
byteStreamFileWriter.resetStream();
86+
byteStreamFileWriter.process(SOME_MORE_DATA.getBytes(StandardCharsets.UTF_8));
87+
byteStreamFileWriter.closeStream();
88+
89+
assertThat(outputFile).isFile();
90+
assertThat(contentOf(outputFile)).isEqualTo(SOME_DATA + SOME_MORE_DATA);
91+
}
92+
93+
private static final String SOME_DATA = "Nil desperandum";
94+
private static final String SOME_MORE_DATA = "De omnibus dubitandum";
95+
96+
@Rule
97+
public TemporaryFolder tempFolder = new TemporaryFolder();
98+
99+
@Rule
100+
public MockitoRule mockitoRule = MockitoJUnit.rule();
101+
102+
}

0 commit comments

Comments
 (0)