/*
* Copyright 1999-2006 University of Chicago
*
* Licensed 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.dcache.ftp.client.test;
import org.dcache.ftp.client.FileInfo;
import junit.framework.TestCase;
import junit.framework.Test;
import junit.framework.TestSuite;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class FileInfoTest extends TestCase {
private static Logger logger =
LoggerFactory.getLogger(ReplyTest.class);
public static void main(String[] argv) {
junit.textui.TestRunner.run (suite());
}
public static Test suite() {
return new TestSuite(FileInfoTest.class);
}
public FileInfoTest(String name) {
super(name);
}
public void testRegular() throws Exception {
FileInfo f1 = new FileInfo("drwxr-xr-x 2 guest other 1536 Jan 31 15:15 run.bat");
assertEquals(" run.bat", f1.getName());
assertEquals(true, f1.isDirectory());
assertEquals(1536, f1.getSize());
assertEquals("Jan 31", f1.getDate());
assertEquals("15:15", f1.getTime());
}
public void testNoGroup() throws Exception {
FileInfo f2 = new FileInfo("-rw-rw-r-- 1 globus 117579 Nov 29 13:24 AdGriP.pdf");
assertEquals("AdGriP.pdf", f2.getName());
assertEquals(false, f2.isDirectory());
assertEquals(117579, f2.getSize());
assertEquals("Nov 29", f2.getDate());
assertEquals("13:24", f2.getTime());
}
public void testSpace() throws Exception {
FileInfo f3 = new FileInfo("drwxrwxr-x 2 gawor globus 512 Dec 26 2001 gatekeeper file 2");
assertEquals("gatekeeper file 2", f3.getName());
assertEquals(true, f3.isDirectory());
assertEquals(512, f3.getSize());
assertEquals("Dec 26", f3.getDate());
assertEquals("2001", f3.getTime());
}
public void testFileWithDate() throws Exception {
FileInfo f4 = new FileInfo("drwxrwxr-x 2 gawor globus 512 Dec 26 2001 gatekeeper-2001");
assertEquals("gatekeeper-2001", f4.getName());
assertEquals(true, f4.isDirectory());
assertEquals(512, f4.getSize());
assertEquals("Dec 26", f4.getDate());
assertEquals("2001", f4.getTime());
}
public void testFileWithDateWithSpace() throws Exception {
FileInfo f4 = new FileInfo("drwxrwxr-x 2 gawor globus 512 Dec 26 2001 gatekeeper-2001 a b c ");
assertEquals("gatekeeper-2001 a b c ", f4.getName());
assertEquals(true, f4.isDirectory());
assertEquals(512, f4.getSize());
assertEquals("Dec 26", f4.getDate());
assertEquals("2001", f4.getTime());
}
public void testRegular2() throws Exception {
FileInfo f4 = new FileInfo("drwxrwxr-x 2 7 7 4096 May 1 1994 bin");
assertEquals("bin", f4.getName());
assertEquals(true, f4.isDirectory());
assertEquals(4096, f4.getSize());
assertEquals("May 1", f4.getDate());
assertEquals("1994", f4.getTime());
}
public void testSoftLink() throws Exception {
FileInfo f4 = new FileInfo("lrwxrwxrwx 1 root root 10 Nov 2 2001 mouse -> /dev/psaux");
assertEquals(true, f4.isSoftLink());
assertEquals("mouse -> /dev/psaux", f4.getName());
assertEquals(10, f4.getSize());
assertEquals("Nov 2", f4.getDate());
assertEquals("2001", f4.getTime());
}
/**
character device.
an entry of /dev directory has slightly different format
*/
public void testCharDev() throws Exception {
FileInfo f5 = new FileInfo("crw-rw-rw- 1 root tty 3, 24 Apr 14 2001 ttyq8");
assertEquals(true, f5.isDevice());
assertEquals(FileInfo.UNKNOWN_STRING,f5.getName());
assertEquals(FileInfo.UNKNOWN_STRING,f5.getDate());
assertEquals(FileInfo.UNKNOWN_STRING,f5.getTime());
assertEquals(FileInfo.UNKNOWN_NUMBER,f5.getSize());
}
/**
block device.
an entry of /dev directory has slightly different format
*/
public void testBlockDev() throws Exception {
FileInfo f5 = new FileInfo("brw-rw---- 1 root cdrom 15, 0 Apr 14 2001 sonycd");
assertEquals(true, f5.isDevice());
assertEquals(FileInfo.UNKNOWN_STRING,f5.getName());
assertEquals(FileInfo.UNKNOWN_STRING,f5.getDate());
assertEquals(FileInfo.UNKNOWN_STRING,f5.getTime());
assertEquals(FileInfo.UNKNOWN_NUMBER,f5.getSize());
}
/**
suppose that group is missing in /dev directory entry
*/
public void testCharDev2() throws Exception {
FileInfo f5 = new FileInfo("crw-rw-rw- 1 root 3, 24 Apr 14 2001 ttyq8");
assertEquals(true, f5.isDevice());
assertEquals(FileInfo.UNKNOWN_STRING,f5.getName());
assertEquals(FileInfo.UNKNOWN_STRING,f5.getDate());
assertEquals(FileInfo.UNKNOWN_STRING,f5.getTime());
assertEquals(FileInfo.UNKNOWN_NUMBER,f5.getSize());
}
public void testPermission() throws Exception {
FileInfo f1 = new FileInfo("-rwxrw-r-- 2 guest other 1536 Jan 31 15:15 run.bat");
int mode = (1 << 8) + (1 << 7) + (1 << 6) + (1 << 5) + (1 << 4) + (1 << 2);
assertEquals(mode,f1.getMode());
assertEquals("764",f1.getModeAsString());
assertEquals(true,f1.userCanRead());
assertEquals(true,f1.userCanWrite());
assertEquals(true,f1.userCanExecute());
assertEquals(true,f1.groupCanRead());
assertEquals(true,f1.groupCanWrite());
assertEquals(false,f1.groupCanExecute());
assertEquals(true,f1.allCanRead());
assertEquals(false,f1.allCanWrite());
assertEquals(false,f1.allCanExecute());
f1 = new FileInfo("------x-wx 2 guest other 1536 Jan 31 15:15 run.bat");
mode = (1 << 3) + (1 << 1) + (1 << 0);
assertEquals(mode,f1.getMode());
assertEquals("013",f1.getModeAsString());
assertEquals(false,f1.userCanRead());
assertEquals(false,f1.userCanWrite());
assertEquals(false,f1.userCanExecute());
assertEquals(false,f1.groupCanRead());
assertEquals(false,f1.groupCanWrite());
assertEquals(true,f1.groupCanExecute());
assertEquals(false,f1.allCanRead());
assertEquals(true,f1.allCanWrite());
assertEquals(true,f1.allCanExecute());
}
/*
public void test() throws Exception {
String b = "drwxrwxr-x 2 7 7 4096 May 1 1994 bin\n" +
"drwxrwx-wx 16 468 861 4096 Oct 2 15:19 chammp\n" +
"drwxrws-wx 2 1487 1123 4096 Oct 28 1999 chemio\n" +
"drwxrwxr-x 2 7 7 4096 Mar 1 1994 dev\n" +
"dr-xrwxr-x 2 7 7 4096 Oct 25 16:00 etc\n" +
"drwxrws-wx 7 7 300 4096 Nov 14 07:03 incoming\n" +
"drwxr-xr-x 2 0 0 4096 Sep 27 19:23 lib\n" +
"drwxr-xr-x 2 0 0 4096 Oct 9 1999 lost+found\n" +
"drwxr-xr-x 2 793 76 4096 Apr 17 2002 openpbs\n" +
"lrwxrwxrwx 1 0 0 21 Sep 20 04:39 pieper -> pub/People/pieper/old\n" +
"drwxrwxr-x 72 7 7 4096 Oct 25 15:58 pub\n" +
"drwxrwxr-x 3 7 7 4096 Mar 1 1994 usr\n" +
"drwxr-sr-x 2 793 76 4096 May 10 1999 wiki\n";
java.io.BufferedReader r = new java.io.BufferedReader(new java.io.StringReader(b));
String line;
while( (line = r.readLine()) != null) {
System.out.println(line);
new FileInfo(line);
}
}
*/
}