blob: a907c797f998f30cdbebfc0c2df52fbfb2b95919 [file] [log] [blame]
/*
* ====================================================================
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
*/
package org.apache.hc.core5.util;
import java.text.ParseException;
import java.util.concurrent.TimeUnit;
import org.junit.Assert;
import org.junit.Test;
public class TestTimeout {
private void checkToDays(final long value, final TimeUnit timeUnit) {
Assert.assertEquals(timeUnit.toDays(value), Timeout.of(value, timeUnit).toDays());
}
private void checkToHours(final long value, final TimeUnit timeUnit) {
Assert.assertEquals(timeUnit.toHours(value), Timeout.of(value, timeUnit).toHours());
}
private void checkToMicroseconds(final long value, final TimeUnit timeUnit) {
Assert.assertEquals(timeUnit.toMicros(value), Timeout.of(value, timeUnit).toMicroseconds());
}
private void checkToMilliseconds(final long value, final TimeUnit timeUnit) {
Assert.assertEquals(timeUnit.toMillis(value), Timeout.of(value, timeUnit).toMilliseconds());
}
private void checkToMinutes(final long value, final TimeUnit timeUnit) {
Assert.assertEquals(timeUnit.toMinutes(value), Timeout.of(value, timeUnit).toMinutes());
}
private void checkToNanoseconds(final long value, final TimeUnit timeUnit) {
Assert.assertEquals(timeUnit.toNanos(value), Timeout.of(value, timeUnit).toNanoseconds());
}
private void checkToSeconds(final long value, final TimeUnit timeUnit) {
Assert.assertEquals(timeUnit.toSeconds(value), Timeout.of(value, timeUnit).toSeconds());
}
private void test(final long value) {
for (final TimeUnit timeUnit : TimeUnit.values()) {
checkToDays(value, timeUnit);
checkToHours(value, timeUnit);
checkToMinutes(value, timeUnit);
checkToSeconds(value, timeUnit);
checkToMilliseconds(value, timeUnit);
checkToMicroseconds(value, timeUnit);
checkToNanoseconds(value, timeUnit);
}
}
@Test
public void test0() {
test(0);
}
@Test
public void test1() {
test(1);
}
@Test
public void testDisabled() {
Assert.assertTrue(Timeout.DISABLED.isDisabled());
Assert.assertFalse(Timeout.DISABLED.isEnabled());
}
private void testFactory(final TimeUnit timeUnit) {
Assert.assertEquals(timeUnit, Timeout.of(1, timeUnit).getTimeUnit());
}
@Test
public void testFactoryForDays() {
testFactory(TimeUnit.DAYS);
}
@Test
public void testFactoryForHours() {
testFactory(TimeUnit.HOURS);
}
@Test
public void testFactoryForMicroseconds() {
testFactory(TimeUnit.MICROSECONDS);
}
@Test
public void testFactoryForMillisseconds() {
testFactory(TimeUnit.MILLISECONDS);
}
@Test
public void testFactoryForMinutes() {
testFactory(TimeUnit.MINUTES);
}
@Test
public void testFactoryForNanoseconds() {
testFactory(TimeUnit.NANOSECONDS);
}
@Test
public void testFactoryForSeconds() {
testFactory(TimeUnit.SECONDS);
}
@Test
public void testMaxInt() {
test(Integer.MAX_VALUE);
}
@Test
public void testMaxLong() {
test(Long.MAX_VALUE);
}
@Test(expected = IllegalArgumentException.class)
public void testNegative1() {
test(-1);
}
@Test
public void testToString() {
Assert.assertEquals("9,223,372,036,854,775,807 SECONDS", Timeout.ofSeconds(Long.MAX_VALUE).toString());
Assert.assertEquals("0 MILLISECONDS", Timeout.ZERO_MILLISECONDS.toString());
}
@Test
public void testFromString() throws ParseException {
Assert.assertEquals(Timeout.ofSeconds(Long.MAX_VALUE), Timeout.parse("9,223,372,036,854,775,807 SECONDS"));
Assert.assertEquals(Timeout.ofSeconds(Long.MAX_VALUE), Timeout.parse("9,223,372,036,854,775,807 Seconds"));
Assert.assertEquals(Timeout.ofSeconds(Long.MAX_VALUE), Timeout.parse("9,223,372,036,854,775,807 Seconds"));
Assert.assertEquals(Timeout.ofSeconds(Long.MAX_VALUE), Timeout.parse("9,223,372,036,854,775,807\tSeconds"));
Assert.assertEquals(Timeout.ZERO_MILLISECONDS, Timeout.parse("0 MILLISECONDS"));
}
}