1 package org.oxerr.commons.ws.rs.provider;
2
3 import static org.junit.jupiter.api.Assertions.assertEquals;
4 import static org.junit.jupiter.api.Assertions.assertNull;
5 import static org.junit.jupiter.api.Assertions.assertThrows;
6
7 import java.time.Instant;
8
9 import javax.ws.rs.ProcessingException;
10 import javax.ws.rs.ext.ParamConverter;
11
12 import org.junit.jupiter.api.Test;
13
14 class InstantProviderTest {
15
16 private final InstantProvider instantProvider = new InstantProvider();
17
18 @Test
19 void testUnsupportedRawType() {
20
21 assertNull(this.instantProvider.getConverter(String.class, null, null));
22 }
23
24 @Test
25 void testFromString() {
26 ParamConverter<Instant> c = this.instantProvider.getConverter(Instant.class, getClass(), null);
27
28
29 assertThrows(IllegalArgumentException.class, () -> c.fromString(null));
30
31
32 assertThrows(ProcessingException.class, () -> c.fromString(""));
33
34
35 assertEquals(Instant.EPOCH, c.fromString("0"));
36 assertEquals(Instant.EPOCH, c.fromString("1970-01-01T00:00:00Z"));
37
38
39 assertEquals(Instant.MIN, c.fromString("-31557014167219200"));
40 assertEquals(Instant.MIN, c.fromString("-1000000000-01-01T00:00:00Z"));
41
42
43 assertEquals(Instant.MAX, c.fromString("31556889864403199.999999999"));
44 assertEquals(Instant.MAX, c.fromString("+1000000000-12-31T23:59:59.999999999Z"));
45 }
46
47 @Test
48 void testToString() {
49 ParamConverter<Instant> c = this.instantProvider.getConverter(Instant.class, getClass(), null);
50
51
52 assertThrows(IllegalArgumentException.class, () -> c.toString(null));
53
54
55 assertEquals("1970-01-01T00:00:00Z", c.toString(Instant.EPOCH));
56
57
58 assertEquals("-1000000000-01-01T00:00:00Z", c.toString(Instant.MIN));
59
60
61 assertEquals("+1000000000-12-31T23:59:59.999999999Z", c.toString(Instant.MAX));
62 }
63
64 }