View Javadoc
1   /*
2    * ====================================================================
3    * Licensed to the Apache Software Foundation (ASF) under one
4    * or more contributor license agreements.  See the NOTICE file
5    * distributed with this work for additional information
6    * regarding copyright ownership.  The ASF licenses this file
7    * to you under the Apache License, Version 2.0 (the
8    * "License"); you may not use this file except in compliance
9    * with the License.  You may obtain a copy of the License at
10   *
11   *   http://www.apache.org/licenses/LICENSE-2.0
12   *
13   * Unless required by applicable law or agreed to in writing,
14   * software distributed under the License is distributed on an
15   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16   * KIND, either express or implied.  See the License for the
17   * specific language governing permissions and limitations
18   * under the License.
19   * ====================================================================
20   *
21   * This software consists of voluntary contributions made by many
22   * individuals on behalf of the Apache Software Foundation.  For more
23   * information on the Apache Software Foundation, please see
24   * <http://www.apache.org/>.
25   *
26   */
27  
28  package org.apache.hc.core5.util;
29  
30  import java.text.ParseException;
31  
32  import org.junit.Assert;
33  import org.junit.Test;
34  
35  /**
36   * Tests {@link Deadline}.
37   */
38  public class TestDeadline {
39  
40      @Test
41      public void testFormat() throws ParseException {
42          final Deadline deadline = Deadline.fromUnixMilliseconds(1000);
43          final Deadline deadline2 = Deadline.parse(deadline.toString());
44          Assert.assertEquals(1000, deadline2.getValue());
45      }
46  
47      @Test
48      public void testIsBefore() {
49          final long nowPlusOneMin = System.currentTimeMillis() + 60000;
50          final Deadline deadline = Deadline.fromUnixMilliseconds(nowPlusOneMin);
51          Assert.assertTrue(deadline.isBefore(nowPlusOneMin + 1));
52      }
53  
54      @Test
55      public void testIsExpired() {
56          Assert.assertTrue(Deadline.fromUnixMilliseconds(0).isExpired());
57          Assert.assertTrue(Deadline.fromUnixMilliseconds(1).isExpired());
58          Assert.assertFalse(Deadline.MAX_VALUE.isExpired());
59          Assert.assertTrue(Deadline.MIN_VALUE.isExpired());
60      }
61  
62      @Test
63      public void testIsMax() {
64          Assert.assertFalse(Deadline.fromUnixMilliseconds(0).isMax());
65          Assert.assertFalse(Deadline.fromUnixMilliseconds(1000).isMax());
66          Assert.assertFalse(Deadline.MIN_VALUE.isMax());
67          Assert.assertTrue(Deadline.MAX_VALUE.isMax());
68      }
69  
70      @Test
71      public void testIsMin() {
72          Assert.assertTrue(Deadline.fromUnixMilliseconds(0).isMin());
73          Assert.assertFalse(Deadline.fromUnixMilliseconds(1000).isMin());
74          Assert.assertFalse(Deadline.MAX_VALUE.isMin());
75          Assert.assertTrue(Deadline.MIN_VALUE.isMin());
76      }
77  
78      @Test
79      public void testIsNotExpired() {
80          Assert.assertFalse(Deadline.fromUnixMilliseconds(0).isNotExpired());
81          Assert.assertFalse(Deadline.fromUnixMilliseconds(1).isNotExpired());
82          Assert.assertTrue(Deadline.MAX_VALUE.isNotExpired());
83          Assert.assertFalse(Deadline.MIN_VALUE.isNotExpired());
84      }
85  
86      @Test
87      public void testMin() {
88          Assert.assertEquals(Deadline.MIN_VALUE, Deadline.MIN_VALUE.min(Deadline.MAX_VALUE));
89          Assert.assertEquals(Deadline.MIN_VALUE, Deadline.MAX_VALUE.min(Deadline.MIN_VALUE));
90          //
91          final Deadline deadline0 = Deadline.fromUnixMilliseconds(0);
92          Assert.assertEquals(Deadline.MIN_VALUE, deadline0.min(Deadline.MIN_VALUE));
93          Assert.assertEquals(deadline0, deadline0.min(Deadline.MAX_VALUE));
94          //
95          final Deadline deadline1 = Deadline.fromUnixMilliseconds(0);
96          Assert.assertEquals(Deadline.MIN_VALUE, deadline1.min(Deadline.MIN_VALUE));
97          Assert.assertEquals(deadline0, deadline1.min(Deadline.MAX_VALUE));
98      }
99  
100     @Test
101     public void testParse() throws ParseException {
102         final Deadline deadline = Deadline.parse("1969-12-31T17:00:01.000 MST");
103         Assert.assertEquals(1000, deadline.getValue());
104     }
105 
106     @Test
107     public void testRemaining() {
108         final int oneHourInMillis = 60_000 * 60;
109         final long nowPlusOneHour = System.currentTimeMillis() + oneHourInMillis;
110         final Deadline deadline = Deadline.fromUnixMilliseconds(nowPlusOneHour);
111         Assert.assertEquals(nowPlusOneHour, deadline.getValue());
112         Assert.assertTrue(deadline.remaining() > 0);
113         Assert.assertTrue(deadline.remaining() <= oneHourInMillis);
114     }
115 
116     @Test
117     public void testRemainingTimeValue() {
118         final int oneHourInMillis = 60_000 * 60;
119         final long nowPlusOneHour = System.currentTimeMillis() + oneHourInMillis;
120         final Deadline deadline = Deadline.fromUnixMilliseconds(nowPlusOneHour);
121         Assert.assertEquals(nowPlusOneHour, deadline.getValue());
122         Assert.assertTrue(deadline.remainingTimeValue().toNanoseconds() > 0);
123         Assert.assertTrue(deadline.remainingTimeValue().toMicroseconds() > 0);
124         Assert.assertTrue(deadline.remainingTimeValue().toMilliseconds() > 0);
125     }
126 
127     @Test
128     public void testValue() {
129         final long nowPlusOneMin = System.currentTimeMillis() + 60000;
130         final Deadline deadline = Deadline.fromUnixMilliseconds(nowPlusOneMin);
131         Assert.assertEquals(nowPlusOneMin, deadline.getValue());
132     }
133 }