/************************************************************************** OmegaT - Computer Assisted Translation (CAT) tool with fuzzy matching, translation memory, keyword search, glossaries, and translation leveraging into updated projects. Copyright (C) 2000-2006 Keith Godfrey and Maxym Mykhalchuk Home page: http://www.omegat.org/ Support center: http://groups.yahoo.com/group/OmegaT/ This file is part of OmegaT. OmegaT is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. OmegaT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. **************************************************************************/ package org.omegat.util; import static org.junit.Assert.fail; import java.text.ParseException; import java.util.Date; import java.util.GregorianCalendar; import java.util.TimeZone; import org.junit.Test; /** * Tests for (some) static utility methods. * * @author Martin Fleurke */ public class TMXDateParserTest { @Test public void testParseDate() { TMXDateParser parser = new TMXDateParser(); //Test parse and toString with proper date string String dateString = "19971116T192059Z";//normal time Date d=null; try { d = parser.parse(dateString); } catch (ParseException e) { fail("Valid date string could not be parsed: "+e.getMessage()+" [for "+dateString+"]"); } String dateString2 = parser.getTMXDate(d); if (!dateString.equals(dateString2)) fail("Parsing string to date and back does not give same string"); //Test parse and toString with proper date string in daylight savings time dateString = "19970716T192059Z"; try { d = parser.parse(dateString); } catch (ParseException e) { fail("Valid date string could not be parsed: "+e.getMessage()+" [for "+dateString+"]"); } dateString2 = parser.getTMXDate(d); if (!dateString.equals(dateString2)) fail("Parsing string to date and back does not give same string (for daylight savings time)"); //Test if same dates but different time zone give equal strings GregorianCalendar c = new GregorianCalendar(TimeZone.getTimeZone("-02:00")); Date d2 = c.getTime(); //date in time zone -02:00 (hardly used anywhere, so most likely to be unique) Date dn = new Date(); //date with whatever time zone user is in (should be different from -02:00. dateString = parser.getTMXDate(dn); dateString2 = parser.getTMXDate(d2); if (!dateString.substring(0,13).equals(dateString2.substring(0,13))) { //taking substring, to prevent seconds to be different because of later creation of Date object fail("Two identical dates (in different timezones) do not give the same UTC String: "+dateString+" vs. "+dateString2); } try { parser.parse("19971116T19205Zs"); //hmm, no error, interpreted as '19971116T192005Z' +'s'. should we add a check or not? I think not useful. } catch (ParseException e) { //exception is good, although we do not get one in this case } //Test if invalid date (wrong time zone) gives error try { parser.parse("19971116T192059+00:00"); fail("Invalid date string 19971116T192059+00:00 is parsed as valid"); } catch (ParseException e) {} //Test if invalid date (too short) gives error try { parser.parse("19971116T"); fail("Invalid date string 19971116T is parsed as valid"); } catch (ParseException e) {} //Test if invalid date (null) gives error try { parser.parse(null); fail("Invalid date string null is parsed as valid"); } catch (ParseException e) {} //Test if invalid date ("") gives error try { parser.parse(""); fail("Invalid date string '' is parsed as valid"); } catch (ParseException e) {} } }