/* * Copyright (C) 2011-2012 Intel Corporation * All rights reserved. */ package com.intel.mtwilson.util; import com.intel.dcsg.cpg.iso8601.Iso8601Date; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * * @author jbuhacoff */ public class Iso8601DateTest { private static final Logger log = LoggerFactory.getLogger(Iso8601DateTest.class); private static final String rYear = "(?:[0-9]{4})"; private static final String rMonth = "(?:0[1-9]|1[0-2])"; private static final String rDay = "(?:0[1-9]|[1-2][0-9]|3[0-1])"; private static final String rHour = "(?:[0-1][0-9]|2[0-3])"; private static final String rMinute = "(?:[0-5][0-9])"; private static final String rSecond = "(?:[0-5][0-9]|60)"; // the 60 is for leap second private static final String rFraction = "(?:\\056[0-9]+)"; // octal 46 is hex 0x2e for period "." (ascii 46) private static final String rTimezoneWithZ = "[Zz]"; private static final String rTimezoneWithColon = rHour+":"+rMinute; private static final String rTimezoneWithoutColon = rHour+rMinute; private static final String rTimezone = "(?:"+rTimezoneWithZ+"|[+-]"+rTimezoneWithColon+"|[+-]"+rTimezoneWithoutColon+")"; private static final String rTime = "(?:"+rHour+":"+rMinute+":"+rSecond+rFraction+"|"+rHour+":"+rMinute+":"+rSecond+"|"+rHour+":"+rMinute+")"; private static final String rCompleteTime = "(?:"+rTime+rTimezone+"?)"; private static final String rDate = rYear+"-"+rMonth+"-"+rDay; private static final String rDatetime = rDate+"[Tt]"+rCompleteTime; private static final Pattern pDatetime = Pattern.compile(rDatetime); private static final Pattern pTimezone = Pattern.compile(rTimezone+"$"); // anchor to end of line private void parse(String text) { log.debug("Trying to parse: "+text); Iso8601Date date = Iso8601Date.valueOf(text); log.debug("Parse result: "+date.toString()); } @Test public void testParseDate() { parse("1999-12-31T23:59"); parse("1999-12-31T23:59:00"); parse("1999-12-31T23:59:00.000"); parse("1999-12-31T23:59:00Z"); parse("1999-12-31T23:59:00.000Z"); parse("1999-12-31T23:59:00-0000"); parse("1999-12-31T23:59:00.000-0000"); parse("1999-12-31T23:59:00-0800"); parse("1999-12-31T23:59:00.000-0800"); } }