1b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair/* 2b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair * Copyright 2008 the original author or authors. 3b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair * 4b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair * Licensed under the Apache License, Version 2.0 (the "License"); 5b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair * you may not use this file except in compliance with the License. 6b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair * You may obtain a copy of the License at 7b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair * 8b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair * http://www.apache.org/licenses/LICENSE-2.0 9b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair * 10b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair * Unless required by applicable law or agreed to in writing, software 11b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair * distributed under the License is distributed on an "AS IS" BASIS, 12b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair * See the License for the specific language governing permissions and 14b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair * limitations under the License. 15b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair */ 16b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismairpackage org.mockftpserver.fake.filesystem 17b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair 18b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismairimport java.lang.reflect.Constructor 19b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismairimport org.mockftpserver.test.AbstractGroovyTest 20b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair 21b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair/** 22b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair * Abstract test superclass for subclasses of AbstractFileSystemEntry 23b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair * 24b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair * @version $Revision$ - $Date$ 25b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair * 26b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair * @author Chris Mair 27b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair */ 28b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismairpublic abstract class AbstractFileSystemEntryTest extends AbstractGroovyTest { 29b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair 30b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair protected static final PATH = "c:/test/dir" 31b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair protected static final NEW_PATH = "d:/other/dir" 32b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair protected static final USER = 'user77' 33b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair protected static final GROUP = 'group88' 34b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair protected static final PERMISSIONS = new Permissions('rwxrwx---') 35b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair protected static final LAST_MODIFIED = new Date() 36b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair 37b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair void testConstructor_NoArgs() { 38b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair AbstractFileSystemEntry entry = (AbstractFileSystemEntry) getImplementationClass().newInstance() 39b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair assertNull("path", entry.getPath()) 40b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair entry.setPath(PATH) 41b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair assert entry.getPath() == PATH 42b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair assert isDirectory() == entry.isDirectory() 43b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair } 44b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair 45b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair void testConstructor_Path() { 46b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair Constructor constructor = getImplementationClass().getConstructor([String.class] as Class[]) 47b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair AbstractFileSystemEntry entry = (AbstractFileSystemEntry) constructor.newInstance([PATH] as Object[]) 48b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair LOG.info(entry) 49b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair assertEquals("path", PATH, entry.getPath()) 50b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair entry.setPath("") 51b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair assert entry.getPath() == "" 52b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair assert isDirectory() == entry.isDirectory() 53b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair } 54b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair 55b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair void testLockPath() { 56b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair def entry = createFileSystemEntry(PATH) 57b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair entry.lockPath() 58b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair shouldFail { entry.path = 'abc' } 59b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair assert entry.path == PATH 60b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair } 61b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair 62b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair void testGetName() { 63b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair assert createFileSystemEntry('abc').name == 'abc' 64b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair assert createFileSystemEntry('/abc').name == 'abc' 65b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair assert createFileSystemEntry('/dir/abc').name == 'abc' 66b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair assert createFileSystemEntry('\\abc').name == 'abc' 67b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair } 68b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair 69b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair void testSetPermissionsFromString() { 70b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair def entry = createFileSystemEntry('abc') 71b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair final PERM = 'rw-r---wx' 72b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair entry.setPermissionsFromString(PERM) 73b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair assert entry.permissions == new Permissions(PERM) 74b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair } 75b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair 76b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair protected AbstractFileSystemEntry createFileSystemEntry(String path) { 77b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair def entry = (AbstractFileSystemEntry) getImplementationClass().newInstance() 78b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair entry.setPath(path) 79b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair return entry 80b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair } 81b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair 82b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair /** 83b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair * @return the subclass of AbstractFileSystemEntry to be tested 84b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair */ 85b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair protected abstract Class getImplementationClass() 86b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair 87b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair /** 88b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair * @return true if the class being tested represents a directory entry 89b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair */ 90b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair protected abstract boolean isDirectory() 91b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair 92b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair} 93