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 package org.eluder.coveralls.maven.plugin.util;
26
27 import java.time.ZoneOffset;
28 import java.time.format.DateTimeFormatter;
29
30 import org.eluder.coveralls.maven.plugin.ProcessingException;
31 import org.junit.jupiter.api.Assertions;
32 import org.junit.jupiter.api.Test;
33
34
35
36
37 class TimestampParserTest {
38
39
40
41
42 @Test
43 void invalidFormat() {
44 Assertions.assertThrows(IllegalArgumentException.class, () -> new TimestampParser("scsscdfsd"));
45 }
46
47
48
49
50
51
52
53 @Test
54 void parseEpochMillis() throws ProcessingException {
55 final var format = TimestampParser.EPOCH_MILLIS;
56 final var time = System.currentTimeMillis();
57 final var parsed = new TimestampParser(format).parse(String.valueOf(time));
58
59 Assertions.assertEquals(time, parsed.toEpochMilli());
60 }
61
62
63
64
65
66
67
68 @Test
69 void parseSimpleFormat() throws ProcessingException {
70 final var format = "yyyy-MM-dd";
71 final var parsed = new TimestampParser(format).parse("2015-08-20");
72 final var formatted = DateTimeFormatter.ofPattern(format).withZone(ZoneOffset.UTC).format(parsed);
73
74 Assertions.assertEquals("2015-08-20", formatted);
75 }
76
77
78
79
80
81
82
83 @Test
84 void parseDefaultFormat() throws ProcessingException {
85 final var format = TimestampParser.DEFAULT_FORMAT;
86 final var parsed = new TimestampParser(null).parse("2015-08-20T20:10:00Z");
87 final var formatted = DateTimeFormatter.ofPattern(format).withZone(ZoneOffset.UTC).format(parsed);
88
89 Assertions.assertEquals("2015-08-20T20:10:00Z", formatted);
90 }
91
92
93
94
95
96
97
98 @Test
99 void parseNull() throws ProcessingException {
100 final var parsed = new TimestampParser(null).parse(null);
101
102 Assertions.assertNull(parsed);
103 }
104
105
106
107
108 @Test
109 void parseInvalidTimestamp() {
110 Assertions.assertThrows(ProcessingException.class, () -> new TimestampParser(null).parse("2015-08-20"));
111 }
112
113
114
115
116
117
118
119 @Test
120 void parseBlankString() throws ProcessingException {
121 final var parsed = new TimestampParser(null).parse(" ");
122
123 Assertions.assertNull(parsed);
124 }
125
126
127
128
129
130
131
132 @Test
133 void parseLocalDateTimeFormat() throws ProcessingException {
134 final var format = "yyyy-MM-dd HH:mm:ss";
135 final var parsed = new TimestampParser(format).parse("2015-08-20 20:10:00");
136
137 Assertions.assertNotNull(parsed);
138 Assertions.assertEquals(2015, parsed.atZone(java.time.ZoneOffset.UTC).getYear());
139 Assertions.assertEquals(8, parsed.atZone(java.time.ZoneOffset.UTC).getMonthValue());
140 Assertions.assertEquals(20, parsed.atZone(java.time.ZoneOffset.UTC).getDayOfMonth());
141 }
142
143
144
145
146
147
148
149 @Test
150 void parseTimezoneNameFormat() throws ProcessingException {
151 final var format = "yyyy-MM-dd'T'HH:mm:ss z";
152 final var parsed = new TimestampParser(format).parse("2015-08-20T20:10:00 UTC");
153
154 Assertions.assertNotNull(parsed);
155 Assertions.assertEquals(2015, parsed.atZone(ZoneOffset.UTC).getYear());
156 Assertions.assertEquals(20, parsed.atZone(ZoneOffset.UTC).getDayOfMonth());
157 }
158
159
160
161
162
163
164
165 @Test
166 void parseBasicOffsetFormat() throws ProcessingException {
167 final var format = "yyyy-MM-dd'T'HH:mm:ssZ";
168 final var parsed = new TimestampParser(format).parse("2015-08-20T20:10:00+0000");
169
170 Assertions.assertNotNull(parsed);
171 Assertions.assertEquals(2015, parsed.atZone(ZoneOffset.UTC).getYear());
172 Assertions.assertEquals(20, parsed.atZone(ZoneOffset.UTC).getHour());
173 }
174
175 }