    1   /*
    2    * Copyright 2004 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 junit.framework.TestSuite;
    19  import org.apache.commons.net.ftp.FTPFile;
    20  import org.apache.commons.net.ftp.FTPFileEntryParser;
    21
    22  import java.util.Calendar;
    23
    24  /***
    25   * @version $Id: OS400FTPEntryParserTest.java 155429 2005-02-26 13:13:04Z dirkv $
    26   */
    27
    28  public class OS400FTPEntryParserTest extends CompositeFTPParseTestFramework
    29  {
    30      private static final String[][] badsamples =
    31  {
    32      {
    33          "PEP              4019 04/03/18 18:58:16 STMF       einladung.zip",
    34          "PEP               422 03/24 14:06:26 *STMF      readme",
    35          "PEP              6409 04/03/24 30:06:29 *STMF      build.xml",
    36          "PEP USR         36864 04/03/24 14:06:34 *DIR       dir1/",
    37          "PEP             3686404/03/24 14:06:47 *DIR       zdir2/"
    38              },
    39
    40              {
    41                  "----rwxr-x   1PEP       0           4019 Mar 18 18:58 einladung.zip",
    42                  "----rwxr-x   1 PEP      0  xx        422 Mar 24 14:06 readme",
    43                  "----rwxr-x   1 PEP      0           8492 Apr 07 30:13 build.xml",
    44                  "d---rwxr-x   2 PEP USR  0          45056 Mar 24 14:06 dir1",
    45                  "d---rwxr-x   2 PEP      0          45056Mar 24 14:06 zdir2"
    46              }
    47      };
    48
    49      private static final String[][] goodsamples =
    50          {
    51      {
    52          "PEP              4019 04/03/18 18:58:16 *STMF      einladung.zip",
    53          "PEP               422 04/03/24 14:06:26 *STMF      readme",
    54          "PEP              6409 04/03/24 14:06:29 *STMF      build.xml",
    55          "PEP             36864 04/03/24 14:06:34 *DIR       dir1/",
    56          "PEP             36864 04/03/24 14:06:47 *DIR       zdir2/"
    57              },
    58              {
    59                  "----rwxr-x   1 PEP      0           4019 Mar 18 18:58 einladung.zip",
    60                  "----rwxr-x   1 PEP      0            422 Mar 24 14:06 readme",
    61                  "----rwxr-x   1 PEP      0           8492 Apr 07 07:13 build.xml",
    62                  "d---rwxr-x   2 PEP      0          45056 Mar 24 14:06 dir1",
    63                  "d---rwxr-x   2 PEP      0          45056 Mar 24 14:06 zdir2"
    64              }
    65      };
    66
    67      /***
    68       * @see junit.framework.TestCase#TestCase(String)
    69       */
    70      public OS400FTPEntryParserTest(String name)
    71      {
    72          super(name);
    73      }
    74
    75      /***
    76       * @see FTPParseTestFramework#getBadListing()
    77       */
    78      protected String[][] getBadListings()
    79      {
    80          return badsamples;
    81      }
    82
    83      /***
    84       * @see FTPParseTestFramework#getGoodListing()
    85       */
    86      protected String[][] getGoodListings()
    87      {
    88          return goodsamples;
    89      }
    90
    91      /***
    92       * @see FTPParseTestFramework#getParser()
    93       */
    94      protected FTPFileEntryParser getParser()
    95      {
    96          return new CompositeFileEntryParser(new FTPFileEntryParser[]
    97          {
    98              new OS400FTPEntryParser(),
    99              new UnixFTPEntryParser()
    100         });
    101     }
    102
    103     /***
    104      * @see FTPParseTestFramework#testParseFieldsOnDirectory()
    105      */
    106     public void testParseFieldsOnDirectory() throws Exception
    107     {
    108         FTPFile f = getParser().parseFTPEntry("PEP             36864 04/03/24 14:06:34 *DIR       dir1/");
    109         assertNotNull("Could not parse entry.",
    110                       f);
    111         assertTrue("Should have been a directory.",
    112                    f.isDirectory());
    113         assertEquals("PEP",
    114                      f.getUser());
    115         assertEquals("dir1",
    116                      f.getName());
    117         assertEquals(36864,
    118                      f.getSize());
    119
    120         Calendar cal = Calendar.getInstance();
    121         cal.set(Calendar.MONTH, Calendar.MARCH);
    122
    123         cal.set(Calendar.YEAR, 2004);
    124         cal.set(Calendar.DATE, 24);
    125         cal.set(Calendar.HOUR_OF_DAY, 14);
    126         cal.set(Calendar.MINUTE, 6);
    127         cal.set(Calendar.SECOND, 34);
    128
    129         assertEquals(df.format(cal.getTime()),
    130                      df.format(f.getTimestamp().getTime()));
    131     }
    132
    133     protected void doAdditionalGoodTests(String test, FTPFile f)
    134     {
    135         if (test.startsWith("d"))
    136         {
    137             assertEquals("directory.type",
    138                 FTPFile.DIRECTORY_TYPE, f.getType());
    139         }
    140     }
    141
    142     /***
    143      * @see FTPParseTestFramework#testParseFieldsOnFile()
    144      */
    145     public void testParseFieldsOnFile() throws Exception
    146     {
    147         FTPFile f = getParser().parseFTPEntry("PEP              5000000000 04/03/24 14:06:29 *STMF      build.xml");
    148         assertNotNull("Could not parse entry.",
    149                       f);
    150         assertTrue("Should have been a file.",
    151                    f.isFile());
    152         assertEquals("PEP",
    153                      f.getUser());
    154         assertEquals("build.xml",
    155                      f.getName());
    156         assertEquals(5000000000L,
    157                      f.getSize());
    158
    159         Calendar cal = Calendar.getInstance();
    160
    161         cal.set(Calendar.DATE, 24);
    162         cal.set(Calendar.MONTH, Calendar.MARCH);
    163         cal.set(Calendar.YEAR, 2004);
    164         cal.set(Calendar.HOUR_OF_DAY, 14);
    165         cal.set(Calendar.MINUTE, 6);
    166         cal.set(Calendar.SECOND, 29);
    167         assertEquals(df.format(cal.getTime()),
    168                      df.format(f.getTimestamp().getTime()));
    169     }
    170
    171     /***
    172      * Method suite.
    173      *
    174      * @return TestSuite
    175      */
    176     public static TestSuite suite()
    177     {
    178         return(new TestSuite(OS400FTPEntryParserTest.class));
    179     }
    180 }