2 * ============LICENSE_START====================================================
\r
4 * ===========================================================================
\r
5 * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
\r
6 * ===========================================================================
\r
7 * Licensed under the Apache License, Version 2.0 (the "License");
\r
8 * you may not use this file except in compliance with the License.
\r
9 * You may obtain a copy of the License at
\r
11 * http://www.apache.org/licenses/LICENSE-2.0
\r
13 * Unless required by applicable law or agreed to in writing, software
\r
14 * distributed under the License is distributed on an "AS IS" BASIS,
\r
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
\r
16 * See the License for the specific language governing permissions and
\r
17 * limitations under the License.
\r
18 * ============LICENSE_END====================================================
\r
21 package org.onap.aaf.misc.env.util;
\r
23 import static org.junit.Assert.assertEquals;
\r
25 import java.util.Calendar;
\r
26 import java.util.Date;
\r
27 import java.util.GregorianCalendar;
\r
28 import java.util.TimeZone;
\r
29 import java.util.logging.Level;
\r
30 import java.util.logging.LogRecord;
\r
32 import javax.xml.datatype.XMLGregorianCalendar;
\r
34 import org.junit.Before;
\r
35 import org.junit.Test;
\r
37 public class JU_ChronoTest {
\r
40 public void setUp() throws Exception {
\r
44 public void testFormatter8601() {
\r
45 Chrono.Formatter8601 formatter = new Chrono.Formatter8601();
\r
47 LogRecord record = new LogRecord(Level.WARNING, "Log Record to test log formating");
\r
49 Date date = new Date(118, 02, 02);
\r
50 long time = date.getTime();
\r
52 record.setMillis(time);
\r
54 String expectedString = Chrono.dateFmt.format(date) + " " + record.getThreadID() + " " + record.getLevel()
\r
55 + ": " + record.getMessage() + "\n";
\r
56 assertEquals(expectedString, formatter.format(record));
\r
60 public void testTimeStampWithDate() {
\r
61 Date date = Calendar.getInstance().getTime();
\r
62 XMLGregorianCalendar timeStamp = Chrono.timeStamp(date);
\r
64 GregorianCalendar gc = new GregorianCalendar();
\r
66 XMLGregorianCalendar expectedCalendar = Chrono.xmlDatatypeFactory.newXMLGregorianCalendar(gc);
\r
68 assertEquals(expectedCalendar, timeStamp);
\r
72 public void testUTCStamp() {
\r
73 final Date date = Calendar.getInstance().getTime();
\r
74 String expectedUTCTime = Chrono.utcFmt.format(date);
\r
76 String stamp = Chrono.utcStamp(date);
\r
78 assertEquals(stamp, expectedUTCTime);
\r
81 assertEquals("", Chrono.utcStamp(date1));
\r
83 GregorianCalendar gc = null;
\r
84 assertEquals(Chrono.utcStamp(gc), "");
\r
85 gc = new GregorianCalendar();
\r
87 assertEquals(Chrono.utcStamp(gc), expectedUTCTime);
\r
89 XMLGregorianCalendar xgc = null;
\r
90 assertEquals(Chrono.utcStamp(xgc), "");
\r
91 xgc = Chrono.timeStamp(gc);
\r
92 assertEquals(Chrono.utcStamp(xgc), expectedUTCTime);
\r
97 public void testDateStamp() {
\r
98 final Date date = Calendar.getInstance().getTime();
\r
99 String expectedUTCTime = Chrono.dateFmt.format(date);
\r
101 String stamp = Chrono.dateStamp(date);
\r
103 assertEquals(stamp, expectedUTCTime);
\r
106 assertEquals("", Chrono.dateStamp(date1));
\r
108 GregorianCalendar gc = null;
\r
109 assertEquals(Chrono.dateStamp(gc), "");
\r
110 gc = new GregorianCalendar();
\r
112 assertEquals(Chrono.dateStamp(gc), expectedUTCTime);
\r
114 XMLGregorianCalendar xgc = null;
\r
115 assertEquals(Chrono.dateStamp(xgc), "");
\r
116 xgc = Chrono.timeStamp(gc);
\r
117 assertEquals(Chrono.dateStamp(xgc), expectedUTCTime);
\r
121 public void testDateTime() {
\r
122 final Date date = Calendar.getInstance().getTime();
\r
123 date.setTime(1525023883297L);
\r
125 GregorianCalendar gc = null;
\r
126 assertEquals(Chrono.dateTime(gc), "");
\r
127 gc = new GregorianCalendar();
\r
130 // String expectedDateTime = "2018-04-29T11:14:43.297" + sign + hourOffSet + ":"
\r
133 TimeZone tz = gc.getTimeZone();
\r
134 int tz1 = (tz.getRawOffset() + tz.getDSTSavings()) / 0x8CA0;
\r
135 int tz1abs = Math.abs(tz1);
\r
136 String expectedDateTime = String.format("%04d-%02d-%02dT%02d:%02d:%02d.%03d%c%02d:%02d",
\r
137 gc.get(GregorianCalendar.YEAR), gc.get(GregorianCalendar.MONTH) + 1,
\r
138 gc.get(GregorianCalendar.DAY_OF_MONTH), gc.get(GregorianCalendar.HOUR),
\r
139 gc.get(GregorianCalendar.MINUTE), gc.get(GregorianCalendar.SECOND),
\r
140 gc.get(GregorianCalendar.MILLISECOND), tz1 == tz1abs ? '+' : '-', tz1abs / 100,
\r
141 ((tz1abs - (tz1abs / 100) * 100) * 6) / 10 // Get the "10s", then convert to mins (without losing int
\r
145 String stamp = Chrono.dateTime(date);
\r
147 assertEquals(stamp, expectedDateTime);
\r
149 assertEquals(Chrono.dateTime(gc), expectedDateTime);
\r
151 XMLGregorianCalendar xgc = null;
\r
152 assertEquals(Chrono.dateTime(xgc), "");
\r
153 xgc = Chrono.timeStamp(gc);
\r
154 assertEquals(Chrono.dateTime(xgc), expectedDateTime);
\r
158 public void testDateOnlyStamp() {
\r
159 final Date date = Calendar.getInstance().getTime();
\r
160 date.setTime(1525023883297L);
\r
162 String expectedDateTime = Chrono.dateOnlyFmt.format(date);
\r
164 String stamp = Chrono.dateOnlyStamp(date);
\r
166 assertEquals(stamp, expectedDateTime);
\r
169 assertEquals("", Chrono.dateOnlyStamp(date1));
\r
171 GregorianCalendar gc = null;
\r
172 assertEquals(Chrono.dateOnlyStamp(gc), "");
\r
173 gc = new GregorianCalendar();
\r
175 assertEquals(Chrono.dateOnlyStamp(gc), expectedDateTime);
\r
177 XMLGregorianCalendar xgc = null;
\r
178 assertEquals(Chrono.dateOnlyStamp(xgc), "");
\r
179 xgc = Chrono.timeStamp(gc);
\r
180 assertEquals(Chrono.dateOnlyStamp(xgc), expectedDateTime);
\r
184 public void testNiceDateStamp() {
\r
185 final Date date = Calendar.getInstance().getTime();
\r
186 date.setTime(1525023883297L);
\r
188 String expectedDateTime = Chrono.niceDateFmt.format(date);
\r
190 String stamp = Chrono.niceDateStamp(date);
\r
192 assertEquals(stamp, expectedDateTime);
\r
195 assertEquals("", Chrono.niceDateStamp(date1));
\r
197 GregorianCalendar gc = null;
\r
198 assertEquals(Chrono.niceDateStamp(gc), "");
\r
199 gc = new GregorianCalendar();
\r
201 assertEquals(Chrono.niceDateStamp(gc), expectedDateTime);
\r
203 XMLGregorianCalendar xgc = null;
\r
204 assertEquals(Chrono.niceDateStamp(xgc), "");
\r
205 xgc = Chrono.timeStamp(gc);
\r
206 assertEquals(Chrono.niceDateStamp(xgc), expectedDateTime);
\r
210 public void testMoment() {
\r
211 final Date date = Calendar.getInstance().getTime();
\r
212 date.setTime(1525023883297L);
\r
214 GregorianCalendar begin = new GregorianCalendar();
\r
215 begin.setTimeInMillis(date.getTime());
\r
216 begin.set(GregorianCalendar.HOUR, 0);
\r
217 begin.set(GregorianCalendar.AM_PM, GregorianCalendar.AM);
\r
218 begin.set(GregorianCalendar.MINUTE, 0);
\r
219 begin.set(GregorianCalendar.SECOND, 0);
\r
220 begin.set(GregorianCalendar.MILLISECOND, 0);
\r
222 long firstMoment = begin.getTimeInMillis();
\r
224 begin.set(GregorianCalendar.HOUR, 11);
\r
225 begin.set(GregorianCalendar.MINUTE, 59);
\r
226 begin.set(GregorianCalendar.SECOND, 59);
\r
227 begin.set(GregorianCalendar.MILLISECOND, 999);
\r
228 begin.set(GregorianCalendar.AM_PM, GregorianCalendar.PM);
\r
230 long lastMoment = begin.getTimeInMillis();
\r
232 assertEquals(firstMoment, Chrono.firstMomentOfDay(date.getTime()));
\r
233 assertEquals(lastMoment, Chrono.lastMomentOfDay(date.getTime()));
\r
235 float timeInMillis = (lastMoment - firstMoment) / 1000000f;
\r
236 assertEquals(timeInMillis, Chrono.millisFromNanos(firstMoment, lastMoment), 0);
\r