001 /* 002 * Licensed to the Apache Software Foundation (ASF) under one or more 003 * contributor license agreements. See the NOTICE file distributed with 004 * this work for additional information regarding copyright ownership. 005 * The ASF licenses this file to You under the Apache License, Version 2.0 006 * (the "License"); you may not use this file except in compliance with 007 * the License. You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 */ 017 package org.apache.commons.net.ftp.parser; 018 019 import junit.framework.TestSuite; 020 import org.apache.commons.net.ftp.FTPFile; 021 import org.apache.commons.net.ftp.FTPFileEntryParser; 022 023 import java.util.Calendar; 024 025 /** 026 * @version $Id: OS400FTPEntryParserTest.java 155429 2005-02-26 13:13:04Z dirkv $ 027 */ 028 029 public class OS400FTPEntryParserTest extends CompositeFTPParseTestFramework 030 { 031 private static final String[][] badsamples = 032 { 033 { 034 "PEP 4019 04/03/18 18:58:16 STMF einladung.zip", 035 "PEP 422 03/24 14:06:26 *STMF readme", 036 "PEP 6409 04/03/24 30:06:29 *STMF build.xml", 037 "PEP USR 36864 04/03/24 14:06:34 *DIR dir1/", 038 "PEP 3686404/03/24 14:06:47 *DIR zdir2/" 039 }, 040 041 { 042 "----rwxr-x 1PEP 0 4019 Mar 18 18:58 einladung.zip", 043 "----rwxr-x 1 PEP 0 xx 422 Mar 24 14:06 readme", 044 "----rwxr-x 1 PEP 0 8492 Apr 07 30:13 build.xml", 045 "d---rwxr-x 2 PEP USR 0 45056 Mar 24 14:06 dir1", 046 "d---rwxr-x 2 PEP 0 45056Mar 24 14:06 zdir2" 047 } 048 }; 049 050 private static final String[][] goodsamples = 051 { 052 { 053 "PEP 4019 04/03/18 18:58:16 *STMF einladung.zip", 054 "PEP 422 04/03/24 14:06:26 *STMF readme", 055 "PEP 6409 04/03/24 14:06:29 *STMF build.xml", 056 "PEP 36864 04/03/24 14:06:34 *DIR dir1/", 057 "PEP 36864 04/03/24 14:06:47 *DIR zdir2/" 058 }, 059 { 060 "----rwxr-x 1 PEP 0 4019 Mar 18 18:58 einladung.zip", 061 "----rwxr-x 1 PEP 0 422 Mar 24 14:06 readme", 062 "----rwxr-x 1 PEP 0 8492 Apr 07 07:13 build.xml", 063 "d---rwxr-x 2 PEP 0 45056 Mar 24 14:06 dir1", 064 "d---rwxr-x 2 PEP 0 45056 Mar 24 14:06 zdir2" 065 } 066 }; 067 068 /** 069 * @see junit.framework.TestCase#TestCase(String) 070 */ 071 public OS400FTPEntryParserTest(String name) 072 { 073 super(name); 074 } 075 076 /** 077 * @see FTPParseTestFramework#getBadListing() 078 */ 079 @Override 080 protected String[][] getBadListings() 081 { 082 return badsamples; 083 } 084 085 /** 086 * @see FTPParseTestFramework#getGoodListing() 087 */ 088 @Override 089 protected String[][] getGoodListings() 090 { 091 return goodsamples; 092 } 093 094 /** 095 * @see FTPParseTestFramework#getParser() 096 */ 097 @Override 098 protected FTPFileEntryParser getParser() 099 { 100 return new CompositeFileEntryParser(new FTPFileEntryParser[] 101 { 102 new OS400FTPEntryParser(), 103 new UnixFTPEntryParser() 104 }); 105 } 106 107 /** 108 * @see FTPParseTestFramework#testParseFieldsOnDirectory() 109 */ 110 @Override 111 public void testParseFieldsOnDirectory() throws Exception 112 { 113 FTPFile f = getParser().parseFTPEntry("PEP 36864 04/03/24 14:06:34 *DIR dir1/"); 114 assertNotNull("Could not parse entry.", 115 f); 116 assertTrue("Should have been a directory.", 117 f.isDirectory()); 118 assertEquals("PEP", 119 f.getUser()); 120 assertEquals("dir1", 121 f.getName()); 122 assertEquals(36864, 123 f.getSize()); 124 125 Calendar cal = Calendar.getInstance(); 126 cal.set(Calendar.MONTH, Calendar.MARCH); 127 128 cal.set(Calendar.YEAR, 2004); 129 cal.set(Calendar.DATE, 24); 130 cal.set(Calendar.HOUR_OF_DAY, 14); 131 cal.set(Calendar.MINUTE, 6); 132 cal.set(Calendar.SECOND, 34); 133 134 assertEquals(df.format(cal.getTime()), 135 df.format(f.getTimestamp().getTime())); 136 } 137 138 @Override 139 protected void doAdditionalGoodTests(String test, FTPFile f) 140 { 141 if (test.startsWith("d")) 142 { 143 assertEquals("directory.type", 144 FTPFile.DIRECTORY_TYPE, f.getType()); 145 } 146 } 147 148 /** 149 * @see FTPParseTestFramework#testParseFieldsOnFile() 150 */ 151 @Override 152 public void testParseFieldsOnFile() throws Exception 153 { 154 FTPFile f = getParser().parseFTPEntry("PEP 5000000000 04/03/24 14:06:29 *STMF build.xml"); 155 assertNotNull("Could not parse entry.", 156 f); 157 assertTrue("Should have been a file.", 158 f.isFile()); 159 assertEquals("PEP", 160 f.getUser()); 161 assertEquals("build.xml", 162 f.getName()); 163 assertEquals(5000000000L, 164 f.getSize()); 165 166 Calendar cal = Calendar.getInstance(); 167 168 cal.set(Calendar.DATE, 24); 169 cal.set(Calendar.MONTH, Calendar.MARCH); 170 cal.set(Calendar.YEAR, 2004); 171 cal.set(Calendar.HOUR_OF_DAY, 14); 172 cal.set(Calendar.MINUTE, 6); 173 cal.set(Calendar.SECOND, 29); 174 assertEquals(df.format(cal.getTime()), 175 df.format(f.getTimestamp().getTime())); 176 } 177 178 /** 179 * Method suite. 180 * 181 * @return TestSuite 182 */ 183 public static TestSuite suite() 184 { 185 return(new TestSuite(OS400FTPEntryParserTest.class)); 186 } 187 }