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 package org.apache.hc.client5.http.impl.cache;
29
30 import static org.hamcrest.MatcherAssert.assertThat;
31
32 import java.time.Instant;
33 import java.time.LocalDate;
34 import java.time.Month;
35 import java.time.ZoneId;
36
37 import org.apache.hc.client5.http.utils.DateUtils;
38 import org.apache.hc.core5.http.HttpHeaders;
39 import org.apache.hc.core5.http.message.BasicHeader;
40 import org.apache.hc.core5.http.message.HeaderGroup;
41 import org.hamcrest.CoreMatchers;
42 import org.junit.jupiter.api.Test;
43
44
45
46
47 public class TestDateSupport {
48
49 private static Instant createInstant(final int year, final Month month, final int day) {
50 return LocalDate.of(year, month, day).atStartOfDay(ZoneId.of("GMT")).toInstant();
51 }
52
53 @Test
54 public void testIsBefore() throws Exception {
55 final HeaderGroup message1 = new HeaderGroup();
56 final HeaderGroup message2 = new HeaderGroup();
57 assertThat(DateSupport.isBefore(null, null, HttpHeaders.DATE), CoreMatchers.equalTo(false));
58 assertThat(DateSupport.isBefore(message1, message2, HttpHeaders.DATE), CoreMatchers.equalTo(false));
59
60 message1.setHeader(new BasicHeader(HttpHeaders.DATE, "huh?"));
61 message2.setHeader(new BasicHeader(HttpHeaders.DATE, "eh?"));
62 assertThat(DateSupport.isBefore(message1, message2, HttpHeaders.DATE), CoreMatchers.equalTo(false));
63
64 message1.setHeader(new BasicHeader(HttpHeaders.DATE, "huh?"));
65 message2.setHeader(new BasicHeader(HttpHeaders.DATE, DateUtils.formatStandardDate(createInstant(2017, Month.DECEMBER, 26))));
66 assertThat(DateSupport.isBefore(message1, message2, HttpHeaders.DATE), CoreMatchers.equalTo(false));
67
68 message1.setHeader(new BasicHeader(HttpHeaders.DATE, DateUtils.formatStandardDate(createInstant(2017, Month.DECEMBER, 25))));
69 message2.setHeader(new BasicHeader(HttpHeaders.DATE, DateUtils.formatStandardDate(createInstant(2017, Month.DECEMBER, 26))));
70 assertThat(DateSupport.isBefore(message1, message2, HttpHeaders.DATE), CoreMatchers.equalTo(true));
71
72 message1.setHeader(new BasicHeader(HttpHeaders.DATE, DateUtils.formatStandardDate(createInstant(2017, Month.DECEMBER, 27))));
73 message2.setHeader(new BasicHeader(HttpHeaders.DATE, DateUtils.formatStandardDate(createInstant(2017, Month.DECEMBER, 26))));
74 assertThat(DateSupport.isBefore(message1, message2, HttpHeaders.DATE), CoreMatchers.equalTo(false));
75 }
76
77 @Test
78 public void testIsAfter() throws Exception {
79 final HeaderGroup message1 = new HeaderGroup();
80 final HeaderGroup message2 = new HeaderGroup();
81 assertThat(DateSupport.isAfter(null, null, HttpHeaders.DATE), CoreMatchers.equalTo(false));
82 assertThat(DateSupport.isAfter(message1, message2, HttpHeaders.DATE), CoreMatchers.equalTo(false));
83
84 message1.setHeader(new BasicHeader(HttpHeaders.DATE, "huh?"));
85 message2.setHeader(new BasicHeader(HttpHeaders.DATE, "eh?"));
86 assertThat(DateSupport.isAfter(message1, message2, HttpHeaders.DATE), CoreMatchers.equalTo(false));
87
88 message1.setHeader(new BasicHeader(HttpHeaders.DATE, "huh?"));
89 message2.setHeader(new BasicHeader(HttpHeaders.DATE, DateUtils.formatStandardDate(createInstant(2017, Month.DECEMBER, 26))));
90 assertThat(DateSupport.isAfter(message1, message2, HttpHeaders.DATE), CoreMatchers.equalTo(false));
91
92 message1.setHeader(new BasicHeader(HttpHeaders.DATE, DateUtils.formatStandardDate(createInstant(2017, Month.DECEMBER, 27))));
93 message2.setHeader(new BasicHeader(HttpHeaders.DATE, DateUtils.formatStandardDate(createInstant(2017, Month.DECEMBER, 26))));
94 assertThat(DateSupport.isAfter(message1, message2, HttpHeaders.DATE), CoreMatchers.equalTo(true));
95
96 message1.setHeader(new BasicHeader(HttpHeaders.DATE, DateUtils.formatStandardDate(createInstant(2017, Month.DECEMBER, 25))));
97 message2.setHeader(new BasicHeader(HttpHeaders.DATE, DateUtils.formatStandardDate(createInstant(2017, Month.DECEMBER, 26))));
98 assertThat(DateSupport.isAfter(message1, message2, HttpHeaders.DATE), CoreMatchers.equalTo(false));
99 }
100
101 }