1616
1717package org .metafacture .io ;
1818
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 ;
2331
2432import java .io .File ;
2533import java .io .FileOutputStream ;
3240import java .nio .charset .StandardCharsets ;
3341import java .nio .file .Files ;
3442import 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 ;
4644
4745/**
4846 * Tests for class {@link FileOpener}.
@@ -63,24 +61,12 @@ public final class FileOpenerTest {
6361 @ Mock
6462 private ObjectReceiver <Reader > receiver ;
6563
66- @ Captor
67- private ArgumentCaptor <Reader > processedObject ;
68-
6964 @ Test
7065 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 ()));
8168
82- verify (receiver ).process (processedObject .capture ());
83- assertEquals (DATA , ResourceUtil .readAll (processedObject .getValue ()));
69+ assertData (receiver , DATA , createTestFile (), null );
8470 }
8571
8672 @ Test
@@ -105,19 +91,27 @@ private void testDecompressConcatenated(final boolean decompressConcatenated) th
10591 }
10692
10793 final String data = sb .toString ();
108- assertTrue (data .length () + " > " + maxBytes , data .length () > maxBytes );
94+ Assert . assertTrue (data .length () + " > " + maxBytes , data .length () > maxBytes );
10995
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 ));
111103
112104 final FileOpener opener = new FileOpener ();
113- opener .setDecompressConcatenated (decompressConcatenated );
105+ if (consumer != null ) {
106+ consumer .accept (opener );
107+ }
108+
114109 opener .setReceiver (receiver );
115- opener .process (testFile .getAbsolutePath ());
110+ opener .process (file .getAbsolutePath ());
116111 opener .closeStream ();
117112
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 ());
121115 }
122116
123117 private File createTestFile () throws IOException {
0 commit comments