1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.commons.io.file;
19
20 import static org.apache.commons.io.file.CounterAssertions.assertCounts;
21 import static org.junit.jupiter.api.Assertions.assertArrayEquals;
22 import static org.junit.jupiter.api.Assertions.assertEquals;
23 import static org.junit.jupiter.api.Assertions.assertNotEquals;
24
25 import java.io.IOException;
26 import java.nio.file.CopyOption;
27 import java.nio.file.Path;
28 import java.nio.file.Paths;
29 import java.nio.file.StandardCopyOption;
30 import java.util.function.Supplier;
31
32 import org.apache.commons.io.file.Counters.PathCounters;
33 import org.apache.commons.io.filefilter.TrueFileFilter;
34 import org.junit.jupiter.api.io.TempDir;
35 import org.junit.jupiter.params.ParameterizedTest;
36 import org.junit.jupiter.params.provider.MethodSource;
37
38
39
40
41 public class CopyDirectoryVisitorTest extends TestArguments {
42
43 private static final CopyOption[] EXPECTED_COPY_OPTIONS = {StandardCopyOption.REPLACE_EXISTING};
44
45 @TempDir
46 private Path targetDir;
47
48
49
50
51 @ParameterizedTest
52 @MethodSource("pathCounters")
53 public void testCopyDirectoryEmptyFolder(final PathCounters pathCounters) throws IOException {
54 try (TempDirectory sourceDir = TempDirectory.create(getClass().getSimpleName())) {
55 final Supplier<CopyDirectoryVisitor> supplier = () -> new CopyDirectoryVisitor(pathCounters, sourceDir, targetDir, EXPECTED_COPY_OPTIONS);
56 final CopyDirectoryVisitor visitFileTree = PathUtils.visitFileTree(supplier.get(), sourceDir.get());
57 assertCounts(1, 0, 0, visitFileTree);
58 assertArrayEquals(EXPECTED_COPY_OPTIONS, visitFileTree.getCopyOptions());
59 assertEquals(sourceDir.get(), ((AbstractPathWrapper) visitFileTree.getSourceDirectory()).get());
60 assertEquals(sourceDir, visitFileTree.getSourceDirectory());
61 assertEquals(targetDir, visitFileTree.getTargetDirectory());
62 assertEquals(targetDir, visitFileTree.getTargetDirectory());
63
64 assertEquals(visitFileTree, supplier.get());
65 assertEquals(visitFileTree.hashCode(), supplier.get().hashCode());
66 assertEquals(visitFileTree, visitFileTree);
67 assertEquals(visitFileTree.hashCode(), visitFileTree.hashCode());
68 assertNotEquals(visitFileTree, "not");
69 assertNotEquals(visitFileTree, CountingPathVisitor.withLongCounters());
70 }
71 }
72
73
74
75
76 @ParameterizedTest
77 @MethodSource("pathCounters")
78 public void testCopyDirectoryEmptyFolderFilters(final PathCounters pathCounters) throws IOException {
79 try (TempDirectory sourceDir = TempDirectory.create(getClass().getSimpleName())) {
80 final Supplier<CopyDirectoryVisitor> supplier = () -> new CopyDirectoryVisitor(pathCounters, TrueFileFilter.INSTANCE, TrueFileFilter.INSTANCE,
81 sourceDir, targetDir, EXPECTED_COPY_OPTIONS);
82 final CopyDirectoryVisitor visitFileTree = PathUtils.visitFileTree(supplier.get(), sourceDir.get());
83 assertCounts(1, 0, 0, visitFileTree);
84 assertArrayEquals(EXPECTED_COPY_OPTIONS, visitFileTree.getCopyOptions());
85 assertEquals(sourceDir, visitFileTree.getSourceDirectory());
86 assertEquals(targetDir, visitFileTree.getTargetDirectory());
87
88 assertEquals(visitFileTree, supplier.get());
89 assertEquals(visitFileTree.hashCode(), supplier.get().hashCode());
90 assertEquals(visitFileTree, visitFileTree);
91 assertEquals(visitFileTree.hashCode(), visitFileTree.hashCode());
92 }
93 }
94
95
96
97
98 @ParameterizedTest
99 @MethodSource("pathCounters")
100 public void testCopyDirectoryFolders1FileSize0(final PathCounters pathCounters) throws IOException {
101 final Path sourceDir = Paths.get("src/test/resources/org/apache/commons/io/dirs-1-file-size-0");
102 final Supplier<CopyDirectoryVisitor> supplier = () -> new CopyDirectoryVisitor(pathCounters, sourceDir, targetDir, EXPECTED_COPY_OPTIONS);
103 final CopyDirectoryVisitor visitFileTree = PathUtils.visitFileTree(supplier.get(), sourceDir);
104 assertCounts(1, 1, 0, visitFileTree);
105 assertArrayEquals(EXPECTED_COPY_OPTIONS, visitFileTree.getCopyOptions());
106 assertEquals(sourceDir, visitFileTree.getSourceDirectory());
107 assertEquals(targetDir, visitFileTree.getTargetDirectory());
108
109 assertEquals(visitFileTree, supplier.get());
110 assertEquals(visitFileTree.hashCode(), supplier.get().hashCode());
111 assertEquals(visitFileTree, visitFileTree);
112 assertEquals(visitFileTree.hashCode(), visitFileTree.hashCode());
113 }
114
115
116
117
118 @ParameterizedTest
119 @MethodSource("pathCounters")
120 public void testCopyDirectoryFolders1FileSize1(final PathCounters pathCounters) throws IOException {
121 final Path sourceDir = Paths.get("src/test/resources/org/apache/commons/io/dirs-1-file-size-1");
122 final CopyDirectoryVisitor visitFileTree = PathUtils.visitFileTree(new CopyDirectoryVisitor(pathCounters, sourceDir, targetDir, EXPECTED_COPY_OPTIONS),
123 sourceDir);
124 assertCounts(1, 1, 1, visitFileTree);
125 assertArrayEquals(EXPECTED_COPY_OPTIONS, visitFileTree.getCopyOptions());
126 assertEquals(sourceDir, visitFileTree.getSourceDirectory());
127 assertEquals(targetDir, visitFileTree.getTargetDirectory());
128 }
129
130
131
132
133 @ParameterizedTest
134 @MethodSource("pathCounters")
135 public void testCopyDirectoryFolders2FileSize2(final PathCounters pathCounters) throws IOException {
136 final Path sourceDir = Paths.get("src/test/resources/org/apache/commons/io/dirs-2-file-size-2");
137 final CopyDirectoryVisitor visitFileTree = PathUtils.visitFileTree(new CopyDirectoryVisitor(pathCounters, sourceDir, targetDir, EXPECTED_COPY_OPTIONS),
138 sourceDir);
139 assertCounts(3, 2, 2, visitFileTree);
140 assertArrayEquals(EXPECTED_COPY_OPTIONS, visitFileTree.getCopyOptions());
141 assertEquals(sourceDir, visitFileTree.getSourceDirectory());
142 assertEquals(targetDir, visitFileTree.getTargetDirectory());
143 }
144
145 }