blob: c2c1d19958b03e948f6f976f5eea92825d8cd0d5 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
|
package org.uic.barcode.test;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.temporal.ChronoField;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;
import org.junit.Before;
import org.junit.Test;
import org.uic.barcode.dynamicContent.fdc1.TimeStamp;
import org.uic.barcode.logger.LoggerFactory;
public class TimeStampTest {
@Before public void initialize() {
LoggerFactory.setActivateConsoleLog(true);
}
@Test public void testDateConversion() {
TimeStamp ts = new TimeStamp();
ts.setDay(10L);
ts.setTime(6000L);
Date date = ts.getTimeAsDate();
Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
cal.setTime(date);
long seconds = cal.get(Calendar.SECOND);
seconds = seconds + cal.get(Calendar.MINUTE) * 60;
seconds = seconds + cal.get(Calendar.HOUR_OF_DAY) * 60 * 60;
assert(seconds == 6000L);
}
@Test public void testDateConversion2() {
Calendar c = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
long day = (long) c.get(Calendar.DAY_OF_YEAR);
long now = c.getTimeInMillis();
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);
long passed = now - c.getTimeInMillis();
long secondOfDay = passed / 1000;
TimeStamp ts = new TimeStamp();
assert (ts.day == day);
assert (ts.secondOfDay >= secondOfDay - 1);
assert (ts.secondOfDay <= secondOfDay + 1);
}
@Test public void testDateConversion3() {
//implementation not available on older android versions:
ZonedDateTime now = ZonedDateTime.now(ZoneId.of("UTC"));
long day = Long.valueOf(now.get(ChronoField.DAY_OF_YEAR));
long secondOfDay = Long.valueOf(now.get(ChronoField.SECOND_OF_DAY));
//alternative implementation
Calendar c = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
long day2 = (long) c.get(Calendar.DAY_OF_YEAR);
long now2 = c.getTimeInMillis();
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);
long passed = now2 - c.getTimeInMillis();
long secondOfDay2 = passed / 1000;
assert (day2 == day);
assert (secondOfDay2 >= secondOfDay - 1);
assert (secondOfDay2 <= secondOfDay + 1);
}
@Test public void testSetDateTime() {
ZonedDateTime now = ZonedDateTime.now(ZoneId.of("UTC"));
Date dateNow = Date.from(now.toInstant());
TimeStamp ts = new TimeStamp();
ts.setDateTime(dateNow);
assert (ts.day.intValue() == now.get(ChronoField.DAY_OF_YEAR));
assert (ts.secondOfDay.intValue() == now.get(ChronoField.SECOND_OF_DAY));
}
@Test public void testGetTimeAsDate() {
ZonedDateTime now = ZonedDateTime.now(ZoneId.of("UTC")).withNano(0); // we ignore nano seconds
Date dateNow = Date.from(now.toInstant());
TimeStamp ts = new TimeStamp();
ts.setDateTime(dateNow);
Date resDate = ts.getTimeAsDate();
assert (resDate.getTime() == dateNow.getTime());
ZonedDateTime res = ZonedDateTime.ofInstant(resDate.toInstant(), ZoneId.of("UTC")).withNano(0);
assert (res.compareTo(now) == 0);
}
}
|