2020import static org .apache .commons .io .file .CounterAssertions .assertCounts ;
2121import static org .junit .jupiter .api .Assertions .assertArrayEquals ;
2222import static org .junit .jupiter .api .Assertions .assertEquals ;
23+ import static org .junit .jupiter .api .Assertions .assertFalse ;
2324import static org .junit .jupiter .api .Assertions .assertNotEquals ;
25+ import static org .junit .jupiter .api .Assertions .assertTrue ;
2426
2527import java .io .IOException ;
2628import java .nio .file .CopyOption ;
29+ import java .nio .file .Files ;
2730import java .nio .file .Path ;
2831import java .nio .file .Paths ;
2932import java .nio .file .StandardCopyOption ;
3033import java .util .function .Supplier ;
3134
3235import org .apache .commons .io .file .Counters .PathCounters ;
36+ import org .apache .commons .io .filefilter .NameFileFilter ;
3337import org .apache .commons .io .filefilter .TrueFileFilter ;
3438import org .junit .jupiter .api .io .TempDir ;
3539import org .junit .jupiter .params .ParameterizedTest ;
3640import org .junit .jupiter .params .provider .MethodSource ;
3741
3842/**
39- * Tests {@link CountingPathVisitor }.
43+ * Tests {@link CopyDirectoryVisitor }.
4044 */
4145public class CopyDirectoryVisitorTest extends TestArguments {
4246
@@ -59,19 +63,22 @@ public void testCopyDirectoryEmptyFolder(final PathCounters pathCounters) throws
5963 assertEquals (sourceDir .get (), ((AbstractPathWrapper ) visitFileTree .getSourceDirectory ()).get ());
6064 assertEquals (sourceDir , visitFileTree .getSourceDirectory ());
6165 assertEquals (targetDir , visitFileTree .getTargetDirectory ());
62- assertEquals (targetDir , visitFileTree .getTargetDirectory ());
63- //
66+ // Tests equals and hashCode
6467 assertEquals (visitFileTree , supplier .get ());
6568 assertEquals (visitFileTree .hashCode (), supplier .get ().hashCode ());
6669 assertEquals (visitFileTree , visitFileTree );
6770 assertEquals (visitFileTree .hashCode (), visitFileTree .hashCode ());
6871 assertNotEquals (visitFileTree , "not" );
72+ assertNotEquals (visitFileTree , new DeletingPathVisitor (pathCounters ));
73+ assertNotEquals (visitFileTree , new CopyDirectoryVisitor (pathCounters , sourceDir , targetDir ));
74+ assertNotEquals (visitFileTree , new CopyDirectoryVisitor (pathCounters , sourceDir , sourceDir , EXPECTED_COPY_OPTIONS ));
75+ assertNotEquals (visitFileTree , new CopyDirectoryVisitor (pathCounters , targetDir , sourceDir , EXPECTED_COPY_OPTIONS ));
6976 assertNotEquals (visitFileTree , CountingPathVisitor .withLongCounters ());
7077 }
7178 }
7279
7380 /**
74- * Tests an empty folder.
81+ * Tests an empty folder with filters .
7582 */
7683 @ ParameterizedTest
7784 @ MethodSource ("pathCounters" )
@@ -84,14 +91,34 @@ public void testCopyDirectoryEmptyFolderFilters(final PathCounters pathCounters)
8491 assertArrayEquals (EXPECTED_COPY_OPTIONS , visitFileTree .getCopyOptions ());
8592 assertEquals (sourceDir , visitFileTree .getSourceDirectory ());
8693 assertEquals (targetDir , visitFileTree .getTargetDirectory ());
87- //
94+ // Tests equals and hashCode
8895 assertEquals (visitFileTree , supplier .get ());
8996 assertEquals (visitFileTree .hashCode (), supplier .get ().hashCode ());
9097 assertEquals (visitFileTree , visitFileTree );
9198 assertEquals (visitFileTree .hashCode (), visitFileTree .hashCode ());
9299 }
93100 }
94101
102+ /**
103+ * Tests filters.
104+ */
105+ @ ParameterizedTest
106+ @ MethodSource ("pathCounters" )
107+ public void testCopyDirectoryFilters (final PathCounters pathCounters ) throws IOException {
108+ final Path sourceDir = Paths .get ("src/test/resources/org/apache/commons/io/dirs-2-file-size-4" );
109+ final CopyDirectoryVisitor visitFileTree = PathUtils .visitFileTree (new CopyDirectoryVisitor (pathCounters , new NameFileFilter ("file-size-1.bin" ),
110+ new NameFileFilter ("dirs-2-file-size-4" , "dirs-a-file-size-1" ), sourceDir , targetDir , null ),
111+ sourceDir );
112+ assertCounts (2 , 1 , 2 , visitFileTree );
113+ assertArrayEquals (PathUtils .EMPTY_COPY_OPTIONS , visitFileTree .getCopyOptions ());
114+ assertEquals (sourceDir , visitFileTree .getSourceDirectory ());
115+ assertEquals (targetDir , visitFileTree .getTargetDirectory ());
116+ assertTrue (Files .exists (targetDir .resolve ("dirs-a-file-size-1/file-size-1.bin" )));
117+ assertFalse (Files .exists (targetDir .resolve ("dirs-a-file-size-1/file-size-2.bin" )));
118+ assertFalse (Files .exists (targetDir .resolve ("dirs-a-file-size-2" )));
119+ }
120+
121+
95122 /**
96123 * Tests a directory with one file of size 0.
97124 */
@@ -105,10 +132,10 @@ public void testCopyDirectoryFolders1FileSize0(final PathCounters pathCounters)
105132 assertArrayEquals (EXPECTED_COPY_OPTIONS , visitFileTree .getCopyOptions ());
106133 assertEquals (sourceDir , visitFileTree .getSourceDirectory ());
107134 assertEquals (targetDir , visitFileTree .getTargetDirectory ());
108- //
135+ assertTrue (Files .exists (targetDir .resolve ("file-size-0.bin" )));
136+ // Tests equals and hashCode
109137 assertEquals (visitFileTree , supplier .get ());
110138 assertEquals (visitFileTree .hashCode (), supplier .get ().hashCode ());
111- assertEquals (visitFileTree , visitFileTree );
112139 assertEquals (visitFileTree .hashCode (), visitFileTree .hashCode ());
113140 }
114141
@@ -125,6 +152,7 @@ public void testCopyDirectoryFolders1FileSize1(final PathCounters pathCounters)
125152 assertArrayEquals (EXPECTED_COPY_OPTIONS , visitFileTree .getCopyOptions ());
126153 assertEquals (sourceDir , visitFileTree .getSourceDirectory ());
127154 assertEquals (targetDir , visitFileTree .getTargetDirectory ());
155+ assertTrue (Files .exists (targetDir .resolve ("file-size-1.bin" )));
128156 }
129157
130158 /**
@@ -140,6 +168,8 @@ public void testCopyDirectoryFolders2FileSize2(final PathCounters pathCounters)
140168 assertArrayEquals (EXPECTED_COPY_OPTIONS , visitFileTree .getCopyOptions ());
141169 assertEquals (sourceDir , visitFileTree .getSourceDirectory ());
142170 assertEquals (targetDir , visitFileTree .getTargetDirectory ());
171+ assertTrue (Files .exists (targetDir .resolve ("dirs-a-file-size-1/file-size-1.bin" )));
172+ assertTrue (Files .exists (targetDir .resolve ("dirs-b-file-size-1/file-size-1.bin" )));
143173 }
144174
145175}
0 commit comments