1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.io;
18
19 import static org.junit.jupiter.api.Assertions.assertEquals;
20 import static org.junit.jupiter.api.Assertions.assertFalse;
21 import static org.junit.jupiter.api.Assertions.assertThrows;
22 import static org.junit.jupiter.api.Assertions.assertTrue;
23
24 import java.io.BufferedOutputStream;
25 import java.io.File;
26 import java.io.IOException;
27 import java.nio.file.Files;
28
29 import org.apache.commons.io.test.TestUtils;
30 import org.junit.jupiter.api.Test;
31 import org.junit.jupiter.api.io.TempDir;
32
33
34
35 public class FileDeleteStrategyTest {
36
37 @TempDir
38 public File temporaryFolder;
39
40 @Test
41 public void testDeleteForce() throws Exception {
42 final File baseDir = temporaryFolder;
43 final File subDir = new File(baseDir, "test");
44 assertTrue(subDir.mkdir());
45 final File subFile = new File(subDir, "a.txt");
46 if (!subFile.getParentFile().exists()) {
47 throw new IOException("Cannot create file " + subFile
48 + " as the parent directory does not exist");
49 }
50 try (BufferedOutputStream output =
51 new BufferedOutputStream(Files.newOutputStream(subFile.toPath()))) {
52 TestUtils.generateTestData(output, 16);
53 }
54
55 assertTrue(subDir.exists());
56 assertTrue(subFile.exists());
57
58 FileDeleteStrategy.FORCE.delete(subDir);
59 assertFalse(subDir.exists());
60 assertFalse(subFile.exists());
61
62 FileDeleteStrategy.FORCE.delete(subDir);
63 assertFalse(subDir.exists());
64 }
65
66 @Test
67 public void testDeleteNormal() throws Exception {
68 final File baseDir = temporaryFolder;
69 final File subDir = new File(baseDir, "test");
70 assertTrue(subDir.mkdir());
71 final File subFile = new File(subDir, "a.txt");
72 if (!subFile.getParentFile().exists()) {
73 throw new IOException("Cannot create file " + subFile
74 + " as the parent directory does not exist");
75 }
76 try (BufferedOutputStream output =
77 new BufferedOutputStream(Files.newOutputStream(subFile.toPath()))) {
78 TestUtils.generateTestData(output, 16);
79 }
80
81 assertTrue(subDir.exists());
82 assertTrue(subFile.exists());
83
84 assertThrows(IOException.class, () -> FileDeleteStrategy.NORMAL.delete(subDir));
85 assertTrue(subDir.exists());
86 assertTrue(subFile.exists());
87
88 FileDeleteStrategy.NORMAL.delete(subFile);
89 assertTrue(subDir.exists());
90 assertFalse(subFile.exists());
91
92 FileDeleteStrategy.NORMAL.delete(subDir);
93 assertFalse(subDir.exists());
94
95 FileDeleteStrategy.NORMAL.delete(subDir);
96 assertFalse(subDir.exists());
97 }
98
99 @Test
100 public void testDeleteNull() throws Exception {
101 assertThrows(NullPointerException.class, () -> FileDeleteStrategy.NORMAL.delete(null));
102 assertTrue(FileDeleteStrategy.NORMAL.deleteQuietly(null));
103 }
104
105 @Test
106 public void testDeleteQuietlyNormal() throws Exception {
107 final File baseDir = temporaryFolder;
108 final File subDir = new File(baseDir, "test");
109 assertTrue(subDir.mkdir());
110 final File subFile = new File(subDir, "a.txt");
111 if (!subFile.getParentFile().exists()) {
112 throw new IOException("Cannot create file " + subFile
113 + " as the parent directory does not exist");
114 }
115 try (BufferedOutputStream output =
116 new BufferedOutputStream(Files.newOutputStream(subFile.toPath()))) {
117 TestUtils.generateTestData(output, 16);
118 }
119
120 assertTrue(subDir.exists());
121 assertTrue(subFile.exists());
122
123 assertFalse(FileDeleteStrategy.NORMAL.deleteQuietly(subDir));
124 assertTrue(subDir.exists());
125 assertTrue(subFile.exists());
126
127 assertTrue(FileDeleteStrategy.NORMAL.deleteQuietly(subFile));
128 assertTrue(subDir.exists());
129 assertFalse(subFile.exists());
130
131 assertTrue(FileDeleteStrategy.NORMAL.deleteQuietly(subDir));
132 assertFalse(subDir.exists());
133
134 assertTrue(FileDeleteStrategy.NORMAL.deleteQuietly(subDir));
135 assertFalse(subDir.exists());
136 }
137
138 @Test
139 public void testToString() {
140 assertEquals("FileDeleteStrategy[Normal]", FileDeleteStrategy.NORMAL.toString());
141 assertEquals("FileDeleteStrategy[Force]", FileDeleteStrategy.FORCE.toString());
142 }
143 }