20
20
import static org .apache .commons .io .file .CounterAssertions .assertCounts ;
21
21
import static org .junit .jupiter .api .Assertions .assertArrayEquals ;
22
22
import static org .junit .jupiter .api .Assertions .assertEquals ;
23
+ import static org .junit .jupiter .api .Assertions .assertFalse ;
23
24
import static org .junit .jupiter .api .Assertions .assertNotEquals ;
25
+ import static org .junit .jupiter .api .Assertions .assertTrue ;
24
26
25
27
import java .io .IOException ;
26
28
import java .nio .file .CopyOption ;
29
+ import java .nio .file .Files ;
27
30
import java .nio .file .Path ;
28
31
import java .nio .file .Paths ;
29
32
import java .nio .file .StandardCopyOption ;
30
33
import java .util .function .Supplier ;
31
34
32
35
import org .apache .commons .io .file .Counters .PathCounters ;
36
+ import org .apache .commons .io .filefilter .NameFileFilter ;
33
37
import org .apache .commons .io .filefilter .TrueFileFilter ;
34
38
import org .junit .jupiter .api .io .TempDir ;
35
39
import org .junit .jupiter .params .ParameterizedTest ;
36
40
import org .junit .jupiter .params .provider .MethodSource ;
37
41
38
42
/**
39
- * Tests {@link CountingPathVisitor }.
43
+ * Tests {@link CopyDirectoryVisitor }.
40
44
*/
41
45
public class CopyDirectoryVisitorTest extends TestArguments {
42
46
@@ -59,19 +63,22 @@ public void testCopyDirectoryEmptyFolder(final PathCounters pathCounters) throws
59
63
assertEquals (sourceDir .get (), ((AbstractPathWrapper ) visitFileTree .getSourceDirectory ()).get ());
60
64
assertEquals (sourceDir , visitFileTree .getSourceDirectory ());
61
65
assertEquals (targetDir , visitFileTree .getTargetDirectory ());
62
- assertEquals (targetDir , visitFileTree .getTargetDirectory ());
63
- //
66
+ // Tests equals and hashCode
64
67
assertEquals (visitFileTree , supplier .get ());
65
68
assertEquals (visitFileTree .hashCode (), supplier .get ().hashCode ());
66
69
assertEquals (visitFileTree , visitFileTree );
67
70
assertEquals (visitFileTree .hashCode (), visitFileTree .hashCode ());
68
71
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 ));
69
76
assertNotEquals (visitFileTree , CountingPathVisitor .withLongCounters ());
70
77
}
71
78
}
72
79
73
80
/**
74
- * Tests an empty folder.
81
+ * Tests an empty folder with filters .
75
82
*/
76
83
@ ParameterizedTest
77
84
@ MethodSource ("pathCounters" )
@@ -84,14 +91,34 @@ public void testCopyDirectoryEmptyFolderFilters(final PathCounters pathCounters)
84
91
assertArrayEquals (EXPECTED_COPY_OPTIONS , visitFileTree .getCopyOptions ());
85
92
assertEquals (sourceDir , visitFileTree .getSourceDirectory ());
86
93
assertEquals (targetDir , visitFileTree .getTargetDirectory ());
87
- //
94
+ // Tests equals and hashCode
88
95
assertEquals (visitFileTree , supplier .get ());
89
96
assertEquals (visitFileTree .hashCode (), supplier .get ().hashCode ());
90
97
assertEquals (visitFileTree , visitFileTree );
91
98
assertEquals (visitFileTree .hashCode (), visitFileTree .hashCode ());
92
99
}
93
100
}
94
101
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
+
95
122
/**
96
123
* Tests a directory with one file of size 0.
97
124
*/
@@ -105,10 +132,10 @@ public void testCopyDirectoryFolders1FileSize0(final PathCounters pathCounters)
105
132
assertArrayEquals (EXPECTED_COPY_OPTIONS , visitFileTree .getCopyOptions ());
106
133
assertEquals (sourceDir , visitFileTree .getSourceDirectory ());
107
134
assertEquals (targetDir , visitFileTree .getTargetDirectory ());
108
- //
135
+ assertTrue (Files .exists (targetDir .resolve ("file-size-0.bin" )));
136
+ // Tests equals and hashCode
109
137
assertEquals (visitFileTree , supplier .get ());
110
138
assertEquals (visitFileTree .hashCode (), supplier .get ().hashCode ());
111
- assertEquals (visitFileTree , visitFileTree );
112
139
assertEquals (visitFileTree .hashCode (), visitFileTree .hashCode ());
113
140
}
114
141
@@ -125,6 +152,7 @@ public void testCopyDirectoryFolders1FileSize1(final PathCounters pathCounters)
125
152
assertArrayEquals (EXPECTED_COPY_OPTIONS , visitFileTree .getCopyOptions ());
126
153
assertEquals (sourceDir , visitFileTree .getSourceDirectory ());
127
154
assertEquals (targetDir , visitFileTree .getTargetDirectory ());
155
+ assertTrue (Files .exists (targetDir .resolve ("file-size-1.bin" )));
128
156
}
129
157
130
158
/**
@@ -140,6 +168,8 @@ public void testCopyDirectoryFolders2FileSize2(final PathCounters pathCounters)
140
168
assertArrayEquals (EXPECTED_COPY_OPTIONS , visitFileTree .getCopyOptions ());
141
169
assertEquals (sourceDir , visitFileTree .getSourceDirectory ());
142
170
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" )));
143
173
}
144
174
145
175
}
0 commit comments