    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  import junit.framework.TestCase;
    18
    19  import org.apache.commons.net.ftp.FTPFileEntryParser;
    20
    21
    22  public class DefaultFTPFileEntryParserFactoryTest extends TestCase
    23  {
    24      public void testDefaultParserFactory() throws Exception {
    25          DefaultFTPFileEntryParserFactory factory =
    26              new DefaultFTPFileEntryParserFactory();
    27
    28          FTPFileEntryParser parser = factory.createFileEntryParser("unix");
    29          assertTrue(parser instanceof UnixFTPEntryParser);
    30
    31          parser = factory.createFileEntryParser("UNIX");
    32          assertTrue(parser instanceof UnixFTPEntryParser);
    33
    34          parser = factory.createFileEntryParser("Unix");
    35          assertTrue(parser instanceof UnixFTPEntryParser);
    36
    37          parser = factory.createFileEntryParser("EnterpriseUnix");
    38          assertTrue(parser instanceof UnixFTPEntryParser);
    39          assertFalse(parser instanceof EnterpriseUnixFTPEntryParser);
    40
    41          // works because contains the expression "Unix"
    42          parser = factory.createFileEntryParser("UnixFTPEntryParser");
    43          assertTrue(parser instanceof UnixFTPEntryParser);
    44
    45          try {
    46              parser = factory.createFileEntryParser("NT");
    47              fail("Exception should have been thrown. \"NT\" is not a recognized key");
    48          } catch (ParserInitializationException pie) {
    49              assertNull(pie.getRootCause());
    50          }
    51
    52          parser = factory.createFileEntryParser("WindowsNT");
    53          assertTrue(parser instanceof CompositeFileEntryParser);
    54
    55          parser = factory.createFileEntryParser("ThigaVMSaMaJig");
    56          assertTrue(parser instanceof VMSFTPEntryParser);
    57
    58          parser = factory.createFileEntryParser("OS/2");
    59          assertTrue(parser instanceof OS2FTPEntryParser);
    60
    61          parser = factory.createFileEntryParser("OS/400");
    62          assertTrue(parser instanceof CompositeFileEntryParser);
    63
    64          try {
    65              parser = factory.createFileEntryParser("OS2FTPFileEntryParser");
    66              fail("Exception should have been thrown. \"OS2FTPFileEntryParser\" is not a recognized key");
    67          } catch (ParserInitializationException pie) {
    68              assertNull(pie.getRootCause());
    69          }
    70
    71          parser = factory.createFileEntryParser(
    72              "org.apache.commons.net.ftp.parser.OS2FTPEntryParser");
    73          assertTrue(parser instanceof OS2FTPEntryParser);
    74
    75          try {
    76              parser = factory.createFileEntryParser(
    77                  "org.apache.commons.net.ftp.parser.DefaultFTPFileEntryParserFactory");
    78              fail("Exception should have been thrown. \"DefaultFTPFileEntryParserFactory\" does not implement FTPFileEntryParser");
    79          } catch (ParserInitializationException pie) {
    80              Throwable root = pie.getRootCause();
    81              assertTrue(root instanceof ClassCastException);
    82          }
    83      }
    84  }
    85