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 org.mockftpserver.fake.filesystem.AbstractFakeFileSystemTest 19b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair 20b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair/** 21b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair * Tests for UnixFakeFileSystem. 22b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair * 23b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair * @version $Revision$ - $Date$ 24b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair * 25b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair * @author Chris Mair 26b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair */ 27b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismairclass UnixFakeFileSystemTest extends AbstractFakeFileSystemTest { 28b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair 29b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair private static final String SEP = "/" 30b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair 31b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair UnixFakeFileSystemTest() { 32b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair // These need to be set in the constructor because these values are used in setUp() 33b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair NEW_DIR = SEP + NEW_DIRNAME 34b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair NEW_FILE = "/NewFile.txt" 35b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair EXISTING_DIR = "/" 36b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair EXISTING_FILE = "/ExistingFile.txt" 37b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair NO_SUCH_DIR = "/xx/yy" 38b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair NO_SUCH_FILE = "/xx/yy/zz.txt" 39b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair } 40b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair 41b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair 42b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair void testListNames_FromRoot() { 43b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair final DIR = '/' 44b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair final FILENAME = 'abc.txt' 45b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair final FILE = p(DIR, FILENAME) 46b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair 47b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair assert !fileSystem.exists(FILE) 48b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair fileSystem.add(new FileEntry(FILE)) 49b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair def names = fileSystem.listNames(DIR) 50b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair assert names.find { it == FILENAME } 51b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair } 52b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair 53b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair void testPath() { 54b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair assert fileSystem.path(null, null) == "" 55b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair assert fileSystem.path(null, "abc") == "abc" 56b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair assert fileSystem.path("abc", null) == "abc" 57b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair assert fileSystem.path("", "") == "" 58b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair assert fileSystem.path("", "abc") == "abc" 59b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair assert fileSystem.path("abc", "") == "abc" 60b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair assert fileSystem.path("abc", "DEF") == "abc/DEF" 61b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair assert fileSystem.path("abc/", "def") == "abc/def" 62b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair assert fileSystem.path("/abc/", "def") == "/abc/def" 63b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair assert fileSystem.path("/ABC", "/def") == "/ABC/def" 64b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair assert fileSystem.path("abc", "/def") == "abc/def" 65b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair } 66b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair 67b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair void testNormalize() { 68b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair assert fileSystem.normalize("/") == "/" 69b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair assert fileSystem.normalize("/aBc") == "/aBc" 70b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair assert fileSystem.normalize("/abc/DEF") == "/abc/DEF" 71b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair assert fileSystem.normalize("/Abc/def/..") == "/Abc" 72b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair assert fileSystem.normalize("/abc/def/../ghi") == "/abc/ghi" 73b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair assert fileSystem.normalize("/abc/def/.") == "/abc/def" 74b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair assert fileSystem.normalize("/abc/def/./gHI") == "/abc/def/gHI" 75b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair } 76b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair 77b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair void testGetName() { 78b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair assert fileSystem.getName("/") == "" 79b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair assert fileSystem.getName("/aBC") == "aBC" 80b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair assert fileSystem.getName("/abc/def") == "def" 81b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair assert fileSystem.getName("/abc/def/../GHI") == "GHI" 82b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair } 83b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair 84b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair public void testGetParent() { 85b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair assert fileSystem.getParent("/") == null 86b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair assert fileSystem.getParent("/abc") == "/" 87b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair assert fileSystem.getParent("/abc/def") == "/abc" 88b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair } 89b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair 90b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair void testIsValidName() { 91b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair ["/abc", 92b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair "/ABC/def", 93b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair "/abc/d!ef", 94b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair "/abc/DEF/h(ij)!@#\$%^&*()-_+=~`,.<>?;:[]{}\\|abc", 95b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair ].each { 96b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair assert fileSystem.isValidName(it), "[$it]" 97b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair } 98b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair 99b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair ["", 100b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair "abc", 101b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair "abc/def", 102b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair "a:/abc:", 103b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair "//a*bc", 104b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair "C:/?abc", 105b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair ].each { 106b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair assert !fileSystem.isValidName(it), "[$it]" 107b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair } 108b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair } 109b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair 110b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair void testIsAbsolute() { 111b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair assert fileSystem.isAbsolute("/") 112b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair assert fileSystem.isAbsolute("/abc") 113b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair 114b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair assert !fileSystem.isAbsolute("abc") 115b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair assert !fileSystem.isAbsolute("c:\\usr") 116b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair 117b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair shouldFailWithMessageContaining("path") { fileSystem.isAbsolute(null) } 118b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair } 119b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair 120b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair //----------------------------------------------------------------------------------- 121b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair // Helper Methods 122b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair //----------------------------------------------------------------------------------- 123b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair 124b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair /** 125b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair * Return a new instance of the FileSystem implementation class under test 126b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair * @return a new FileSystem instance 127b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair */ 128b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair protected FileSystem createFileSystem() { 129b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair UnixFakeFileSystem fs = new UnixFakeFileSystem() 130b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair fs.add(new DirectoryEntry(EXISTING_DIR)) 131b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair fs.add(new FileEntry(EXISTING_FILE, EXISTING_FILE_CONTENTS)) 132b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair assert fs.createParentDirectoriesAutomatically 133b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair fs.createParentDirectoriesAutomatically = false 134b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair return fs 135b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair } 136b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair 137b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair protected Class getExpectedDirectoryListingFormatterClass() { 138b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair return UnixDirectoryListingFormatter 139b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair } 140b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair 141b2f4a2dfc590c250e42b21eb40d9539ac135b495chrismair} 142