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