KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > commons > net > ftp > parser > NTFTPEntryParserTest


1 /*
2  * Copyright 2001-2005 The Apache Software Foundation
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  */

16 package org.apache.commons.net.ftp.parser;
17
18 import java.util.Calendar JavaDoc;
19
20 import junit.framework.TestSuite;
21 import org.apache.commons.net.ftp.FTPFile;
22 import org.apache.commons.net.ftp.FTPFileEntryParser;
23
24 /**
25  * @author <a HREF="mailto:scohen@apache.org">Steve Cohen</a>
26  * @version $Id: NTFTPEntryParserTest.java 155429 2005-02-26 13:13:04Z dirkv $
27  */

28 public class NTFTPEntryParserTest extends CompositeFTPParseTestFramework
29 {
30
31     private static final String JavaDoc [][] goodsamples = {
32     {
33             "05-26-95 10:57AM 143712 $LDR$",
34             "05-20-97 03:31PM 681 .bash_history",
35             "12-05-96 05:03PM <DIR> absoft2",
36             "11-14-97 04:21PM 953 AUDITOR3.INI",
37             "05-22-97 08:08AM 828 AUTOEXEC.BAK",
38             "01-22-98 01:52PM 795 AUTOEXEC.BAT",
39             "05-13-97 01:46PM 828 AUTOEXEC.DOS",
40             "12-03-96 06:38AM 403 AUTOTOOL.LOG",
41             "12-03-96 06:38AM <DIR> 123xyz",
42             "01-20-97 03:48PM <DIR> bin",
43             "05-26-1995 10:57AM 143712 $LDR$",
44     },
45     {
46             "-rw-r--r-- 1 root root 111325 Apr 27 2001 zxJDBC-2.0.1b1.tar.gz",
47             "-rw-r--r-- 1 root root 190144 Apr 27 2001 zxJDBC-2.0.1b1.zip",
48             "-rwxr-xr-x 2 500 500 166 Nov 2 2001 73131-testtes1.afp",
49             "-rw-r--r-- 1 500 500 166 Nov 9 2001 73131-testtes1.AFP",
50         }
51     };
52
53     private static final String JavaDoc[][] badsamples =
54         {
55             {
56                 "20-05-97 03:31PM 681 .bash_history",
57                 "drwxr-xr-x 2 root 99 4096 Feb 23 30:01 zzplayer",
58                 "12-05-96 17:03 <DIR> absoft2",
59                 "05-22-97 08:08 828 AUTOEXEC.BAK",
60                 " 0 DIR 05-19-97 12:56 local",
61                 " 0 DIR 05-12-97 16:52 Maintenance Desktop",
62             },
63             {
64                 "20-05-97 03:31PM 681 .bash_history",
65                 "drwxr-xr-x 2 root 99 4096Feb 23 30:01 zzplayer",
66                 "12-05-96 17:03 <DIR> absoft2",
67                 "05-22-97 08:08 828 AUTOEXEC.BAK",
68                 " 0 DIR 05-19-97 12:56 local",
69                 " 0 DIR 05-12-97 16:52 Maintenance Desktop",
70             }
71             };
72
73     private static final String JavaDoc directoryBeginningWithNumber =
74         "12-03-96 06:38AM <DIR> 123xyz";
75
76
77     /**
78      * @see junit.framework.TestCase#TestCase(String)
79      */

80     public NTFTPEntryParserTest (String JavaDoc name)
81     {
82         super(name);
83     }
84
85     /**
86      * @see org.apache.commons.net.ftp.parser.CompositeFTPParseTestFramework#getGoodListings()
87      */

88     protected String JavaDoc[][] getGoodListings()
89     {
90         return goodsamples;
91     }
92
93     /**
94      * @see org.apache.commons.net.ftp.parser.CompositeFTPParseTestFramework#getBadListings()
95      */

96     protected String JavaDoc[][] getBadListings()
97     {
98         return badsamples;
99     }
100
101     /**
102      * @see org.apache.commons.net.ftp.parser.FTPParseTestFramework#getParser()
103      */

104     protected FTPFileEntryParser getParser()
105     {
106        return new CompositeFileEntryParser(new FTPFileEntryParser[]
107         {
108             new NTFTPEntryParser(),
109             new UnixFTPEntryParser()
110
111         });
112     }
113
114     /**
115      * Method suite.
116      *
117      * @return TestSuite
118      */

119     public static TestSuite suite()
120     {
121         return(new TestSuite(NTFTPEntryParserTest.class));
122     }
123
124     /**
125      * @see org.apache.commons.net.ftp.parser.FTPParseTestFramework#testParseFieldsOnDirectory()
126      */

127     public void testParseFieldsOnDirectory() throws Exception JavaDoc
128     {
129         FTPFile dir = getParser().parseFTPEntry("12-05-96 05:03PM <DIR> absoft2");
130         assertNotNull("Could not parse entry.", dir);
131         assertEquals("Thu Dec 05 17:03:00 1996",
132                      df.format(dir.getTimestamp().getTime()));
133         assertTrue("Should have been a directory.",
134                    dir.isDirectory());
135         assertEquals("absoft2", dir.getName());
136         assertEquals(0, dir.getSize());
137
138         dir = getParser().parseFTPEntry("12-03-96 06:38AM <DIR> 123456");
139         assertNotNull("Could not parse entry.", dir);
140         assertTrue("Should have been a directory.",
141                 dir.isDirectory());
142         assertEquals("123456", dir.getName());
143         assertEquals(0, dir.getSize());
144
145     }
146
147     /**
148      * @see org.apache.commons.net.ftp.parser.FTPParseTestFramework#testParseFieldsOnFile()
149      */

150     public void testParseFieldsOnFile() throws Exception JavaDoc
151     {
152         FTPFile f = getParser().parseFTPEntry("05-22-97 12:08AM 5000000000 AUTOEXEC.BAK");
153         assertNotNull("Could not parse entry.", f);
154         assertEquals("Thu May 22 00:08:00 1997",
155                      df.format(f.getTimestamp().getTime()));
156         assertTrue("Should have been a file.",
157                    f.isFile());
158         assertEquals("AUTOEXEC.BAK", f.getName());
159         assertEquals(5000000000L, f.getSize());
160
161         // test an NT-unix style listing that does NOT have a leading zero
162
// on the hour.
163

164         f = getParser().parseFTPEntry(
165                 "-rw-rw-r-- 1 mqm mqm 17707 Mar 12 3:33 killmq.sh.log");
166         assertNotNull("Could not parse entry.", f);
167         Calendar JavaDoc cal = Calendar.getInstance();
168         cal.setTime(f.getTimestamp().getTime());
169         assertEquals("hour", 3, cal.get(Calendar.HOUR));
170         assertTrue("Should have been a file.",
171                 f.isFile());
172         assertEquals(17707, f.getSize());
173
174
175
176
177
178     }
179
180
181     protected void doAdditionalGoodTests(String JavaDoc test, FTPFile f)
182     {
183         if (test.indexOf("<DIR>") >= 0)
184         {
185                     assertEquals("directory.type",
186                             FTPFile.DIRECTORY_TYPE, f.getType());
187                 }
188     }
189
190     /**
191      * test condition reported as bug 20259.
192      * directory with name beginning with a numeric character
193      * was not parsing correctly
194      *
195      * @throws Exception
196      */

197     public void testDirectoryBeginningWithNumber() throws Exception JavaDoc
198     {
199         FTPFile f = getParser().parseFTPEntry(directoryBeginningWithNumber);
200         assertEquals("name", "123xyz", f.getName());
201     }
202 }
203
Popular Tags