16
16
17
17
package org .metafacture .io ;
18
18
19
- import static org .junit .Assert .assertEquals ;
20
- import static org .junit .Assert .assertTrue ;
21
- import static org .junit .Assume .assumeFalse ;
22
- import static org .mockito .Mockito .verify ;
19
+ import org .metafacture .commons .ResourceUtil ;
20
+ import org .metafacture .framework .ObjectReceiver ;
21
+
22
+ import org .junit .Assert ;
23
+ import org .junit .Assume ;
24
+ import org .junit .Rule ;
25
+ import org .junit .Test ;
26
+ import org .junit .rules .TemporaryFolder ;
27
+ import org .mockito .Mock ;
28
+ import org .mockito .Mockito ;
29
+ import org .mockito .junit .MockitoJUnit ;
30
+ import org .mockito .junit .MockitoRule ;
23
31
24
32
import java .io .File ;
25
33
import java .io .FileOutputStream ;
32
40
import java .nio .charset .StandardCharsets ;
33
41
import java .nio .file .Files ;
34
42
import java .nio .file .StandardCopyOption ;
35
-
36
- import org .junit .Rule ;
37
- import org .junit .Test ;
38
- import org .junit .rules .TemporaryFolder ;
39
- import org .metafacture .commons .ResourceUtil ;
40
- import org .metafacture .framework .ObjectReceiver ;
41
- import org .mockito .ArgumentCaptor ;
42
- import org .mockito .Captor ;
43
- import org .mockito .Mock ;
44
- import org .mockito .junit .MockitoJUnit ;
45
- import org .mockito .junit .MockitoRule ;
43
+ import java .util .function .Consumer ;
46
44
47
45
/**
48
46
* Tests for class {@link FileOpener}.
@@ -63,24 +61,12 @@ public final class FileOpenerTest {
63
61
@ Mock
64
62
private ObjectReceiver <Reader > receiver ;
65
63
66
- @ Captor
67
- private ArgumentCaptor <Reader > processedObject ;
68
-
69
64
@ Test
70
65
public void testUtf8IsDefaultEncoding () throws IOException {
71
- assumeFalse ("Default encoding is UTF-8: It is not possible to test whether " +
72
- "FileOpener sets the encoding to UTF-8 correctly." ,
73
- StandardCharsets .UTF_8 .equals (Charset .defaultCharset ()));
74
-
75
- final File testFile = createTestFile ();
76
-
77
- final FileOpener opener = new FileOpener ();
78
- opener .setReceiver (receiver );
79
- opener .process (testFile .getAbsolutePath ());
80
- opener .closeStream ();
66
+ Assume .assumeFalse ("Default encoding is UTF-8: It is not possible to test whether FileOpener sets " +
67
+ "the encoding to UTF-8 correctly." , StandardCharsets .UTF_8 .equals (Charset .defaultCharset ()));
81
68
82
- verify (receiver ).process (processedObject .capture ());
83
- assertEquals (DATA , ResourceUtil .readAll (processedObject .getValue ()));
69
+ assertData (receiver , DATA , createTestFile (), null );
84
70
}
85
71
86
72
@ Test
@@ -105,19 +91,27 @@ private void testDecompressConcatenated(final boolean decompressConcatenated) th
105
91
}
106
92
107
93
final String data = sb .toString ();
108
- assertTrue (data .length () + " > " + maxBytes , data .length () > maxBytes );
94
+ Assert . assertTrue (data .length () + " > " + maxBytes , data .length () > maxBytes );
109
95
110
- final File testFile = copyResourceToTempFile ("compressed-large.txt.bgzf" );
96
+ assertData (receiver , decompressConcatenated ? data : data .substring (0 , maxBytes ),
97
+ copyResourceToTempFile ("compressed-large.txt.bgzf" ), o -> o .setDecompressConcatenated (decompressConcatenated ));
98
+ }
99
+
100
+ /*package-private*/ static void assertData (final ObjectReceiver <Reader > receiver , final String expected , final File file , final Consumer <FileOpener > consumer ) {
101
+ final StringBuilder sb = new StringBuilder ();
102
+ Mockito .doAnswer (i -> sb .append (ResourceUtil .readAll (i .getArgument (0 )))).when (receiver ).process (Mockito .any (Reader .class ));
111
103
112
104
final FileOpener opener = new FileOpener ();
113
- opener .setDecompressConcatenated (decompressConcatenated );
105
+ if (consumer != null ) {
106
+ consumer .accept (opener );
107
+ }
108
+
114
109
opener .setReceiver (receiver );
115
- opener .process (testFile .getAbsolutePath ());
110
+ opener .process (file .getAbsolutePath ());
116
111
opener .closeStream ();
117
112
118
- verify (receiver ).process (processedObject .capture ());
119
- assertEquals (decompressConcatenated ? data : data .substring (0 , maxBytes ),
120
- ResourceUtil .readAll (processedObject .getValue ()));
113
+ Mockito .verify (receiver ).process (Mockito .any (Reader .class ));
114
+ Assert .assertEquals (expected , sb .toString ());
121
115
}
122
116
123
117
private File createTestFile () throws IOException {
0 commit comments