/*
* Copyright Terracotta, Inc.
*
* Licensed 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.
*/
package org.ehcache.clustered.client.config;
import org.junit.Test;
import java.util.Arrays;
import java.util.List;
import static java.util.concurrent.TimeUnit.DAYS;
import static java.util.concurrent.TimeUnit.HOURS;
import static java.util.concurrent.TimeUnit.MICROSECONDS;
import static java.util.concurrent.TimeUnit.MILLISECONDS;
import static java.util.concurrent.TimeUnit.MINUTES;
import static java.util.concurrent.TimeUnit.NANOSECONDS;
import static java.util.concurrent.TimeUnit.SECONDS;
import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.not;
import static org.junit.Assert.*;
/**
* Tests the functionality of {@link TimeoutDuration}.
*/
public class TimeoutDurationTest {
@Test
public void testEquals() throws Exception {
@SuppressWarnings("unchecked")
List<Pair<TimeoutDuration>> equalPairs = Arrays.asList(
Pair.of(TimeoutDuration.of(1, NANOSECONDS), TimeoutDuration.of(1, NANOSECONDS)),
Pair.of(TimeoutDuration.of(1, MICROSECONDS), TimeoutDuration.of(1000, NANOSECONDS)),
Pair.of(TimeoutDuration.of(1, MILLISECONDS), TimeoutDuration.of(1000000, NANOSECONDS)),
Pair.of(TimeoutDuration.of(1, SECONDS), TimeoutDuration.of(1000000000, NANOSECONDS)),
Pair.of(TimeoutDuration.of(1, MINUTES), TimeoutDuration.of(60000000000L, NANOSECONDS)),
Pair.of(TimeoutDuration.of(1, HOURS), TimeoutDuration.of(3600000000000L, NANOSECONDS)),
Pair.of(TimeoutDuration.of(1, DAYS), TimeoutDuration.of(86400000000000L, NANOSECONDS)),
Pair.of(TimeoutDuration.of(1, MILLISECONDS), TimeoutDuration.of(1000, MICROSECONDS)),
Pair.of(TimeoutDuration.of(1, SECONDS), TimeoutDuration.of(1000000, MICROSECONDS)),
Pair.of(TimeoutDuration.of(1, MINUTES), TimeoutDuration.of(60000000L, MICROSECONDS)),
Pair.of(TimeoutDuration.of(1, HOURS), TimeoutDuration.of(3600000000L, MICROSECONDS)),
Pair.of(TimeoutDuration.of(1, DAYS), TimeoutDuration.of(86400000000L, MICROSECONDS)),
Pair.of(TimeoutDuration.of(1, SECONDS), TimeoutDuration.of(1000, MILLISECONDS)),
Pair.of(TimeoutDuration.of(1, MINUTES), TimeoutDuration.of(60000L, MILLISECONDS)),
Pair.of(TimeoutDuration.of(1, HOURS), TimeoutDuration.of(3600000L, MILLISECONDS)),
Pair.of(TimeoutDuration.of(1, DAYS), TimeoutDuration.of(86400000L, MILLISECONDS)),
Pair.of(TimeoutDuration.of(1, MINUTES), TimeoutDuration.of(60L, SECONDS)),
Pair.of(TimeoutDuration.of(1, HOURS), TimeoutDuration.of(3600L, SECONDS)),
Pair.of(TimeoutDuration.of(1, DAYS), TimeoutDuration.of(86400L, SECONDS)),
Pair.of(TimeoutDuration.of(1, HOURS), TimeoutDuration.of(60L, MINUTES)),
Pair.of(TimeoutDuration.of(1, DAYS), TimeoutDuration.of(1440L, MINUTES)),
Pair.of(TimeoutDuration.of(1, DAYS), TimeoutDuration.of(24L, HOURS)),
Pair.of(TimeoutDuration.of(7, NANOSECONDS), TimeoutDuration.of(7, NANOSECONDS)),
Pair.of(TimeoutDuration.of(7, MICROSECONDS), TimeoutDuration.of(1000 * 7, NANOSECONDS)),
Pair.of(TimeoutDuration.of(7, MILLISECONDS), TimeoutDuration.of(1000000 * 7, NANOSECONDS)),
Pair.of(TimeoutDuration.of(7, SECONDS), TimeoutDuration.of(1000000000L * 7, NANOSECONDS)),
Pair.of(TimeoutDuration.of(7, MINUTES), TimeoutDuration.of(60000000000L * 7, NANOSECONDS)),
Pair.of(TimeoutDuration.of(7, HOURS), TimeoutDuration.of(3600000000000L * 7, NANOSECONDS)),
Pair.of(TimeoutDuration.of(7, DAYS), TimeoutDuration.of(86400000000000L * 7, NANOSECONDS)),
Pair.of(TimeoutDuration.of(7, MILLISECONDS), TimeoutDuration.of(1000 * 7, MICROSECONDS)),
Pair.of(TimeoutDuration.of(7, SECONDS), TimeoutDuration.of(1000000 * 7, MICROSECONDS)),
Pair.of(TimeoutDuration.of(7, MINUTES), TimeoutDuration.of(60000000L * 7, MICROSECONDS)),
Pair.of(TimeoutDuration.of(7, HOURS), TimeoutDuration.of(3600000000L * 7, MICROSECONDS)),
Pair.of(TimeoutDuration.of(7, DAYS), TimeoutDuration.of(86400000000L * 7, MICROSECONDS)),
Pair.of(TimeoutDuration.of(7, SECONDS), TimeoutDuration.of(1000 * 7, MILLISECONDS)),
Pair.of(TimeoutDuration.of(7, MINUTES), TimeoutDuration.of(60000L * 7, MILLISECONDS)),
Pair.of(TimeoutDuration.of(7, HOURS), TimeoutDuration.of(3600000L * 7, MILLISECONDS)),
Pair.of(TimeoutDuration.of(7, DAYS), TimeoutDuration.of(86400000L * 7, MILLISECONDS)),
Pair.of(TimeoutDuration.of(7, MINUTES), TimeoutDuration.of(60L * 7, SECONDS)),
Pair.of(TimeoutDuration.of(7, HOURS), TimeoutDuration.of(3600L * 7, SECONDS)),
Pair.of(TimeoutDuration.of(7, DAYS), TimeoutDuration.of(86400L * 7, SECONDS)),
Pair.of(TimeoutDuration.of(7, HOURS), TimeoutDuration.of(60L * 7, MINUTES)),
Pair.of(TimeoutDuration.of(7, DAYS), TimeoutDuration.of(1440L * 7, MINUTES)),
Pair.of(TimeoutDuration.of(7, DAYS), TimeoutDuration.of(24L * 7, HOURS)),
Pair.of(TimeoutDuration.of(1, MICROSECONDS), TimeoutDuration.of(1, MICROSECONDS)),
Pair.of(TimeoutDuration.of(1, MILLISECONDS), TimeoutDuration.of(1, MILLISECONDS)),
Pair.of(TimeoutDuration.of(1, SECONDS), TimeoutDuration.of(1, SECONDS)),
Pair.of(TimeoutDuration.of(1, MINUTES), TimeoutDuration.of(1, MINUTES)),
Pair.of(TimeoutDuration.of(1, HOURS), TimeoutDuration.of(1, HOURS)),
Pair.of(TimeoutDuration.of(1, DAYS), TimeoutDuration.of(1, DAYS)),
Pair.of(TimeoutDuration.of(0, NANOSECONDS), TimeoutDuration.of(0, NANOSECONDS)),
Pair.of(TimeoutDuration.of(0, MICROSECONDS), TimeoutDuration.of(0, NANOSECONDS)),
Pair.of(TimeoutDuration.of(0, MILLISECONDS), TimeoutDuration.of(0, NANOSECONDS)),
Pair.of(TimeoutDuration.of(0, SECONDS), TimeoutDuration.of(0, NANOSECONDS)),
Pair.of(TimeoutDuration.of(0, MINUTES), TimeoutDuration.of(0, NANOSECONDS)),
Pair.of(TimeoutDuration.of(0, HOURS), TimeoutDuration.of(0, NANOSECONDS)),
Pair.of(TimeoutDuration.of(0, DAYS), TimeoutDuration.of(0, NANOSECONDS)),
Pair.of(TimeoutDuration.of(Long.MAX_VALUE, DAYS), TimeoutDuration.of(Long.MAX_VALUE, DAYS)),
Pair.of(TimeoutDuration.of(Long.MAX_VALUE, HOURS), TimeoutDuration.of(Long.MAX_VALUE, HOURS)),
Pair.of(TimeoutDuration.of(Long.MAX_VALUE, MINUTES), TimeoutDuration.of(Long.MAX_VALUE, MINUTES)),
Pair.of(TimeoutDuration.of(Long.MAX_VALUE, SECONDS), TimeoutDuration.of(Long.MAX_VALUE, SECONDS)),
Pair.of(TimeoutDuration.of(Long.MAX_VALUE, MILLISECONDS), TimeoutDuration.of(Long.MAX_VALUE, MILLISECONDS)),
Pair.of(TimeoutDuration.of(Long.MAX_VALUE, MICROSECONDS), TimeoutDuration.of(Long.MAX_VALUE, MICROSECONDS)),
Pair.of(TimeoutDuration.of(Long.MAX_VALUE, NANOSECONDS), TimeoutDuration.of(Long.MAX_VALUE, NANOSECONDS))
);
for (final Pair<TimeoutDuration> pair : equalPairs) {
assertThat(pair.getFirst(), is(equalTo(pair.getSecond())));
assertThat(pair.getSecond(), is(equalTo(pair.getFirst())));
assertThat(pair.getFirst().hashCode(), is(equalTo(pair.getSecond().hashCode())));
}
@SuppressWarnings("unchecked")
List<Pair<TimeoutDuration>> unEqualPairs = Arrays.asList(
Pair.of(TimeoutDuration.of(Long.MAX_VALUE, DAYS), TimeoutDuration.of(Long.MAX_VALUE, HOURS)),
Pair.of(TimeoutDuration.of(Long.MAX_VALUE, DAYS), TimeoutDuration.of(Long.MAX_VALUE, MINUTES)),
Pair.of(TimeoutDuration.of(Long.MAX_VALUE, DAYS), TimeoutDuration.of(Long.MAX_VALUE, SECONDS)),
Pair.of(TimeoutDuration.of(Long.MAX_VALUE, DAYS), TimeoutDuration.of(Long.MAX_VALUE, MILLISECONDS)),
Pair.of(TimeoutDuration.of(Long.MAX_VALUE, DAYS), TimeoutDuration.of(Long.MAX_VALUE, MICROSECONDS)),
Pair.of(TimeoutDuration.of(Long.MAX_VALUE, DAYS), TimeoutDuration.of(Long.MAX_VALUE, NANOSECONDS)),
Pair.of(TimeoutDuration.of(Long.MAX_VALUE, HOURS), TimeoutDuration.of(Long.MAX_VALUE, MINUTES)),
Pair.of(TimeoutDuration.of(Long.MAX_VALUE, HOURS), TimeoutDuration.of(Long.MAX_VALUE, SECONDS)),
Pair.of(TimeoutDuration.of(Long.MAX_VALUE, HOURS), TimeoutDuration.of(Long.MAX_VALUE, MILLISECONDS)),
Pair.of(TimeoutDuration.of(Long.MAX_VALUE, HOURS), TimeoutDuration.of(Long.MAX_VALUE, MICROSECONDS)),
Pair.of(TimeoutDuration.of(Long.MAX_VALUE, HOURS), TimeoutDuration.of(Long.MAX_VALUE, NANOSECONDS)),
Pair.of(TimeoutDuration.of(Long.MAX_VALUE, MINUTES), TimeoutDuration.of(Long.MAX_VALUE, SECONDS)),
Pair.of(TimeoutDuration.of(Long.MAX_VALUE, MINUTES), TimeoutDuration.of(Long.MAX_VALUE, MILLISECONDS)),
Pair.of(TimeoutDuration.of(Long.MAX_VALUE, MINUTES), TimeoutDuration.of(Long.MAX_VALUE, MICROSECONDS)),
Pair.of(TimeoutDuration.of(Long.MAX_VALUE, MINUTES), TimeoutDuration.of(Long.MAX_VALUE, NANOSECONDS)),
Pair.of(TimeoutDuration.of(Long.MAX_VALUE, SECONDS), TimeoutDuration.of(Long.MAX_VALUE, MILLISECONDS)),
Pair.of(TimeoutDuration.of(Long.MAX_VALUE, SECONDS), TimeoutDuration.of(Long.MAX_VALUE, MICROSECONDS)),
Pair.of(TimeoutDuration.of(Long.MAX_VALUE, SECONDS), TimeoutDuration.of(Long.MAX_VALUE, NANOSECONDS)),
Pair.of(TimeoutDuration.of(Long.MAX_VALUE, MILLISECONDS), TimeoutDuration.of(Long.MAX_VALUE, MICROSECONDS)),
Pair.of(TimeoutDuration.of(Long.MAX_VALUE, MILLISECONDS), TimeoutDuration.of(Long.MAX_VALUE, NANOSECONDS)),
Pair.of(TimeoutDuration.of(Long.MAX_VALUE, MICROSECONDS), TimeoutDuration.of(Long.MAX_VALUE, NANOSECONDS)),
Pair.of(TimeoutDuration.of(1, DAYS), TimeoutDuration.of(1, HOURS)),
Pair.of(TimeoutDuration.of(1, DAYS), TimeoutDuration.of(1, MINUTES)),
Pair.of(TimeoutDuration.of(1, DAYS), TimeoutDuration.of(1, SECONDS)),
Pair.of(TimeoutDuration.of(1, DAYS), TimeoutDuration.of(1, MILLISECONDS)),
Pair.of(TimeoutDuration.of(1, DAYS), TimeoutDuration.of(1, MICROSECONDS)),
Pair.of(TimeoutDuration.of(1, DAYS), TimeoutDuration.of(1, NANOSECONDS)),
Pair.of(TimeoutDuration.of(1, HOURS), TimeoutDuration.of(1, MINUTES)),
Pair.of(TimeoutDuration.of(1, HOURS), TimeoutDuration.of(1, SECONDS)),
Pair.of(TimeoutDuration.of(1, HOURS), TimeoutDuration.of(1, MILLISECONDS)),
Pair.of(TimeoutDuration.of(1, HOURS), TimeoutDuration.of(1, MICROSECONDS)),
Pair.of(TimeoutDuration.of(1, HOURS), TimeoutDuration.of(1, NANOSECONDS)),
Pair.of(TimeoutDuration.of(1, MINUTES), TimeoutDuration.of(1, SECONDS)),
Pair.of(TimeoutDuration.of(1, MINUTES), TimeoutDuration.of(1, MILLISECONDS)),
Pair.of(TimeoutDuration.of(1, MINUTES), TimeoutDuration.of(1, MICROSECONDS)),
Pair.of(TimeoutDuration.of(1, MINUTES), TimeoutDuration.of(1, NANOSECONDS)),
Pair.of(TimeoutDuration.of(1, SECONDS), TimeoutDuration.of(1, MILLISECONDS)),
Pair.of(TimeoutDuration.of(1, SECONDS), TimeoutDuration.of(1, MICROSECONDS)),
Pair.of(TimeoutDuration.of(1, SECONDS), TimeoutDuration.of(1, NANOSECONDS)),
Pair.of(TimeoutDuration.of(1, MILLISECONDS), TimeoutDuration.of(1, MICROSECONDS)),
Pair.of(TimeoutDuration.of(1, MILLISECONDS), TimeoutDuration.of(1, NANOSECONDS)),
Pair.of(TimeoutDuration.of(1, MICROSECONDS), TimeoutDuration.of(1, NANOSECONDS)),
Pair.of(TimeoutDuration.of(1, NANOSECONDS), TimeoutDuration.of(0, MICROSECONDS)),
Pair.of(TimeoutDuration.of(1, NANOSECONDS), TimeoutDuration.of(0, MILLISECONDS)),
Pair.of(TimeoutDuration.of(1, NANOSECONDS), TimeoutDuration.of(0, SECONDS)),
Pair.of(TimeoutDuration.of(1, NANOSECONDS), TimeoutDuration.of(0, MINUTES)),
Pair.of(TimeoutDuration.of(1, NANOSECONDS), TimeoutDuration.of(0, HOURS)),
Pair.of(TimeoutDuration.of(1, NANOSECONDS), TimeoutDuration.of(0, DAYS)),
Pair.of(TimeoutDuration.of(1, MICROSECONDS), TimeoutDuration.of(0, MILLISECONDS)),
Pair.of(TimeoutDuration.of(1, MICROSECONDS), TimeoutDuration.of(0, SECONDS)),
Pair.of(TimeoutDuration.of(1, MICROSECONDS), TimeoutDuration.of(0, MINUTES)),
Pair.of(TimeoutDuration.of(1, MICROSECONDS), TimeoutDuration.of(0, HOURS)),
Pair.of(TimeoutDuration.of(1, MICROSECONDS), TimeoutDuration.of(0, DAYS)),
Pair.of(TimeoutDuration.of(1, MILLISECONDS), TimeoutDuration.of(0, SECONDS)),
Pair.of(TimeoutDuration.of(1, MILLISECONDS), TimeoutDuration.of(0, MINUTES)),
Pair.of(TimeoutDuration.of(1, MILLISECONDS), TimeoutDuration.of(0, HOURS)),
Pair.of(TimeoutDuration.of(1, MILLISECONDS), TimeoutDuration.of(0, DAYS)),
Pair.of(TimeoutDuration.of(1, SECONDS), TimeoutDuration.of(0, MINUTES)),
Pair.of(TimeoutDuration.of(1, SECONDS), TimeoutDuration.of(0, HOURS)),
Pair.of(TimeoutDuration.of(1, SECONDS), TimeoutDuration.of(0, DAYS)),
Pair.of(TimeoutDuration.of(1, MINUTES), TimeoutDuration.of(0, HOURS)),
Pair.of(TimeoutDuration.of(1, MINUTES), TimeoutDuration.of(0, DAYS)),
Pair.of(TimeoutDuration.of(1, HOURS), TimeoutDuration.of(0, DAYS))
);
for (final Pair<TimeoutDuration> pair : unEqualPairs) {
assertThat(pair.getFirst(), is(not(equalTo(pair.getSecond()))));
assertThat(pair.getSecond(), is(not(equalTo(pair.getFirst()))));
}
}
private static final class Pair<T> {
private final T first;
private final T second;
private Pair(T first, T second) {
this.first = first;
this.second = second;
}
public static <T> Pair<T> of(T first, T second) {
return new Pair<T>(first, second);
}
public T getFirst() {
return this.first;
}
public T getSecond() {
return this.second;
}
}
}