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
22 package org.onap.aaf.misc.env.util;
\r
24 import static org.junit.Assert.assertEquals;
\r
26 import java.util.Calendar;
\r
27 import java.util.Date;
\r
28 import java.util.GregorianCalendar;
\r
29 import java.util.TimeZone;
\r
30 import java.util.logging.Level;
\r
31 import java.util.logging.LogRecord;
\r
33 import javax.xml.datatype.XMLGregorianCalendar;
\r
35 import org.junit.Before;
\r
36 import org.junit.Test;
\r
38 public class JU_ChronoTest {
\r
41 public void setUp() throws Exception {
\r
45 public void testFormatter8601() {
\r
46 Chrono.Formatter8601 formatter = new Chrono.Formatter8601();
\r
48 LogRecord record = new LogRecord(Level.WARNING, "Log Record to test log formating");
\r
50 Date date = new Date(118, 02, 02);
\r
51 long time = date.getTime();
\r
53 record.setMillis(time);
\r
55 String expectedString = Chrono.dateFmt.format(date) + " " + record.getThreadID() + " " + record.getLevel()
\r
56 + ": " + record.getMessage() + "\n";
\r
57 assertEquals(expectedString, formatter.format(record));
\r
61 public void testTimeStampWithDate() {
\r
62 Date date = Calendar.getInstance().getTime();
\r
63 XMLGregorianCalendar timeStamp = Chrono.timeStamp(date);
\r
65 GregorianCalendar gc = new GregorianCalendar();
\r
67 XMLGregorianCalendar expectedCalendar = Chrono.xmlDatatypeFactory.newXMLGregorianCalendar(gc);
\r
69 assertEquals(expectedCalendar, timeStamp);
\r
73 public void testUTCStamp() {
\r
74 final Date date = Calendar.getInstance().getTime();
\r
75 String expectedUTCTime = Chrono.utcFmt.format(date);
\r
77 String stamp = Chrono.utcStamp(date);
\r
79 assertEquals(stamp, expectedUTCTime);
\r
82 assertEquals("", Chrono.utcStamp(date1));
\r
84 GregorianCalendar gc = null;
\r
85 assertEquals(Chrono.utcStamp(gc), "");
\r
86 gc = new GregorianCalendar();
\r
88 assertEquals(Chrono.utcStamp(gc), expectedUTCTime);
\r
90 XMLGregorianCalendar xgc = null;
\r
91 assertEquals(Chrono.utcStamp(xgc), "");
\r
92 xgc = Chrono.timeStamp(gc);
\r
93 assertEquals(Chrono.utcStamp(xgc), expectedUTCTime);
\r
98 public void testDateStamp() {
\r
99 final Date date = Calendar.getInstance().getTime();
\r
100 String expectedUTCTime = Chrono.dateFmt.format(date);
\r
102 String stamp = Chrono.dateStamp(date);
\r
104 assertEquals(stamp, expectedUTCTime);
\r
107 assertEquals("", Chrono.dateStamp(date1));
\r
109 GregorianCalendar gc = null;
\r
110 assertEquals(Chrono.dateStamp(gc), "");
\r
111 gc = new GregorianCalendar();
\r
113 assertEquals(Chrono.dateStamp(gc), expectedUTCTime);
\r
115 XMLGregorianCalendar xgc = null;
\r
116 assertEquals(Chrono.dateStamp(xgc), "");
\r
117 xgc = Chrono.timeStamp(gc);
\r
118 assertEquals(Chrono.dateStamp(xgc), expectedUTCTime);
\r
122 public void testDateTime() {
\r
123 final Date date = Calendar.getInstance().getTime();
\r
124 date.setTime(1525023883297L);
\r
126 GregorianCalendar gc = null;
\r
127 assertEquals(Chrono.dateTime(gc), "");
\r
128 gc = new GregorianCalendar();
\r
131 // String expectedDateTime = "2018-04-29T11:14:43.297" + sign + hourOffSet + ":"
\r
134 TimeZone tz = gc.getTimeZone();
\r
135 int tz1 = (tz.getRawOffset() + tz.getDSTSavings()) / 0x8CA0;
\r
136 int tz1abs = Math.abs(tz1);
\r
137 String expectedDateTime = String.format("%04d-%02d-%02dT%02d:%02d:%02d.%03d%c%02d:%02d",
\r
138 gc.get(GregorianCalendar.YEAR), gc.get(GregorianCalendar.MONTH) + 1,
\r
139 gc.get(GregorianCalendar.DAY_OF_MONTH), gc.get(GregorianCalendar.HOUR),
\r
140 gc.get(GregorianCalendar.MINUTE), gc.get(GregorianCalendar.SECOND),
\r
141 gc.get(GregorianCalendar.MILLISECOND), tz1 == tz1abs ? '+' : '-', tz1abs / 100,
\r
142 ((tz1abs - (tz1abs / 100) * 100) * 6) / 10 // Get the "10s", then convert to mins (without losing int
\r
146 String stamp = Chrono.dateTime(date);
\r
148 assertEquals(stamp, expectedDateTime);
\r
150 assertEquals(Chrono.dateTime(gc), expectedDateTime);
\r
152 XMLGregorianCalendar xgc = null;
\r
153 assertEquals(Chrono.dateTime(xgc), "");
\r
154 xgc = Chrono.timeStamp(gc);
\r
155 assertEquals(Chrono.dateTime(xgc), expectedDateTime);
\r
159 public void testDateOnlyStamp() {
\r
160 final Date date = Calendar.getInstance().getTime();
\r
161 date.setTime(1525023883297L);
\r
163 String expectedDateTime = Chrono.dateOnlyFmt.format(date);
\r
165 String stamp = Chrono.dateOnlyStamp(date);
\r
167 assertEquals(stamp, expectedDateTime);
\r
170 assertEquals("", Chrono.dateOnlyStamp(date1));
\r
172 GregorianCalendar gc = null;
\r
173 assertEquals(Chrono.dateOnlyStamp(gc), "");
\r
174 gc = new GregorianCalendar();
\r
176 assertEquals(Chrono.dateOnlyStamp(gc), expectedDateTime);
\r
178 XMLGregorianCalendar xgc = null;
\r
179 assertEquals(Chrono.dateOnlyStamp(xgc), "");
\r
180 xgc = Chrono.timeStamp(gc);
\r
181 assertEquals(Chrono.dateOnlyStamp(xgc), expectedDateTime);
\r
185 public void testNiceDateStamp() {
\r
186 final Date date = Calendar.getInstance().getTime();
\r
187 date.setTime(1525023883297L);
\r
189 String expectedDateTime = Chrono.niceDateFmt.format(date);
\r
191 String stamp = Chrono.niceDateStamp(date);
\r
193 assertEquals(stamp, expectedDateTime);
\r
196 assertEquals("", Chrono.niceDateStamp(date1));
\r
198 GregorianCalendar gc = null;
\r
199 assertEquals(Chrono.niceDateStamp(gc), "");
\r
200 gc = new GregorianCalendar();
\r
202 assertEquals(Chrono.niceDateStamp(gc), expectedDateTime);
\r
204 XMLGregorianCalendar xgc = null;
\r
205 assertEquals(Chrono.niceDateStamp(xgc), "");
\r
206 xgc = Chrono.timeStamp(gc);
\r
207 assertEquals(Chrono.niceDateStamp(xgc), expectedDateTime);
\r
211 public void testMoment() {
\r
212 final Date date = Calendar.getInstance().getTime();
\r
213 date.setTime(1525023883297L);
\r
215 GregorianCalendar begin = new GregorianCalendar();
\r
216 begin.setTimeInMillis(date.getTime());
\r
217 begin.set(GregorianCalendar.HOUR, 0);
\r
218 begin.set(GregorianCalendar.AM_PM, GregorianCalendar.AM);
\r
219 begin.set(GregorianCalendar.MINUTE, 0);
\r
220 begin.set(GregorianCalendar.SECOND, 0);
\r
221 begin.set(GregorianCalendar.MILLISECOND, 0);
\r
223 long firstMoment = begin.getTimeInMillis();
\r
225 begin.set(GregorianCalendar.HOUR, 11);
\r
226 begin.set(GregorianCalendar.MINUTE, 59);
\r
227 begin.set(GregorianCalendar.SECOND, 59);
\r
228 begin.set(GregorianCalendar.MILLISECOND, 999);
\r
229 begin.set(GregorianCalendar.AM_PM, GregorianCalendar.PM);
\r
231 long lastMoment = begin.getTimeInMillis();
\r
233 assertEquals(firstMoment, Chrono.firstMomentOfDay(date.getTime()));
\r
234 assertEquals(lastMoment, Chrono.lastMomentOfDay(date.getTime()));
\r
236 float timeInMillis = (lastMoment - firstMoment) / 1000000f;
\r
237 assertEquals(timeInMillis, Chrono.millisFromNanos(firstMoment, lastMoment), 0);
\r