05fd6fbf6b8956ca4eac5102a85a28d7b77c7a04
[aaf/authz.git] / misc / env / src / test / java / org / onap / aaf / misc / env / util / JU_ChronoTest.java
1 /**\r
2  * ============LICENSE_START====================================================\r
3  * org.onap.aaf\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
10  * \r
11  *      http://www.apache.org/licenses/LICENSE-2.0\r
12  * \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
19  *\r
20  */\r
21 package org.onap.aaf.misc.env.util;\r
22 \r
23 import static org.junit.Assert.assertEquals;\r
24 \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
31 \r
32 import javax.xml.datatype.XMLGregorianCalendar;\r
33 \r
34 import org.junit.Before;\r
35 import org.junit.Test;\r
36 \r
37 public class JU_ChronoTest {\r
38 \r
39         @Before\r
40         public void setUp() throws Exception {\r
41         }\r
42 \r
43         @Test\r
44         public void testFormatter8601() {\r
45                 Chrono.Formatter8601 formatter = new Chrono.Formatter8601();\r
46 \r
47                 LogRecord record = new LogRecord(Level.WARNING, "Log Record to test log formating");\r
48 \r
49                 Date date = new Date(118, 02, 02);\r
50                 long time = date.getTime();\r
51 \r
52                 record.setMillis(time);\r
53 \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
57         }\r
58 \r
59         @Test\r
60         public void testTimeStampWithDate() {\r
61                 Date date = Calendar.getInstance().getTime();\r
62                 XMLGregorianCalendar timeStamp = Chrono.timeStamp(date);\r
63 \r
64                 GregorianCalendar gc = new GregorianCalendar();\r
65                 gc.setTime(date);\r
66                 XMLGregorianCalendar expectedCalendar = Chrono.xmlDatatypeFactory.newXMLGregorianCalendar(gc);\r
67 \r
68                 assertEquals(expectedCalendar, timeStamp);\r
69         }\r
70 \r
71         @Test\r
72         public void testUTCStamp() {\r
73                 final Date date = Calendar.getInstance().getTime();\r
74                 String expectedUTCTime = Chrono.utcFmt.format(date);\r
75 \r
76                 String stamp = Chrono.utcStamp(date);\r
77 \r
78                 assertEquals(stamp, expectedUTCTime);\r
79 \r
80                 Date date1 = null;\r
81                 assertEquals("", Chrono.utcStamp(date1));\r
82 \r
83                 GregorianCalendar gc = null;\r
84                 assertEquals(Chrono.utcStamp(gc), "");\r
85                 gc = new GregorianCalendar();\r
86                 gc.setTime(date);\r
87                 assertEquals(Chrono.utcStamp(gc), expectedUTCTime);\r
88 \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
93 \r
94         }\r
95 \r
96         @Test\r
97         public void testDateStamp() {\r
98                 final Date date = Calendar.getInstance().getTime();\r
99                 String expectedUTCTime = Chrono.dateFmt.format(date);\r
100 \r
101                 String stamp = Chrono.dateStamp(date);\r
102 \r
103                 assertEquals(stamp, expectedUTCTime);\r
104 \r
105                 Date date1 = null;\r
106                 assertEquals("", Chrono.dateStamp(date1));\r
107 \r
108                 GregorianCalendar gc = null;\r
109                 assertEquals(Chrono.dateStamp(gc), "");\r
110                 gc = new GregorianCalendar();\r
111                 gc.setTime(date);\r
112                 assertEquals(Chrono.dateStamp(gc), expectedUTCTime);\r
113 \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
118         }\r
119 \r
120         @Test\r
121         public void testDateTime() {\r
122                 final Date date = Calendar.getInstance().getTime();\r
123                 date.setTime(1525023883297L);\r
124 \r
125                 GregorianCalendar gc = null;\r
126                 assertEquals(Chrono.dateTime(gc), "");\r
127                 gc = new GregorianCalendar();\r
128                 gc.setTime(date);\r
129 \r
130                 // String expectedDateTime = "2018-04-29T11:14:43.297" + sign + hourOffSet + ":"\r
131                 // + minOffSet;\r
132 \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
142                                                                                                                         // place)\r
143                 );\r
144 \r
145                 String stamp = Chrono.dateTime(date);\r
146 \r
147                 assertEquals(stamp, expectedDateTime);\r
148 \r
149                 assertEquals(Chrono.dateTime(gc), expectedDateTime);\r
150 \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
155         }\r
156 \r
157         @Test\r
158         public void testDateOnlyStamp() {\r
159                 final Date date = Calendar.getInstance().getTime();\r
160                 date.setTime(1525023883297L);\r
161 \r
162                 String expectedDateTime = Chrono.dateOnlyFmt.format(date);\r
163 \r
164                 String stamp = Chrono.dateOnlyStamp(date);\r
165 \r
166                 assertEquals(stamp, expectedDateTime);\r
167 \r
168                 Date date1 = null;\r
169                 assertEquals("", Chrono.dateOnlyStamp(date1));\r
170 \r
171                 GregorianCalendar gc = null;\r
172                 assertEquals(Chrono.dateOnlyStamp(gc), "");\r
173                 gc = new GregorianCalendar();\r
174                 gc.setTime(date);\r
175                 assertEquals(Chrono.dateOnlyStamp(gc), expectedDateTime);\r
176 \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
181         }\r
182 \r
183         @Test\r
184         public void testNiceDateStamp() {\r
185                 final Date date = Calendar.getInstance().getTime();\r
186                 date.setTime(1525023883297L);\r
187 \r
188                 String expectedDateTime = Chrono.niceDateFmt.format(date);\r
189 \r
190                 String stamp = Chrono.niceDateStamp(date);\r
191 \r
192                 assertEquals(stamp, expectedDateTime);\r
193 \r
194                 Date date1 = null;\r
195                 assertEquals("", Chrono.niceDateStamp(date1));\r
196 \r
197                 GregorianCalendar gc = null;\r
198                 assertEquals(Chrono.niceDateStamp(gc), "");\r
199                 gc = new GregorianCalendar();\r
200                 gc.setTime(date);\r
201                 assertEquals(Chrono.niceDateStamp(gc), expectedDateTime);\r
202 \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
207         }\r
208 \r
209         @Test\r
210         public void testMoment() {\r
211                 final Date date = Calendar.getInstance().getTime();\r
212                 date.setTime(1525023883297L);\r
213 \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
221 \r
222                 long firstMoment = begin.getTimeInMillis();\r
223 \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
229 \r
230                 long lastMoment = begin.getTimeInMillis();\r
231 \r
232                 assertEquals(firstMoment, Chrono.firstMomentOfDay(date.getTime()));\r
233                 assertEquals(lastMoment, Chrono.lastMomentOfDay(date.getTime()));\r
234 \r
235                 float timeInMillis = (lastMoment - firstMoment) / 1000000f;\r
236                 assertEquals(timeInMillis, Chrono.millisFromNanos(firstMoment, lastMoment), 0);\r
237 \r
238         }\r
239 }\r