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;
018
019 import java.text.DateFormatSymbols;
020 import java.text.ParseException;
021 import java.text.SimpleDateFormat;
022 import java.util.Date;
023 import java.util.Locale;
024
025 import junit.framework.TestCase;
026
027 public class FTPClientConfigTest extends TestCase {
028
029 /*
030 * Class under test for void FTPClientConfig(String)
031 */
032 public void testFTPClientConfigString() {
033 FTPClientConfig config = new FTPClientConfig(FTPClientConfig.SYST_VMS);
034 assertEquals(FTPClientConfig.SYST_VMS, config.getServerSystemKey());
035 assertNull(config.getDefaultDateFormatStr());
036 assertNull(config.getRecentDateFormatStr());
037 assertNull(config.getShortMonthNames());
038 assertNull(config.getServerTimeZoneId());
039 assertNull(config.getServerLanguageCode());
040 }
041
042 String A = "A";
043 String B = "B";
044 String C = "C";
045 String D = "D";
046 String E = "E";
047 String F = "F";
048
049 /*
050 * Class under test for void FTPClientConfig(String, String, String, String, String, String)
051 */
052 public void testFTPClientConfigStringStringStringStringStringString() {
053 FTPClientConfig conf = new FTPClientConfig(A,B,C,D,E,F);
054
055 assertEquals("A", conf.getServerSystemKey());
056 assertEquals("B", conf.getDefaultDateFormatStr());
057 assertEquals("C", conf.getRecentDateFormatStr());
058 assertEquals("E", conf.getShortMonthNames());
059 assertEquals("F", conf.getServerTimeZoneId());
060 assertEquals("D", conf.getServerLanguageCode());
061 }
062
063
064 String badDelim = "jan,feb,mar,apr,may,jun,jul,aug.sep,oct,nov,dec";
065 String tooLong = "jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec|jan";
066 String tooShort = "jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov";
067 String fakeLang = "abc|def|ghi|jkl|mno|pqr|stu|vwx|yza|bcd|efg|hij";
068
069 public void testSetShortMonthNames() {
070 }
071
072 public void testGetServerLanguageCode() {
073 }
074
075 public void testLookupDateFormatSymbols() {
076 DateFormatSymbols dfs1 = null;
077 DateFormatSymbols dfs2 = null;
078 DateFormatSymbols dfs3 = null;
079 DateFormatSymbols dfs4 = null;
080
081
082 try {
083 dfs1 = FTPClientConfig.lookupDateFormatSymbols("fr");
084 } catch (IllegalArgumentException e){
085 fail("french");
086 }
087
088 try {
089 dfs2 = FTPClientConfig.lookupDateFormatSymbols("sq");
090 } catch (IllegalArgumentException e){
091 fail("albanian");
092 }
093
094 try {
095 dfs3 = FTPClientConfig.lookupDateFormatSymbols("ru");
096 } catch (IllegalArgumentException e){
097 fail("unusupported.default.to.en");
098 }
099 try {
100 dfs4 = FTPClientConfig.lookupDateFormatSymbols(fakeLang);
101 } catch (IllegalArgumentException e){
102 fail("not.language.code.but.defaults");
103 }
104
105 assertEquals(dfs3,dfs4);
106
107 SimpleDateFormat sdf1 = new SimpleDateFormat("d MMM yyyy", dfs1);
108 SimpleDateFormat sdf2 = new SimpleDateFormat("MMM dd, yyyy", dfs2);
109 SimpleDateFormat sdf3 = new SimpleDateFormat("MMM dd, yyyy", dfs3);
110 Date d1 = null;
111 Date d2 = null;
112 Date d3 = null;
113 try {
114 d1 = sdf1.parse("31 d\u00e9c 2004");
115 } catch (ParseException px) {
116 fail("failed.to.parse.french");
117 }
118 try {
119 d2 = sdf2.parse("dhj 31, 2004");
120 } catch (ParseException px) {
121 fail("failed.to.parse.albanian");
122 }
123 try {
124 d3 = sdf3.parse("DEC 31, 2004");
125 } catch (ParseException px) {
126 fail("failed.to.parse.'russian'");
127 }
128 assertEquals("different.parser.same.date", d1, d2);
129 assertEquals("different.parser.same.date", d1, d3);
130
131 }
132
133 public void testGetDateFormatSymbols() {
134
135 try {
136 FTPClientConfig.getDateFormatSymbols(badDelim);
137 fail("bad delimiter");
138 } catch (IllegalArgumentException e){
139 // should have failed
140 }
141 try {
142 FTPClientConfig.getDateFormatSymbols(tooLong);
143 fail("more than 12 months");
144 } catch (IllegalArgumentException e){
145 // should have failed
146 }
147 try {
148 FTPClientConfig.getDateFormatSymbols(tooShort);
149 fail("fewer than 12 months");
150 } catch (IllegalArgumentException e){
151 // should have failed
152 }
153 DateFormatSymbols dfs2 = null;
154 try {
155 dfs2 = FTPClientConfig.getDateFormatSymbols(fakeLang);
156 } catch (Exception e){
157 fail("rejected valid short month string");
158 }
159 SimpleDateFormat sdf1 =
160 new SimpleDateFormat("MMM dd, yyyy", Locale.ENGLISH);
161 SimpleDateFormat sdf2 = new SimpleDateFormat("MMM dd, yyyy", dfs2);
162
163 Date d1 = null;
164 Date d2 = null;
165 try {
166 d1 = sdf1.parse("dec 31, 2004");
167 } catch (ParseException px) {
168 fail("failed.to.parse.std");
169 }
170 try {
171 d2 = sdf2.parse("hij 31, 2004");
172 } catch (ParseException px) {
173 fail("failed.to.parse.weird");
174 }
175
176 assertEquals("different.parser.same.date",d1, d2);
177
178 try {
179 d2 = sdf1.parse("hij 31, 2004");
180 fail("should.have.failed.to.parse.weird");
181 } catch (ParseException px) {
182 }
183 try {
184 d2 = sdf2.parse("dec 31, 2004");
185 fail("should.have.failed.to.parse.standard");
186 } catch (ParseException px) {
187 }
188
189
190 }
191
192 }