1abd32a990e145862f22d15316feedced5ad246aachrismair/* 2abd32a990e145862f22d15316feedced5ad246aachrismair * Copyright 2008 the original author or authors. 3abd32a990e145862f22d15316feedced5ad246aachrismair * 4abd32a990e145862f22d15316feedced5ad246aachrismair * Licensed under the Apache License, Version 2.0 (the "License"); 5abd32a990e145862f22d15316feedced5ad246aachrismair * you may not use this file except in compliance with the License. 6abd32a990e145862f22d15316feedced5ad246aachrismair * You may obtain a copy of the License at 7abd32a990e145862f22d15316feedced5ad246aachrismair * 8abd32a990e145862f22d15316feedced5ad246aachrismair * http://www.apache.org/licenses/LICENSE-2.0 9abd32a990e145862f22d15316feedced5ad246aachrismair * 10abd32a990e145862f22d15316feedced5ad246aachrismair * Unless required by applicable law or agreed to in writing, software 11abd32a990e145862f22d15316feedced5ad246aachrismair * distributed under the License is distributed on an "AS IS" BASIS, 12abd32a990e145862f22d15316feedced5ad246aachrismair * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13abd32a990e145862f22d15316feedced5ad246aachrismair * See the License for the specific language governing permissions and 14abd32a990e145862f22d15316feedced5ad246aachrismair * limitations under the License. 15abd32a990e145862f22d15316feedced5ad246aachrismair */ 16abd32a990e145862f22d15316feedced5ad246aachrismairpackage org.mockftpserver.fake.filesystem 17abd32a990e145862f22d15316feedced5ad246aachrismair 18abd32a990e145862f22d15316feedced5ad246aachrismairimport java.lang.reflect.Constructor 195303c6ae1dde5f399fe48803e677942fc4326344chrismairimport org.mockftpserver.test.AbstractGroovyTestCase 20abd32a990e145862f22d15316feedced5ad246aachrismair 21abd32a990e145862f22d15316feedced5ad246aachrismair/** 22abd32a990e145862f22d15316feedced5ad246aachrismair * Abstract test superclass for subclasses of AbstractFileSystemEntry 2309415075d96852489d096aea7ae07dd156b58643chrismair * 247d4a3a2990f1a386eaf9d50cf05a9d45fab32de6chrismair * @version $Revision$ - $Date$ 25abd32a990e145862f22d15316feedced5ad246aachrismair * 26abd32a990e145862f22d15316feedced5ad246aachrismair * @author Chris Mair 27abd32a990e145862f22d15316feedced5ad246aachrismair */ 285303c6ae1dde5f399fe48803e677942fc4326344chrismairpublic abstract class AbstractFileSystemEntryTestCase extends AbstractGroovyTestCase { 29abd32a990e145862f22d15316feedced5ad246aachrismair 30abd32a990e145862f22d15316feedced5ad246aachrismair protected static final PATH = "c:/test/dir" 3109415075d96852489d096aea7ae07dd156b58643chrismair protected static final NEW_PATH = "d:/other/dir" 3209415075d96852489d096aea7ae07dd156b58643chrismair protected static final USER = 'user77' 3309415075d96852489d096aea7ae07dd156b58643chrismair protected static final GROUP = 'group88' 3409415075d96852489d096aea7ae07dd156b58643chrismair protected static final PERMISSIONS = new Permissions('rwxrwx---') 3509415075d96852489d096aea7ae07dd156b58643chrismair protected static final LAST_MODIFIED = new Date() 3609415075d96852489d096aea7ae07dd156b58643chrismair 37abd32a990e145862f22d15316feedced5ad246aachrismair void testConstructor_NoArgs() { 38abd32a990e145862f22d15316feedced5ad246aachrismair AbstractFileSystemEntry entry = (AbstractFileSystemEntry) getImplementationClass().newInstance() 39abd32a990e145862f22d15316feedced5ad246aachrismair assertNull("path", entry.getPath()) 40abd32a990e145862f22d15316feedced5ad246aachrismair entry.setPath(PATH) 41abd32a990e145862f22d15316feedced5ad246aachrismair assert entry.getPath() == PATH 42abd32a990e145862f22d15316feedced5ad246aachrismair assert isDirectory() == entry.isDirectory() 43abd32a990e145862f22d15316feedced5ad246aachrismair } 44abd32a990e145862f22d15316feedced5ad246aachrismair 45abd32a990e145862f22d15316feedced5ad246aachrismair void testConstructor_Path() { 46abd32a990e145862f22d15316feedced5ad246aachrismair Constructor constructor = getImplementationClass().getConstructor([String.class] as Class[]) 47abd32a990e145862f22d15316feedced5ad246aachrismair AbstractFileSystemEntry entry = (AbstractFileSystemEntry) constructor.newInstance([PATH] as Object[]) 48dfa40a06dff44f29d8d5e1d3186055ad325fc7b9chrismair LOG.info(entry.toString()) 49abd32a990e145862f22d15316feedced5ad246aachrismair assertEquals("path", PATH, entry.getPath()) 50abd32a990e145862f22d15316feedced5ad246aachrismair entry.setPath("") 51abd32a990e145862f22d15316feedced5ad246aachrismair assert entry.getPath() == "" 52abd32a990e145862f22d15316feedced5ad246aachrismair assert isDirectory() == entry.isDirectory() 53abd32a990e145862f22d15316feedced5ad246aachrismair } 54abd32a990e145862f22d15316feedced5ad246aachrismair 5543649b0e3c6397d125ad56213f6917bd1336f852chrismair void testLockPath() { 561dfeab57f80c3a156a7ff11871c03f3f53033b9echrismair def entry = createFileSystemEntry(PATH) 5743649b0e3c6397d125ad56213f6917bd1336f852chrismair entry.lockPath() 5843649b0e3c6397d125ad56213f6917bd1336f852chrismair shouldFail { entry.path = 'abc' } 5943649b0e3c6397d125ad56213f6917bd1336f852chrismair assert entry.path == PATH 6043649b0e3c6397d125ad56213f6917bd1336f852chrismair } 6143649b0e3c6397d125ad56213f6917bd1336f852chrismair 621dfeab57f80c3a156a7ff11871c03f3f53033b9echrismair void testGetName() { 631dfeab57f80c3a156a7ff11871c03f3f53033b9echrismair assert createFileSystemEntry('abc').name == 'abc' 641dfeab57f80c3a156a7ff11871c03f3f53033b9echrismair assert createFileSystemEntry('/abc').name == 'abc' 651dfeab57f80c3a156a7ff11871c03f3f53033b9echrismair assert createFileSystemEntry('/dir/abc').name == 'abc' 661dfeab57f80c3a156a7ff11871c03f3f53033b9echrismair assert createFileSystemEntry('\\abc').name == 'abc' 671dfeab57f80c3a156a7ff11871c03f3f53033b9echrismair } 681dfeab57f80c3a156a7ff11871c03f3f53033b9echrismair 69884bbfe1c30c315958fa950be07f9418e59443b3chrismair void testSetPermissionsFromString() { 70884bbfe1c30c315958fa950be07f9418e59443b3chrismair def entry = createFileSystemEntry('abc') 71884bbfe1c30c315958fa950be07f9418e59443b3chrismair final PERM = 'rw-r---wx' 725965f99e27e983c12951d8cd1f11c5e535a24c4achrismair entry.setPermissionsFromString(PERM) 73884bbfe1c30c315958fa950be07f9418e59443b3chrismair assert entry.permissions == new Permissions(PERM) 74884bbfe1c30c315958fa950be07f9418e59443b3chrismair } 75884bbfe1c30c315958fa950be07f9418e59443b3chrismair 761dfeab57f80c3a156a7ff11871c03f3f53033b9echrismair protected AbstractFileSystemEntry createFileSystemEntry(String path) { 771dfeab57f80c3a156a7ff11871c03f3f53033b9echrismair def entry = (AbstractFileSystemEntry) getImplementationClass().newInstance() 781dfeab57f80c3a156a7ff11871c03f3f53033b9echrismair entry.setPath(path) 791dfeab57f80c3a156a7ff11871c03f3f53033b9echrismair return entry 801dfeab57f80c3a156a7ff11871c03f3f53033b9echrismair } 811dfeab57f80c3a156a7ff11871c03f3f53033b9echrismair 82abd32a990e145862f22d15316feedced5ad246aachrismair /** 83abd32a990e145862f22d15316feedced5ad246aachrismair * @return the subclass of AbstractFileSystemEntry to be tested 84abd32a990e145862f22d15316feedced5ad246aachrismair */ 85abd32a990e145862f22d15316feedced5ad246aachrismair protected abstract Class getImplementationClass() 8609415075d96852489d096aea7ae07dd156b58643chrismair 87abd32a990e145862f22d15316feedced5ad246aachrismair /** 88abd32a990e145862f22d15316feedced5ad246aachrismair * @return true if the class being tested represents a directory entry 89abd32a990e145862f22d15316feedced5ad246aachrismair */ 90abd32a990e145862f22d15316feedced5ad246aachrismair protected abstract boolean isDirectory() 9109415075d96852489d096aea7ae07dd156b58643chrismair 92abd32a990e145862f22d15316feedced5ad246aachrismair} 93