// ============================================================================ // // Copyright (C) 2006-2016 Talend Inc. - www.talend.com // // This source code is available under agreement available at // %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt // // You should have received a copy of the agreement // along with this program; if not, write to Talend SA // 9 rue Pages 92150 Suresnes, France // // ============================================================================ package org.talend.dataquality.statistics.datetime; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import java.io.IOException; import java.io.InputStream; import java.util.*; import org.apache.commons.io.IOUtils; import org.junit.BeforeClass; import org.junit.Ignore; import org.junit.Test; public class SampleTest { private static List<String> DATE_SAMPLES; private static List<String> TIME_SAMPLES; private final Map<String, Set<String>> EXPECTED_FORMATS = new LinkedHashMap<String, Set<String>>() { private static final long serialVersionUID = 1L; { put("3/22/99", new HashSet<String>(Arrays.asList(new String[] // { "M/d/yy" }))); put("22/03/99", new HashSet<String>(Arrays.asList(new String[] // { "d/MM/yy", "dd/MM/yy" }))); put("22.03.99", new HashSet<String>(Arrays.asList(new String[] // { "dd.MM.yy", "d.MM.yy" }))); put("99-03-22", new HashSet<String>(Arrays.asList(new String[] // { "yy-MM-dd" }))); put("99/03/22", new HashSet<String>(Arrays.asList(new String[] // { "yy/MM/dd" }))); put("99-3-22", new HashSet<String>(Arrays.asList(new String[] // { "yy-M-d" }))); put("Mar 22, 1999", new HashSet<String>(Arrays.asList(new String[] // { "MMMM d, yyyy", "MMM d, yyyy" }))); put("22 mars 1999", new HashSet<String>(Arrays.asList(new String[] // { "d MMMM yyyy", "d MMM yyyy", "dd MMMM yyyy" }))); put("22.03.1999", new HashSet<String>(Arrays.asList(new String[] // { "d.MM.yyyy", "dd.MM.yyyy" }))); put("22-Mar-1999", new HashSet<String>(Arrays.asList(new String[] // { "dd-MMM-yyyy", "d-MMM-yyyy" }))); put("22-mar-1999", new HashSet<String>(Arrays.asList(new String[] // { "dd-MMM-yyyy", "d-MMM-yyyy" }))); put("22-Mar-1999", new HashSet<String>(Arrays.asList(new String[] // { "dd-MMM-yyyy", "d-MMM-yyyy" }))); put("1999-03-22", new HashSet<String>(Arrays.asList(new String[] // { "yyyy-MM-dd" }))); put("1999/03/22", new HashSet<String>(Arrays.asList(new String[] // { "yyyy/MM/dd" }))); put("1999-3-22", new HashSet<String>(Arrays.asList(new String[] // { "yyyy-M-d" }))); put("March 22, 1999", new HashSet<String>(Arrays.asList(new String[] // { "MMMM d, yyyy" }))); put("22 mars 1999", new HashSet<String>(Arrays.asList(new String[] // { "d MMMM yyyy", "d MMM yyyy", "dd MMMM yyyy" }))); put("22. März 1999", new HashSet<String>(Arrays.asList(new String[] // { "d. MMMM yyyy" }))); put("22 March 1999", new HashSet<String>(Arrays.asList(new String[] // { "d MMMM yyyy", "dd MMMM yyyy" }))); put("22 marzo 1999", new HashSet<String>(Arrays.asList(new String[] // { "d MMMM yyyy", "dd MMMM yyyy" }))); put("March 22, 1999", new HashSet<String>(Arrays.asList(new String[] // { "MMMM d, yyyy" }))); put("22 mars 1999", new HashSet<String>(Arrays.asList(new String[] // { "d MMMM yyyy", "d MMM yyyy", "dd MMMM yyyy" }))); put("1999年3月22日", new HashSet<String>(Arrays.asList(new String[] // { "yyyy'年'M'月'd'日'" }))); put("Monday, March 22, 1999", new HashSet<String>(Arrays.asList(new String[] // { "EEEE, MMMM d, yyyy" }))); put("lundi 22 mars 1999", new HashSet<String>(Arrays.asList(new String[] // { "EEEE d MMMM yyyy" }))); put("Montag, 22. März 1999", new HashSet<String>(Arrays.asList(new String[] // { "EEEE, d. MMMM yyyy" }))); put("Monday, 22 March 1999", new HashSet<String>(Arrays.asList(new String[] // { "EEEE, d MMMM yyyy" }))); put("lunedì 22 marzo 1999", new HashSet<String>(Arrays.asList(new String[] // { "EEEE d MMMM yyyy" }))); put("Monday, March 22, 1999", new HashSet<String>(Arrays.asList(new String[] // { "EEEE, MMMM d, yyyy" }))); put("lundi 22 mars 1999", new HashSet<String>(Arrays.asList(new String[] // { "EEEE d MMMM yyyy" }))); put("1999年3月22日 星期一", new HashSet<String>(Arrays.asList(new String[] // { "yyyy'年'M'月'd'日' EEEE" }))); put("3/22/99 5:06 AM", new HashSet<String>(Arrays.asList(new String[] // { "M/d/yy h:mm a" }))); put("22/03/99 05:06", new HashSet<String>(Arrays.asList(new String[] // { "d/MM/yy H:mm", "dd/MM/yy HH:mm" }))); put("22.03.99 05:06", new HashSet<String>(Arrays.asList(new String[] // { "dd.MM.yy HH:mm", "dd.MM.yy H:mm", "d.MM.yy H:mm" }))); put("22/03/99 5.06", new HashSet<String>(Arrays.asList(new String[] // { "dd/MM/yy H.mm" }))); put("22/03/99 5:06 AM", new HashSet<String>(Arrays.asList(new String[] // { "dd/MM/yy h:mm a" }))); put("99-03-22 05:06", new HashSet<String>(Arrays.asList(new String[] // { "yy-MM-dd HH:mm" }))); put("99/03/22 5:06", new HashSet<String>(Arrays.asList(new String[] // { "yy/MM/dd H:mm" }))); put("99-3-22 上午5:06", new HashSet<String>(Arrays.asList(new String[] // { "yy-M-d ah:mm" }))); put("Mar 22, 1999 5:06:07 AM", new HashSet<String>(Arrays.asList(new String[] // { "MMM d, yyyy h:mm:ss a" }))); put("22 mars 1999 05:06:07", new HashSet<String>(Arrays.asList(new String[] // { "d MMM yyyy HH:mm:ss" }))); put("22.03.1999 05:06:07", new HashSet<String>(Arrays.asList(new String[] // { "dd.MM.yyyy H:mm:ss", "dd.MM.yyyy HH:mm:ss", "d.MM.yyyy H:mm:ss" }))); put("22-Mar-1999 05:06:07", new HashSet<String>(Arrays.asList(new String[] // { "dd-MMM-yyyy HH:mm:ss" }))); put("22-mar-1999 5.06.07", new HashSet<String>(Arrays.asList(new String[] // { "d-MMM-yyyy H.mm.ss" }))); put("22-Mar-1999 5:06:07 AM", new HashSet<String>(Arrays.asList(new String[] // { "d-MMM-yyyy h:mm:ss a" }))); put("1999-03-22 05:06:07", new HashSet<String>(Arrays.asList(new String[] // { "yyyy-MM-dd H:mm:ss", "yyyy-MM-dd HH:mm:ss" }))); put("1999/03/22 5:06:07", new HashSet<String>(Arrays.asList(new String[] // { "yyyy/MM/dd H:mm:ss" }))); put("1999-3-22 5:06:07", new HashSet<String>(Arrays.asList(new String[] // { "yyyy-M-d H:mm:ss" }))); put("March 22, 1999 5:06:07 AM CET", new HashSet<String>(Arrays.asList(new String[] // { "MMMM d, yyyy h:mm:ss a z" }))); put("22 mars 1999 05:06:07 CET", new HashSet<String>(Arrays.asList(new String[] // { "dd MMMM yyyy HH:mm:ss z", "d MMMM yyyy HH:mm:ss z" }))); put("22. März 1999 05:06:07 MEZ", new HashSet<String>(Arrays.asList(new String[] // { "d. MMMM yyyy HH:mm:ss z" }))); put("22 March 1999 05:06:07 CET", new HashSet<String>(Arrays.asList(new String[] // { "dd MMMM yyyy HH:mm:ss z", "d MMMM yyyy HH:mm:ss z" }))); put("22 marzo 1999 5.06.07 CET", new HashSet<String>(Arrays.asList(new String[] // { "d MMMM yyyy H.mm.ss z" }))); put("March 22, 1999 5:06:07 CET AM", new HashSet<String>(Arrays.asList(new String[] // { "MMMM d, yyyy h:mm:ss z a" }))); put("22 mars 1999 05:06:07 CET", new HashSet<String>(Arrays.asList(new String[] // { "dd MMMM yyyy HH:mm:ss z", "d MMMM yyyy HH:mm:ss z" }))); put("1999/03/22 5:06:07 CET", new HashSet<String>(Arrays.asList(new String[] // { "yyyy/MM/dd H:mm:ss z" }))); put("1999年3月22日 上午05时06分07秒", new HashSet<String>(Arrays.asList(new String[] // { "yyyy'年'M'月'd'日' ahh'时'mm'分'ss'秒'" }))); put("Monday, March 22, 1999 5:06:07 AM CET", new HashSet<String>(Arrays.asList(new String[] // { "EEEE, MMMM d, yyyy h:mm:ss a z" }))); put("lundi 22 mars 1999 05 h 06 CET", new HashSet<String>(Arrays.asList(new String[] // { "EEEE d MMMM yyyy HH' h 'mm z", "EEEE d MMMM yyyy H' h 'mm z" }))); put("Montag, 22. März 1999 05:06 Uhr MEZ", new HashSet<String>(Arrays.asList(new String[] // { "EEEE, d. MMMM yyyy HH:mm' Uhr 'z" }))); put("Monday, 22 March 1999 05:06:07 o'clock CET", new HashSet<String>(Arrays.asList(new String[] // { "EEEE, d MMMM yyyy HH:mm:ss 'o''clock' z" }))); put("lunedì 22 marzo 1999 5.06.07 CET", new HashSet<String>(Arrays.asList(new String[] // { "EEEE d MMMM yyyy H.mm.ss z" }))); put("Monday, March 22, 1999 5:06:07 o'clock AM CET", new HashSet<String>(Arrays.asList(new String[] // { "EEEE, MMMM d, yyyy h:mm:ss 'o''clock' a z" }))); put("lundi 22 mars 1999 5 h 06 CET", new HashSet<String>(Arrays.asList(new String[] // { "EEEE d MMMM yyyy H' h 'mm z" }))); put("1999年3月22日 5時06分07秒 CET", new HashSet<String>(Arrays.asList(new String[] // { "yyyy'年'M'月'd'日' H'時'mm'分'ss'秒' z" }))); put("1999年3月22日 星期一 上午05时06分07秒 CET", new HashSet<String>(Arrays.asList(new String[] // { "yyyy'年'M'月'd'日' EEEE ahh'时'mm'分'ss'秒' z" }))); put("22/03/99 05:06:07", new HashSet<String>(Arrays.asList(new String[] // { "dd/MM/yy HH:mm:ss" }))); put("22.03.99 05:06:07", new HashSet<String>(Arrays.asList(new String[] // { "dd.MM.yy HH:mm:ss" }))); put("22.03.1999 05:06", new HashSet<String>(Arrays.asList(new String[] // { "dd.MM.yyyy HH:mm" }))); put("99/03/22 5:06:07", new HashSet<String>(Arrays.asList(new String[] // { "yy/MM/dd H:mm:ss" }))); put("1999/03/22 5:06", new HashSet<String>(Arrays.asList(new String[] // { "yyyy/MM/dd H:mm" }))); put("22/03/1999", new HashSet<String>(Arrays.asList(new String[] // { "dd/MM/yyyy" }))); put("22/03/1999 5:06 AM", new HashSet<String>(Arrays.asList(new String[] // { "dd/MM/yyyy h:mm a" }))); put("22/03/1999 5:06:07 AM", new HashSet<String>(Arrays.asList(new String[] // { "dd/MM/yyyy h:mm:ss a" }))); put("22/03/1999 05:06", new HashSet<String>(Arrays.asList(new String[] // { "dd/MM/yyyy H:mm", "dd/MM/yyyy HH:mm" }))); put("22/03/1999 05:06:07", new HashSet<String>(Arrays.asList(new String[] // { "dd/MM/yyyy HH:mm:ss", "dd/MM/yyyy H:mm:ss" }))); put("22/03/1999 5:06", new HashSet<String>(Arrays.asList(new String[] // { "dd/MM/yyyy H:mm" }))); put("22/03/1999 5:06:07", new HashSet<String>(Arrays.asList(new String[] // { "dd/MM/yyyy H:mm:ss" }))); put("22/3/1999", new HashSet<String>(Arrays.asList(new String[] // { "d/M/yyyy" }))); put("22/3/1999 5:06 AM", new HashSet<String>(Arrays.asList(new String[] // { "d/M/yyyy h:mm a" }))); put("22/3/1999 5:06:07 AM", new HashSet<String>(Arrays.asList(new String[] // { "d/M/yyyy h:mm:ss a" }))); put("22/3/1999 05:06", new HashSet<String>(Arrays.asList(new String[] // { "d/M/yyyy HH:mm", "d/M/yyyy H:mm" }))); put("22/3/1999 05:06:07", new HashSet<String>(Arrays.asList(new String[] // { "d/M/yyyy H:mm:ss", "d/M/yyyy HH:mm:ss" }))); put("22/3/1999 5:06", new HashSet<String>(Arrays.asList(new String[] // { "d/M/yyyy H:mm" }))); put("22/3/1999 5:06:07", new HashSet<String>(Arrays.asList(new String[] // { "d/M/yyyy H:mm:ss" }))); put("03/22/1999", new HashSet<String>(Arrays.asList(new String[] // { "MM/dd/yyyy" }))); put("03/22/1999 5:06 AM", new HashSet<String>(Arrays.asList(new String[] // { "MM/dd/yyyy h:mm a" }))); put("03/22/1999 5:06:07 AM", new HashSet<String>(Arrays.asList(new String[] // { "MM/dd/yyyy h:mm:ss a" }))); put("03/22/1999 05:06", new HashSet<String>(Arrays.asList(new String[] // { "MM/dd/yyyy H:mm", "MM/dd/yyyy HH:mm" }))); put("03/22/1999 05:06:07", new HashSet<String>(Arrays.asList(new String[] // { "MM/dd/yyyy HH:mm:ss", "MM/dd/yyyy H:mm:ss" }))); put("03/22/1999 5:06", new HashSet<String>(Arrays.asList(new String[] // { "MM/dd/yyyy H:mm" }))); put("03/22/1999 5:06:07", new HashSet<String>(Arrays.asList(new String[] // { "MM/dd/yyyy H:mm:ss" }))); put("3/22/1999", new HashSet<String>(Arrays.asList(new String[] // { "M/d/yyyy" }))); put("3/22/1999 5:06 AM", new HashSet<String>(Arrays.asList(new String[] // { "M/d/yyyy h:mm a" }))); put("3/22/1999 5:06:07 AM", new HashSet<String>(Arrays.asList(new String[] // { "M/d/yyyy h:mm:ss a" }))); put("3/22/1999 05:06", new HashSet<String>(Arrays.asList(new String[] // { "M/d/yyyy HH:mm", "M/d/yyyy H:mm" }))); put("3/22/1999 05:06:07", new HashSet<String>(Arrays.asList(new String[] // { "M/d/yyyy HH:mm:ss", "M/d/yyyy H:mm:ss" }))); put("3/22/1999 5:06", new HashSet<String>(Arrays.asList(new String[] // { "M/d/yyyy H:mm" }))); put("3/22/1999 5:06:07", new HashSet<String>(Arrays.asList(new String[] // { "M/d/yyyy H:mm:ss" }))); put("03-22-99", new HashSet<String>(Arrays.asList(new String[] // { "MM-dd-yy" }))); put("03-22-99 5:06 AM", new HashSet<String>(Arrays.asList(new String[] // { "MM-dd-yy h:mm a" }))); put("03-22-99 5:06:07 AM", new HashSet<String>(Arrays.asList(new String[] // { "MM-dd-yy h:mm:ss a" }))); put("03-22-99 05:06", new HashSet<String>(Arrays.asList(new String[] // { "MM-dd-yy HH:mm", "MM-dd-yy H:mm" }))); put("03-22-99 05:06:07", new HashSet<String>(Arrays.asList(new String[] // { "MM-dd-yy HH:mm:ss", "MM-dd-yy H:mm:ss" }))); put("03-22-99 5:06", new HashSet<String>(Arrays.asList(new String[] // { "MM-dd-yy H:mm" }))); put("03-22-99 5:06:07", new HashSet<String>(Arrays.asList(new String[] // { "MM-dd-yy H:mm:ss" }))); put("3-22-99", new HashSet<String>(Arrays.asList(new String[] // { "M-d-yy" }))); put("3-22-99 5:06 AM", new HashSet<String>(Arrays.asList(new String[] // { "M-d-yy h:mm a" }))); put("3-22-99 5:06:07 AM", new HashSet<String>(Arrays.asList(new String[] // { "M-d-yy h:mm:ss a" }))); put("3-22-99 05:06", new HashSet<String>(Arrays.asList(new String[] // { "M-d-yy H:mm", "M-d-yy HH:mm" }))); put("3-22-99 05:06:07", new HashSet<String>(Arrays.asList(new String[] // { "M-d-yy HH:mm:ss", "M-d-yy H:mm:ss" }))); put("3-22-99 5:06", new HashSet<String>(Arrays.asList(new String[] // { "M-d-yy H:mm" }))); put("3-22-99 5:06:07", new HashSet<String>(Arrays.asList(new String[] // { "M-d-yy H:mm:ss" }))); put("03-22-1999", new HashSet<String>(Arrays.asList(new String[] // { "MM-dd-yyyy" }))); put("03-22-1999 5:06 AM", new HashSet<String>(Arrays.asList(new String[] // { "MM-dd-yyyy h:mm a" }))); put("03-22-1999 5:06:07 AM", new HashSet<String>(Arrays.asList(new String[] // { "MM-dd-yyyy h:mm:ss a" }))); put("03-22-1999 05:06", new HashSet<String>(Arrays.asList(new String[] // { "MM-dd-yyyy H:mm", "MM-dd-yyyy HH:mm" }))); put("03-22-1999 05:06:07", new HashSet<String>(Arrays.asList(new String[] // { "MM-dd-yyyy H:mm:ss", "MM-dd-yyyy HH:mm:ss" }))); put("03-22-1999 5:06", new HashSet<String>(Arrays.asList(new String[] // { "MM-dd-yyyy H:mm" }))); put("03-22-1999 5:06:07", new HashSet<String>(Arrays.asList(new String[] // { "MM-dd-yyyy H:mm:ss" }))); put("3-22-1999", new HashSet<String>(Arrays.asList(new String[] // { "M-d-yyyy" }))); put("3-22-1999 5:06 AM", new HashSet<String>(Arrays.asList(new String[] // { "M-d-yyyy h:mm a" }))); put("3-22-1999 5:06:07 AM", new HashSet<String>(Arrays.asList(new String[] // { "M-d-yyyy h:mm:ss a" }))); put("3-22-1999 05:06", new HashSet<String>(Arrays.asList(new String[] // { "M-d-yyyy H:mm", "M-d-yyyy HH:mm" }))); put("3-22-1999 05:06:07", new HashSet<String>(Arrays.asList(new String[] // { "M-d-yyyy HH:mm:ss", "M-d-yyyy H:mm:ss" }))); put("3-22-1999 5:06", new HashSet<String>(Arrays.asList(new String[] // { "M-d-yyyy H:mm" }))); put("3-22-1999 5:06:07", new HashSet<String>(Arrays.asList(new String[] // { "M-d-yyyy H:mm:ss" }))); put("1999-03-22 5:06 AM", new HashSet<String>(Arrays.asList(new String[] // { "yyyy-MM-dd h:mm a" }))); put("1999-03-22 5:06:07 AM", new HashSet<String>(Arrays.asList(new String[] // { "yyyy-MM-dd h:mm:ss a" }))); put("1999-03-22 05:06", new HashSet<String>(Arrays.asList(new String[] // { "yyyy-MM-dd HH:mm", "yyyy-MM-dd H:mm" }))); put("1999-03-22 5:06", new HashSet<String>(Arrays.asList(new String[] // { "yyyy-MM-dd H:mm" }))); put("1999-03-22 5:06:07", new HashSet<String>(Arrays.asList(new String[] // { "yyyy-MM-dd H:mm:ss" }))); put("1999-3-22 5:06 AM", new HashSet<String>(Arrays.asList(new String[] // { "yyyy-M-d h:mm a" }))); put("1999-3-22 5:06:07 AM", new HashSet<String>(Arrays.asList(new String[] // { "yyyy-M-d h:mm:ss a" }))); put("1999-3-22 05:06", new HashSet<String>(Arrays.asList(new String[] // { "yyyy-M-d HH:mm", "yyyy-M-d H:mm" }))); put("1999-3-22 05:06:07", new HashSet<String>(Arrays.asList(new String[] // { "yyyy-M-d HH:mm:ss", "yyyy-M-d H:mm:ss" }))); put("1999-3-22 5:06", new HashSet<String>(Arrays.asList(new String[] // { "yyyy-M-d H:mm" }))); put("03/22/99", new HashSet<String>(Arrays.asList(new String[] // { "MM/dd/yy" }))); put("03/22/99 5:06 AM", new HashSet<String>(Arrays.asList(new String[] // { "MM/dd/yy h:mm a" }))); put("03/22/99 5:06:07 AM", new HashSet<String>(Arrays.asList(new String[] // { "MM/dd/yy h:mm:ss a" }))); put("03/22/99 05:06", new HashSet<String>(Arrays.asList(new String[] // { "MM/dd/yy H:mm", "MM/dd/yy HH:mm" }))); put("03/22/99 05:06:07", new HashSet<String>(Arrays.asList(new String[] // { "MM/dd/yy HH:mm:ss", "MM/dd/yy H:mm:ss" }))); put("03/22/99 5:06", new HashSet<String>(Arrays.asList(new String[] // { "MM/dd/yy H:mm" }))); put("03/22/99 5:06:07", new HashSet<String>(Arrays.asList(new String[] // { "MM/dd/yy H:mm:ss" }))); put("3/22/99 5:06:07 AM", new HashSet<String>(Arrays.asList(new String[] // { "M/d/yy h:mm:ss a" }))); put("3/22/99 05:06", new HashSet<String>(Arrays.asList(new String[] // { "M/d/yy HH:mm", "M/d/yy H:mm" }))); put("3/22/99 05:06:07", new HashSet<String>(Arrays.asList(new String[] // { "M/d/yy HH:mm:ss", "M/d/yy H:mm:ss" }))); put("3/22/99 5:06", new HashSet<String>(Arrays.asList(new String[] // { "M/d/yy H:mm" }))); put("3/22/99 5:06:07", new HashSet<String>(Arrays.asList(new String[] // { "M/d/yy H:mm:ss" }))); put("Mar 22 1999", new HashSet<String>(Arrays.asList(new String[] // { "MMM d yyyy", "MMMM d yyyy" }))); put("Mar.22.1999", new HashSet<String>(Arrays.asList(new String[] // { "MMM.dd.yyyy" }))); put("March 22 1999", new HashSet<String>(Arrays.asList(new String[] // { "MMMM d yyyy" }))); put("1999-03-22 05:06:07.0", new HashSet<String>(Arrays.asList(new String[] // { "yyyy-MM-dd HH:mm:ss.S" }))); put("22/Mar/1999 5:06:07 +0100", new HashSet<String>(Arrays.asList(new String[] // { "d/MMM/yyyy H:mm:ss Z" }))); put("22-Mar-99 05.06.07.000000888 AM", new HashSet<String>(Arrays.asList(new String[] // { "dd-MMM-yy hh.mm.ss.nnnnnnnnn a" }))); put("Mon Mar 22 05:06:07 CET 1999", new HashSet<String>(Arrays.asList(new String[] // { "EEE MMM dd HH:mm:ss z yyyy" }))); put("22/Mar/99 5:06 AM", new HashSet<String>(Arrays.asList(new String[] // { "dd/MMM/yy h:mm a" }))); put("19990322+0100", new HashSet<String>(Arrays.asList(new String[] // { "yyyyMMddZ" }))); put("19990322", new HashSet<String>(Arrays.asList(new String[] // { "yyyyMMdd" }))); put("1999-03-22+01:00", new HashSet<String>(Arrays.asList(new String[] // { "yyyy-MM-ddXXX" }))); put("1999-03-22T05:06:07.000[Europe/Paris]", new HashSet<String>(Arrays.asList(new String[] // { "yyyy-MM-dd'T'HH:mm:ss.SSS'['VV']'" }))); put("1999-03-22T05:06:07.000", new HashSet<String>(Arrays.asList(new String[] // { "yyyy-MM-dd'T'HH:mm:ss.SSS" }))); put("1999-03-22T05:06:07", new HashSet<String>(Arrays.asList(new String[] // { "yyyy-MM-dd'T'HH:mm:ss" }))); put("1999-03-22T05:06:07.000Z", new HashSet<String>(Arrays.asList(new String[] // { "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'" }))); put("1999-03-22T05:06:07.000+01:00", new HashSet<String>(Arrays.asList(new String[] // { "yyyy-MM-dd'T'HH:mm:ss.SSSXXX" }))); put("1999-03-22T05:06:07+01:00", new HashSet<String>(Arrays.asList(new String[] // { "yyyy-MM-dd'T'HH:mm:ssXXX" }))); put("1999-081+01:00", new HashSet<String>(Arrays.asList(new String[] // { "yyyy-DDDXXX" }))); put("1999-W13-4+01:00", new HashSet<String>(Arrays.asList(new String[] // { "yyyy-'W'w-WXXX" }))); put("1999-03-22T05:06:07.000+01:00[Europe/Paris]", new HashSet<String>(Arrays.asList(new String[] // { "yyyy-MM-dd'T'HH:mm:ss.SSSXXX'['VV']'" }))); put("1999-03-22T05:06:07+01:00[Europe/Paris]", new HashSet<String>(Arrays.asList(new String[] // { "yyyy-MM-dd'T'HH:mm:ssXXX'['VV']'" }))); put("Mon, 22 Mar 1999 05:06:07 +0100", new HashSet<String>(Arrays.asList(new String[] // { "EEE, d MMM yyyy HH:mm:ss Z" }))); put("22 Mar 1999 05:06:07 +0100", new HashSet<String>(Arrays.asList(new String[] // { "d MMM yyyy HH:mm:ss Z" }))); put("22.3.99", new HashSet<String>(Arrays.asList(new String[] // { "d.M.yy" }))); put("22-03-99", new HashSet<String>(Arrays.asList(new String[] // { "dd-MM-yy" }))); put("22/03/99", new HashSet<String>(Arrays.asList(new String[] // { "d/MM/yy", "dd/MM/yy" }))); put("22.03.99", new HashSet<String>(Arrays.asList(new String[] // { "dd.MM.yy", "d.MM.yy" }))); put("22.3.1999", new HashSet<String>(Arrays.asList(new String[] // { "d.M.yyyy" }))); put("1999.03.22", new HashSet<String>(Arrays.asList(new String[] // { "yyyy.MM.dd" }))); put("1999.03.22.", new HashSet<String>(Arrays.asList(new String[] // { "yyyy.MM.dd." }))); put("99. 3. 22", new HashSet<String>(Arrays.asList(new String[] // { "yy. M. d" }))); put("99.3.22", new HashSet<String>(Arrays.asList(new String[] // { "yy.M.d" }))); put("99.22.3", new HashSet<String>(Arrays.asList(new String[] // { "yy.d.M" }))); put("22-3-99", new HashSet<String>(Arrays.asList(new String[] // { "d-M-yy" }))); put("22-03-1999", new HashSet<String>(Arrays.asList(new String[] // { "dd-MM-yyyy" }))); put("22.3.99.", new HashSet<String>(Arrays.asList(new String[] // { "d.M.yy." }))); put("22.03.1999", new HashSet<String>(Arrays.asList(new String[] // { "d.MM.yyyy", "dd.MM.yyyy" }))); put("1999. 3. 22", new HashSet<String>(Arrays.asList(new String[] // { "yyyy. M. d" }))); put("1999.22.3", new HashSet<String>(Arrays.asList(new String[] // { "yyyy.d.M" }))); put("22.03.1999.", new HashSet<String>(Arrays.asList(new String[] // { "dd.MM.yyyy." }))); put("22.3.99 5.06", new HashSet<String>(Arrays.asList(new String[] // { "d.M.yy H.mm" }))); put("22.3.99 5:06", new HashSet<String>(Arrays.asList(new String[] // { "d.M.yy H:mm" }))); put("22-03-99 05:06", new HashSet<String>(Arrays.asList(new String[] // { "dd-MM-yy HH:mm" }))); put("22/03/99 5:06", new HashSet<String>(Arrays.asList(new String[] // { "d/MM/yy H:mm" }))); put("22.03.99 5:06", new HashSet<String>(Arrays.asList(new String[] // { "dd.MM.yy H:mm", "d.MM.yy H:mm" }))); put("22.3.1999 5:06", new HashSet<String>(Arrays.asList(new String[] // { "d.M.yyyy H:mm" }))); put("99/03/22 05:06", new HashSet<String>(Arrays.asList(new String[] // { "yy/MM/dd HH:mm", "yy/MM/dd H:mm" }))); put("05:06 22/03/99", new HashSet<String>(Arrays.asList(new String[] // { "HH:mm dd/MM/yy" }))); put("1999.03.22 05:06", new HashSet<String>(Arrays.asList(new String[] // { "yyyy.MM.dd HH:mm" }))); put("1999.03.22. 5:06", new HashSet<String>(Arrays.asList(new String[] // { "yyyy.MM.dd. H:mm" }))); put("22.3.1999 05:06", new HashSet<String>(Arrays.asList(new String[] // { "d.M.yyyy HH:mm", "d.M.yyyy H:mm" }))); put("99.3.22 05.06", new HashSet<String>(Arrays.asList(new String[] // { "yy.M.d HH.mm" }))); put("99.22.3 05:06", new HashSet<String>(Arrays.asList(new String[] // { "yy.d.M HH:mm" }))); put("22.3.99 05:06", new HashSet<String>(Arrays.asList(new String[] // { "d.M.yy H:mm", "d.M.yy HH:mm" }))); put("22-3-99 5:06", new HashSet<String>(Arrays.asList(new String[] // { "d-M-yy H:mm" }))); put("22-03-1999 5:06", new HashSet<String>(Arrays.asList(new String[] // { "dd-MM-yyyy H:mm" }))); put("22.03.99 5:06", new HashSet<String>(Arrays.asList(new String[] // { "dd.MM.yy H:mm", "d.MM.yy H:mm" }))); put("99-03-22 5.06.PD", new HashSet<String>(Arrays.asList(new String[] // { "yy-MM-dd h.mm.a" }))); put("22.3.99. 05.06", new HashSet<String>(Arrays.asList(new String[] // { "d.M.yy. HH.mm" }))); put("05:06 22/03/1999", new HashSet<String>(Arrays.asList(new String[] // { "HH:mm dd/MM/yyyy" }))); put("22.3.1999 5.06.07", new HashSet<String>(Arrays.asList(new String[] // { "d.M.yyyy H.mm.ss" }))); put("22.3.1999 5:06:07", new HashSet<String>(Arrays.asList(new String[] // { "d.M.yyyy H:mm:ss" }))); put("22-03-1999 05:06:07", new HashSet<String>(Arrays.asList(new String[] // { "dd-MM-yyyy HH:mm:ss" }))); put("22.03.1999 5:06:07", new HashSet<String>(Arrays.asList(new String[] // { "dd.MM.yyyy H:mm:ss", "d.MM.yyyy H:mm:ss" }))); put("05:06:07 22/03/1999", new HashSet<String>(Arrays.asList(new String[] // { "HH:mm:ss dd/MM/yyyy" }))); put("1999.03.22 05:06:07", new HashSet<String>(Arrays.asList(new String[] // { "yyyy.MM.dd HH:mm:ss" }))); put("1999.03.22. 5:06:07", new HashSet<String>(Arrays.asList(new String[] // { "yyyy.MM.dd. H:mm:ss" }))); put("22.3.1999 05:06:07", new HashSet<String>(Arrays.asList(new String[] // { "d.M.yyyy HH:mm:ss", "d.M.yyyy H:mm:ss" }))); put("1999-03-22 05.06.07", new HashSet<String>(Arrays.asList(new String[] // { "yyyy-MM-dd HH.mm.ss" }))); put("1999.22.3 05:06:07", new HashSet<String>(Arrays.asList(new String[] // { "yyyy.d.M HH:mm:ss" }))); put("22.3.1999 05:06:", new HashSet<String>(Arrays.asList(new String[] // { "d.M.yyyy HH:mm:" }))); put("22.03.1999 5:06:07", new HashSet<String>(Arrays.asList(new String[] // { "dd.MM.yyyy H:mm:ss", "d.MM.yyyy H:mm:ss" }))); put("1999-03-22 5:06:07.PD", new HashSet<String>(Arrays.asList(new String[] // { "yyyy-MM-dd h:mm:ss.a" }))); put("22.03.1999. 05.06.07", new HashSet<String>(Arrays.asList(new String[] // { "dd.MM.yyyy. HH.mm.ss" }))); put("05:06:07 22-03-1999", new HashSet<String>(Arrays.asList(new String[] // { "HH:mm:ss dd-MM-yyyy" }))); put("1999-03-22 5.06.07.PD CET", new HashSet<String>(Arrays.asList(new String[] // { "yyyy-MM-dd h.mm.ss.a z" }))); put("22.03.1999. 05.06.07 CET", new HashSet<String>(Arrays.asList(new String[] // { "dd.MM.yyyy. HH.mm.ss z" }))); } }; @BeforeClass public static void loadTestData() throws IOException { InputStream dateInputStream = SystemDateTimePatternManager.class.getResourceAsStream("DateSampleTable.txt"); DATE_SAMPLES = IOUtils.readLines(dateInputStream, "UTF-8"); InputStream timeInputStream = SystemDateTimePatternManager.class.getResourceAsStream("TimeSampleTable.txt"); TIME_SAMPLES = IOUtils.readLines(timeInputStream, "UTF-8"); } @Test public void testDatesWithMultipleFormats() throws IOException { for (String sample : EXPECTED_FORMATS.keySet()) { Set<String> patternSet = SystemDateTimePatternManager.datePatternReplace(sample); assertEquals("Unexpected Format Set on sample <" + sample + ">", EXPECTED_FORMATS.get(sample), patternSet); } } @Test @Ignore public void prepareDatesWithMultipleFormats() throws IOException { Set<String> datesWithMultipleFormats = new HashSet<String>(); StringBuilder sb = new StringBuilder(); for (int i = 1; i < DATE_SAMPLES.size(); i++) { String line = DATE_SAMPLES.get(i); if (!"".equals(line.trim())) { String[] sampleLine = line.trim().split("\t"); String sample = sampleLine[0]; Set<String> patternSet = SystemDateTimePatternManager.datePatternReplace(sample); if (patternSet.size() > 0) { sb.append("put(\"").append(sample).append("\", new HashSet<String>(Arrays.asList(new String[] //\n\t{ "); datesWithMultipleFormats.add(sample); for (String p : patternSet) { sb.append("\"").append(p).append("\","); } sb.deleteCharAt(sb.length() - 1); sb.append(" })));\n"); } } } System.out.println(sb.toString()); } @Test public void testAllSupportedDatesWithRegexes() throws IOException { for (int i = 1; i < DATE_SAMPLES.size(); i++) { String line = DATE_SAMPLES.get(i); if (!"".equals(line.trim())) { String[] sampleLine = line.trim().split("\t"); String sample = sampleLine[0]; // String expectedPattern = sampleLine[1]; // String locale = sampleLine[2]; // System.out.println(SystemDateTimePatternManager.isDate(sample) + "\t" + locale + "\t" + sample + "\t" // + expectedPattern); // System.out.println(SystemDateTimePatternManager.datePatternReplace(sample)); assertTrue(sample + " is expected to be a valid date but actually not.", SystemDateTimePatternManager.isDate(sample)); } } } @Test public void testAllSupportedTimesWithRegexes() throws IOException { for (int i = 1; i < TIME_SAMPLES.size(); i++) { String line = TIME_SAMPLES.get(i); if (!"".equals(line.trim())) { String[] sampleLine = line.trim().split("\t"); String sample = sampleLine[0]; // String expectedPattern = sampleLine[1]; // String locale = sampleLine[2]; // System.out.println(SystemDateTimePatternManager.isTime(sample) + "\t" + locale + "\t" + sample + "\t" // + expectedPattern); assertTrue(sample + " is expected to be a valid time but actually not.", SystemDateTimePatternManager.isTime(sample)); } } } }