1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.vfs2;
18
19 import java.io.IOException;
20 import java.io.OutputStream;
21 import java.io.UnsupportedEncodingException;
22 import java.nio.charset.StandardCharsets;
23
24 import org.junit.Test;
25
26
27
28
29 public class ProviderRenameTests extends AbstractProviderTestCase {
30
31
32
33 protected FileObject createScratchFolder() throws Exception {
34 final FileObject scratchFolder = getWriteFolder();
35
36
37 scratchFolder.delete(Selectors.EXCLUDE_SELF);
38 scratchFolder.createFolder();
39
40 return scratchFolder;
41 }
42
43 private String createTestFile(final FileObject file)
44 throws FileSystemException, IOException, UnsupportedEncodingException, Exception {
45
46 final String content = "Here is some sample content for the file. Blah Blah Blah.";
47
48 try (OutputStream os = file.getContent().getOutputStream()) {
49 os.write(content.getBytes(StandardCharsets.UTF_8));
50 }
51 assertSameContent(content, file);
52 return content;
53 }
54
55
56
57
58 @Override
59 protected Capability[] getRequiredCapabilities() {
60 return new Capability[] { Capability.CREATE, Capability.DELETE, Capability.GET_TYPE, Capability.LIST_CHILDREN,
61 Capability.READ_CONTENT, Capability.WRITE_CONTENT, Capability.RENAME };
62 }
63
64 private void moveFile(final FileObject scratchFolder, final FileObject file, final String content)
65 throws FileSystemException, Exception {
66 final FileObject fileMove = scratchFolder.resolveFile("file1move.txt");
67 assertFalse(fileMove.exists());
68
69 file.moveTo(fileMove);
70
71 assertFalse(file.exists());
72 assertTrue(fileMove.exists());
73
74 assertSameContent(content, fileMove);
75
76
77 assertTrue(fileMove.exists());
78 assertTrue(fileMove.delete());
79 }
80
81
82
83
84 @Test
85 public void testRenameFile() throws Exception {
86 final FileObject scratchFolder = createScratchFolder();
87
88
89 final FileObject file = scratchFolder.resolveFile("file1.txt");
90 assertFalse(file.exists());
91
92 final String content = createTestFile(file);
93
94
95 moveFile(scratchFolder, file, content);
96 }
97
98
99
100
101
102
103 @Test
104 public void testRenameFileAndLeaveFolderEmpty() throws Exception {
105 final FileObject scratchFolder = createScratchFolder();
106 final FileObject folder = scratchFolder.resolveFile("folder");
107 folder.createFolder();
108 assertTrue(folder.exists());
109 final FileObject file = folder.resolveFile("file1.txt");
110 assertFalse(file.exists());
111
112 final String content = createTestFile(file);
113
114
115 moveFile(scratchFolder, file, content);
116 assertEquals(0, folder.getChildren().length);
117 }
118
119
120
121
122
123
124 @Test
125 public void testRenameFileIntoEmptyFolder() throws Exception {
126 final FileObject scratchFolder = createScratchFolder();
127
128
129 final FileObject file = scratchFolder.resolveFile("file1.txt");
130 assertFalse(file.exists());
131
132 final String content = createTestFile(file);
133
134 final FileObject destFolder = scratchFolder.resolveFile("empty-target-folder");
135 destFolder.createFolder();
136 assertTrue("new destination must be folder", destFolder.getType().hasChildren());
137 assertEquals("new destination must be emty", 0, destFolder.getChildren().length);
138
139 moveFile(destFolder, file, content);
140 }
141 }