package io.atomix.catalyst.util;
import static org.testng.Assert.*;
import java.time.Duration;
import org.testng.annotations.Test;
@Test
public class DurationsTest {
public void testValidDurationStrings(){
assertEquals(Durations.of("523"), Duration.ofMillis(523));
assertEquals(Durations.of("5ns"), Duration.ofNanos(5));
assertEquals(Durations.of("5milliseconds"), Duration.ofMillis(5));
assertEquals(Durations.of("5 seconds"), Duration.ofSeconds(5));
assertEquals(Durations.of("5 minutes"), Duration.ofMinutes(5));
assertEquals(Durations.of("5 hours"), Duration.ofHours(5));
assertEquals(Durations.of("5 days"), Duration.ofDays(5));
assertEquals(Durations.of("inf"), Duration.ofSeconds(Long.MAX_VALUE));
assertEquals(Durations.of("infinite"), Duration.ofSeconds(Long.MAX_VALUE));
assertEquals(Durations.of("∞"), Duration.ofSeconds(Long.MAX_VALUE));
assertEquals(Durations.of("0s"), Duration.ofSeconds(0));
}
private void testInvalidDurationString(String duration){
try{
Durations.of(duration);
fail("Duration string '" + duration + "' should not parse correctly." );
}
catch(IllegalArgumentException iae){
//Expected
}
}
public void testInvalidDurationStrings(){
testInvalidDurationString("foobar");
testInvalidDurationString("ms3");
testInvalidDurationString("34 lightyears");
testInvalidDurationString("34 seconds a day");
testInvalidDurationString("5 days a week");
testInvalidDurationString("");
testInvalidDurationString("ns");
}
}