import java.util.Calendar;\r
import java.util.Date;\r
import java.util.GregorianCalendar;\r
+import java.util.TimeZone;\r
import java.util.logging.Level;\r
import java.util.logging.LogRecord;\r
\r
\r
public class JU_ChronoTest {\r
\r
- @Before\r
- public void setUp() throws Exception {\r
- }\r
+ @Before\r
+ public void setUp() throws Exception {\r
+ }\r
\r
- @Test\r
- public void testFormatter8601() {\r
- Chrono.Formatter8601 formatter = new Chrono.Formatter8601();\r
+ @Test\r
+ public void testFormatter8601() {\r
+ Chrono.Formatter8601 formatter = new Chrono.Formatter8601();\r
\r
- LogRecord record = new LogRecord(Level.WARNING, "Log Record to test log formating");\r
+ LogRecord record = new LogRecord(Level.WARNING, "Log Record to test log formating");\r
\r
- Date date = new Date(118, 02, 02);\r
- long time = date.getTime();\r
+ Date date = new Date(118, 02, 02);\r
+ long time = date.getTime();\r
\r
- record.setMillis(time);\r
+ record.setMillis(time);\r
\r
- String expectedString = Chrono.dateFmt.format(date) + " " + record.getThreadID() + " " + record.getLevel()\r
- + ": " + record.getMessage() + "\n";\r
- assertEquals(expectedString, formatter.format(record));\r
- }\r
+ String expectedString = Chrono.dateFmt.format(date) + " " + record.getThreadID() + " " + record.getLevel()\r
+ + ": " + record.getMessage() + "\n";\r
+ assertEquals(expectedString, formatter.format(record));\r
+ }\r
\r
- @Test\r
- public void testTimeStampWithDate() {\r
- Date date = Calendar.getInstance().getTime();\r
- XMLGregorianCalendar timeStamp = Chrono.timeStamp(date);\r
+ @Test\r
+ public void testTimeStampWithDate() {\r
+ Date date = Calendar.getInstance().getTime();\r
+ XMLGregorianCalendar timeStamp = Chrono.timeStamp(date);\r
\r
- GregorianCalendar gc = new GregorianCalendar();\r
- gc.setTime(date);\r
- XMLGregorianCalendar expectedCalendar = Chrono.xmlDatatypeFactory.newXMLGregorianCalendar(gc);\r
+ GregorianCalendar gc = new GregorianCalendar();\r
+ gc.setTime(date);\r
+ XMLGregorianCalendar expectedCalendar = Chrono.xmlDatatypeFactory.newXMLGregorianCalendar(gc);\r
\r
- assertEquals(expectedCalendar, timeStamp);\r
- }\r
+ assertEquals(expectedCalendar, timeStamp);\r
+ }\r
+\r
+ @Test\r
+ public void testUTCStamp() {\r
+ final Date date = Calendar.getInstance().getTime();\r
+ String expectedUTCTime = Chrono.utcFmt.format(date);\r
+\r
+ String stamp = Chrono.utcStamp(date);\r
+\r
+ assertEquals(stamp, expectedUTCTime);\r
+\r
+ Date date1 = null;\r
+ assertEquals("", Chrono.utcStamp(date1));\r
+\r
+ GregorianCalendar gc = null;\r
+ assertEquals(Chrono.utcStamp(gc), "");\r
+ gc = new GregorianCalendar();\r
+ gc.setTime(date);\r
+ assertEquals(Chrono.utcStamp(gc), expectedUTCTime);\r
+\r
+ XMLGregorianCalendar xgc = null;\r
+ assertEquals(Chrono.utcStamp(xgc), "");\r
+ xgc = Chrono.timeStamp(gc);\r
+ assertEquals(Chrono.utcStamp(xgc), expectedUTCTime);\r
+\r
+ }\r
+\r
+ @Test\r
+ public void testDateStamp() {\r
+ final Date date = Calendar.getInstance().getTime();\r
+ String expectedUTCTime = Chrono.dateFmt.format(date);\r
+\r
+ String stamp = Chrono.dateStamp(date);\r
+\r
+ assertEquals(stamp, expectedUTCTime);\r
+\r
+ Date date1 = null;\r
+ assertEquals("", Chrono.dateStamp(date1));\r
+\r
+ GregorianCalendar gc = null;\r
+ assertEquals(Chrono.dateStamp(gc), "");\r
+ gc = new GregorianCalendar();\r
+ gc.setTime(date);\r
+ assertEquals(Chrono.dateStamp(gc), expectedUTCTime);\r
+\r
+ XMLGregorianCalendar xgc = null;\r
+ assertEquals(Chrono.dateStamp(xgc), "");\r
+ xgc = Chrono.timeStamp(gc);\r
+ assertEquals(Chrono.dateStamp(xgc), expectedUTCTime);\r
+ }\r
+\r
+ @Test\r
+ public void testDateTime() {\r
+ final Date date = Calendar.getInstance().getTime();\r
+ date.setTime(1525023883297L);\r
+\r
+ GregorianCalendar gc = null;\r
+ assertEquals(Chrono.dateTime(gc), "");\r
+ gc = new GregorianCalendar();\r
+ gc.setTime(date);\r
+\r
+ // String expectedDateTime = "2018-04-29T11:14:43.297" + sign + hourOffSet + ":"\r
+ // + minOffSet;\r
+\r
+ TimeZone tz = gc.getTimeZone();\r
+ int tz1 = (tz.getRawOffset() + tz.getDSTSavings()) / 0x8CA0;\r
+ int tz1abs = Math.abs(tz1);\r
+ String expectedDateTime = String.format("%04d-%02d-%02dT%02d:%02d:%02d.%03d%c%02d:%02d",\r
+ gc.get(GregorianCalendar.YEAR), gc.get(GregorianCalendar.MONTH) + 1,\r
+ gc.get(GregorianCalendar.DAY_OF_MONTH), gc.get(GregorianCalendar.HOUR),\r
+ gc.get(GregorianCalendar.MINUTE), gc.get(GregorianCalendar.SECOND),\r
+ gc.get(GregorianCalendar.MILLISECOND), tz1 == tz1abs ? '+' : '-', tz1abs / 100,\r
+ ((tz1abs - (tz1abs / 100) * 100) * 6) / 10 // Get the "10s", then convert to mins (without losing int\r
+ // place)\r
+ );\r
+\r
+ String stamp = Chrono.dateTime(date);\r
+\r
+ assertEquals(stamp, expectedDateTime);\r
+\r
+ assertEquals(Chrono.dateTime(gc), expectedDateTime);\r
+\r
+ XMLGregorianCalendar xgc = null;\r
+ assertEquals(Chrono.dateTime(xgc), "");\r
+ xgc = Chrono.timeStamp(gc);\r
+ assertEquals(Chrono.dateTime(xgc), expectedDateTime);\r
+ }\r
+\r
+ @Test\r
+ public void testDateOnlyStamp() {\r
+ final Date date = Calendar.getInstance().getTime();\r
+ date.setTime(1525023883297L);\r
+\r
+ String expectedDateTime = Chrono.dateOnlyFmt.format(date);\r
+\r
+ String stamp = Chrono.dateOnlyStamp(date);\r
+\r
+ assertEquals(stamp, expectedDateTime);\r
+\r
+ Date date1 = null;\r
+ assertEquals("", Chrono.dateOnlyStamp(date1));\r
+\r
+ GregorianCalendar gc = null;\r
+ assertEquals(Chrono.dateOnlyStamp(gc), "");\r
+ gc = new GregorianCalendar();\r
+ gc.setTime(date);\r
+ assertEquals(Chrono.dateOnlyStamp(gc), expectedDateTime);\r
+\r
+ XMLGregorianCalendar xgc = null;\r
+ assertEquals(Chrono.dateOnlyStamp(xgc), "");\r
+ xgc = Chrono.timeStamp(gc);\r
+ assertEquals(Chrono.dateOnlyStamp(xgc), expectedDateTime);\r
+ }\r
+\r
+ @Test\r
+ public void testNiceDateStamp() {\r
+ final Date date = Calendar.getInstance().getTime();\r
+ date.setTime(1525023883297L);\r
+\r
+ String expectedDateTime = Chrono.niceDateFmt.format(date);\r
+\r
+ String stamp = Chrono.niceDateStamp(date);\r
+\r
+ assertEquals(stamp, expectedDateTime);\r
+\r
+ Date date1 = null;\r
+ assertEquals("", Chrono.niceDateStamp(date1));\r
+\r
+ GregorianCalendar gc = null;\r
+ assertEquals(Chrono.niceDateStamp(gc), "");\r
+ gc = new GregorianCalendar();\r
+ gc.setTime(date);\r
+ assertEquals(Chrono.niceDateStamp(gc), expectedDateTime);\r
+\r
+ XMLGregorianCalendar xgc = null;\r
+ assertEquals(Chrono.niceDateStamp(xgc), "");\r
+ xgc = Chrono.timeStamp(gc);\r
+ assertEquals(Chrono.niceDateStamp(xgc), expectedDateTime);\r
+ }\r
+\r
+ @Test\r
+ public void testMoment() {\r
+ final Date date = Calendar.getInstance().getTime();\r
+ date.setTime(1525023883297L);\r
+\r
+ GregorianCalendar begin = new GregorianCalendar();\r
+ begin.setTimeInMillis(date.getTime());\r
+ begin.set(GregorianCalendar.HOUR, 0);\r
+ begin.set(GregorianCalendar.AM_PM, GregorianCalendar.AM);\r
+ begin.set(GregorianCalendar.MINUTE, 0);\r
+ begin.set(GregorianCalendar.SECOND, 0);\r
+ begin.set(GregorianCalendar.MILLISECOND, 0);\r
+\r
+ long firstMoment = begin.getTimeInMillis();\r
+\r
+ begin.set(GregorianCalendar.HOUR, 11);\r
+ begin.set(GregorianCalendar.MINUTE, 59);\r
+ begin.set(GregorianCalendar.SECOND, 59);\r
+ begin.set(GregorianCalendar.MILLISECOND, 999);\r
+ begin.set(GregorianCalendar.AM_PM, GregorianCalendar.PM);\r
+\r
+ long lastMoment = begin.getTimeInMillis();\r
+\r
+ assertEquals(firstMoment, Chrono.firstMomentOfDay(date.getTime()));\r
+ assertEquals(lastMoment, Chrono.lastMomentOfDay(date.getTime()));\r
+\r
+ float timeInMillis = (lastMoment - firstMoment) / 1000000f;\r
+ assertEquals(timeInMillis, Chrono.millisFromNanos(firstMoment, lastMoment), 0);\r
+\r
+ }\r
}\r