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.core5.util;
29
30 import java.text.ParseException;
31 import java.time.Duration;
32 import java.util.concurrent.TimeUnit;
33
34 import org.junit.jupiter.api.Assertions;
35 import org.junit.jupiter.api.Test;
36
37 public class TestTimeout {
38
39 private void checkToDays(final long value, final TimeUnit timeUnit) {
40 Assertions.assertEquals(timeUnit.toDays(value), Timeout.of(value, timeUnit).toDays());
41 }
42
43 private void checkToHours(final long value, final TimeUnit timeUnit) {
44 Assertions.assertEquals(timeUnit.toHours(value), Timeout.of(value, timeUnit).toHours());
45 }
46
47 private void checkToMicroseconds(final long value, final TimeUnit timeUnit) {
48 Assertions.assertEquals(timeUnit.toMicros(value), Timeout.of(value, timeUnit).toMicroseconds());
49 }
50
51 private void checkToMilliseconds(final long value, final TimeUnit timeUnit) {
52 Assertions.assertEquals(timeUnit.toMillis(value), Timeout.of(value, timeUnit).toMilliseconds());
53 }
54
55 private void checkToMinutes(final long value, final TimeUnit timeUnit) {
56 Assertions.assertEquals(timeUnit.toMinutes(value), Timeout.of(value, timeUnit).toMinutes());
57 }
58
59 private void checkToNanoseconds(final long value, final TimeUnit timeUnit) {
60 Assertions.assertEquals(timeUnit.toNanos(value), Timeout.of(value, timeUnit).toNanoseconds());
61 }
62
63 private void checkToSeconds(final long value, final TimeUnit timeUnit) {
64 Assertions.assertEquals(timeUnit.toSeconds(value), Timeout.of(value, timeUnit).toSeconds());
65 }
66
67 private void test(final long value) {
68 for (final TimeUnit timeUnit : TimeUnit.values()) {
69 checkToDays(value, timeUnit);
70 checkToHours(value, timeUnit);
71 checkToMinutes(value, timeUnit);
72 checkToSeconds(value, timeUnit);
73 checkToMilliseconds(value, timeUnit);
74 checkToMicroseconds(value, timeUnit);
75 checkToNanoseconds(value, timeUnit);
76 }
77 }
78
79 @Test
80 public void test0() {
81 test(0);
82 }
83
84 @Test
85 public void test1() {
86 test(1);
87 }
88
89 @Test
90 public void testDisabled() {
91 Assertions.assertTrue(Timeout.DISABLED.isDisabled());
92 Assertions.assertFalse(Timeout.DISABLED.isEnabled());
93 }
94
95 private void testFactory(final TimeUnit timeUnit) {
96 Assertions.assertEquals(timeUnit, Timeout.of(1, timeUnit).getTimeUnit());
97 }
98
99 @Test
100 public void testFactoryForDays() {
101 testFactory(TimeUnit.DAYS);
102 }
103
104 @Test
105 public void testFactoryForDuration() {
106 assertConvertion(Duration.ZERO);
107 assertConvertion(Duration.ofDays(1));
108 assertConvertion(Duration.ofHours(1));
109 assertConvertion(Duration.ofMillis(1));
110 assertConvertion(Duration.ofNanos(1));
111 assertConvertion(Duration.ofSeconds(1));
112 assertConvertion(Duration.ofSeconds(1, 1));
113 }
114
115 private void assertConvertion(final Duration duration) {
116 Assertions.assertEquals(duration, Timeout.of(duration).toDuration());
117 }
118
119 @Test
120 public void testFactoryForHours() {
121 testFactory(TimeUnit.HOURS);
122 }
123
124 @Test
125 public void testFactoryForMicroseconds() {
126 testFactory(TimeUnit.MICROSECONDS);
127 }
128
129 @Test
130 public void testFactoryForMillisseconds() {
131 testFactory(TimeUnit.MILLISECONDS);
132 }
133
134 @Test
135 public void testFactoryForMinutes() {
136 testFactory(TimeUnit.MINUTES);
137 }
138
139 @Test
140 public void testFactoryForNanoseconds() {
141 testFactory(TimeUnit.NANOSECONDS);
142 }
143
144 @Test
145 public void testFactoryForSeconds() {
146 testFactory(TimeUnit.SECONDS);
147 }
148
149 @Test
150 public void testMaxInt() {
151 test(Integer.MAX_VALUE);
152 }
153
154 @Test
155 public void testMaxLong() {
156 test(Long.MAX_VALUE);
157 }
158
159 @Test
160 public void testNegative1() {
161 Assertions.assertThrows(IllegalArgumentException.class, () ->
162 test(-1));
163 }
164
165 @Test
166 public void testToString() {
167 Assertions.assertEquals("9223372036854775807 SECONDS", Timeout.ofSeconds(Long.MAX_VALUE).toString());
168 Assertions.assertEquals("0 MILLISECONDS", Timeout.ZERO_MILLISECONDS.toString());
169 }
170
171 @Test
172 public void testFromString() throws ParseException {
173 Assertions.assertEquals(Timeout.ofSeconds(Long.MAX_VALUE), Timeout.parse("9223372036854775807 SECONDS"));
174 Assertions.assertEquals(Timeout.ofSeconds(Long.MAX_VALUE), Timeout.parse("9223372036854775807 Seconds"));
175 Assertions.assertEquals(Timeout.ofSeconds(Long.MAX_VALUE), Timeout.parse("9223372036854775807 Seconds"));
176 Assertions.assertEquals(Timeout.ofSeconds(Long.MAX_VALUE), Timeout.parse("9223372036854775807\tSeconds"));
177 Assertions.assertEquals(Timeout.ZERO_MILLISECONDS, Timeout.parse("0 MILLISECONDS"));
178 }
179
180 }