View Javadoc
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  		// Unsupported raw type
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  		// null string
29  		assertThrows(IllegalArgumentException.class, () -> c.fromString(null));
30  
31  		// empty string
32  		assertThrows(ProcessingException.class, () -> c.fromString(""));
33  
34  		// epoch
35  		assertEquals(Instant.EPOCH, c.fromString("0"));
36  		assertEquals(Instant.EPOCH, c.fromString("1970-01-01T00:00:00Z"));
37  
38  		// min
39  		assertEquals(Instant.MIN, c.fromString("-31557014167219200"));
40  		assertEquals(Instant.MIN, c.fromString("-1000000000-01-01T00:00:00Z"));
41  
42  		// max
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  		// null
52  		assertThrows(IllegalArgumentException.class, () -> c.toString(null));
53  
54  		// epoch
55  		assertEquals("1970-01-01T00:00:00Z", c.toString(Instant.EPOCH));
56  
57  		// min
58  		assertEquals("-1000000000-01-01T00:00:00Z", c.toString(Instant.MIN));
59  
60  		// max
61  		assertEquals("+1000000000-12-31T23:59:59.999999999Z", c.toString(Instant.MAX));
62  	}
63  
64  }