blob: 5def6b94e512f0bb4fbcb5dfeb51e782e44362dd [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.commons.vfs2;
import org.junit.Test;
/**
* File system test that do some delete operations.
*/
public class ProviderDeleteTests extends AbstractProviderTestCase {
private class FileNameSelector implements FileSelector {
final String basename;
private FileNameSelector(final String basename) {
this.basename = basename;
}
@Override
public boolean includeFile(final FileSelectInfo fileInfo) throws Exception {
return this.basename.equals(fileInfo.getFile().getName().getBaseName());
}
@Override
public boolean traverseDescendents(final FileSelectInfo fileInfo) throws Exception {
return true;
}
}
/**
* Returns the capabilities required by the tests of this test case.
*/
@Override
protected Capability[] getRequiredCapabilities() {
return new Capability[] { Capability.CREATE, Capability.DELETE, Capability.GET_TYPE,
Capability.LIST_CHILDREN, };
}
/**
* Sets up a scratch folder for the test to use.
*/
protected FileObject createScratchFolder() throws Exception {
final FileObject scratchFolder = getWriteFolder();
// Make sure the test folder is empty
scratchFolder.delete(Selectors.EXCLUDE_SELF);
scratchFolder.createFolder();
final FileObject dir1 = scratchFolder.resolveFile("dir1");
dir1.createFolder();
final FileObject dir1file1 = dir1.resolveFile("a.txt");
dir1file1.createFile();
final FileObject dir2 = scratchFolder.resolveFile("dir2");
dir2.createFolder();
final FileObject dir2file1 = dir2.resolveFile("b.txt");
dir2file1.createFile();
return scratchFolder;
}
/**
* deletes the complete structure
*/
@Test
public void testDeleteFiles() throws Exception {
final FileObject scratchFolder = createScratchFolder();
assertEquals(4, scratchFolder.delete(Selectors.EXCLUDE_SELF));
}
/**
* deletes a single file
*/
@Test
public void testDeleteFile() throws Exception {
final FileObject scratchFolder = createScratchFolder();
final FileObject file = scratchFolder.resolveFile("dir1/a.txt");
assertTrue(file.delete());
}
/**
* Deletes a non existent file
*/
@Test
public void testDeleteNonExistantFile() throws Exception {
final FileObject scratchFolder = createScratchFolder();
final FileObject file = scratchFolder.resolveFile("dir1/aa.txt");
assertFalse(file.delete());
}
/**
* deletes files
*/
@Test
public void testDeleteAllFiles() throws Exception {
final FileObject scratchFolder = createScratchFolder();
final int deleteCount = scratchFolder.delete(new FileTypeSelector(FileType.FILE));
if (deleteCount < 2) {
// Slow deletion in an embedded server perhaps (FTPS for example).
Thread.sleep(500);
}
assertEquals(2, deleteCount);
}
/**
* deletes a.txt
*/
@Test
public void testDeleteOneFiles() throws Exception {
final FileObject scratchFolder = createScratchFolder();
assertEquals(1, scratchFolder.delete(new FileNameSelector("a.txt")));
}
}