blob: 456f95bd4385bad9e30e3d6eff5dd5febf1560fd [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.
*/
package org.apache.logging.log4j.core.appender.rolling.action;
import org.apache.logging.log4j.core.appender.rolling.action.Duration;
import org.junit.Test;
import static org.junit.Assert.*;
/**
* Tests the Duration class.
*/
public class DurationTest {
@Test(expected = NullPointerException.class)
public void testParseFailsIfNullText() {
Duration.parse(null);
}
@Test(expected = IllegalArgumentException.class)
public void testParseFailsIfInvalidPattern() {
Duration.parse("abc");
}
@Test(expected = IllegalArgumentException.class)
public void testParseFailsIfSectionsOutOfOrder() {
Duration.parse("P4DT2M1S3H");
}
@Test(expected = IllegalArgumentException.class)
public void testParseFailsIfTButMissingTime() {
Duration.parse("P1dT");
}
@Test
public void testParseIsCaseInsensitive() {
assertEquals("P4DT3H2M1S", Duration.parse("p4dt3h2m1s").toString());
}
@Test
public void testParseAllowsOverflows() {
assertEquals(1000 * 70, Duration.parse("PT70S").toMillis());
assertEquals(1000 * 70 * 60, Duration.parse("PT70M").toMillis());
assertEquals(1000 * 25 * 60 * 60, Duration.parse("PT25H").toMillis());
}
@Test
public void testToMillis() {
assertEquals(0, Duration.ZERO.toMillis());
assertEquals(1000, Duration.parse("PT1S").toMillis());
assertEquals(1000 * 2 * 60, Duration.parse("PT2M").toMillis());
assertEquals(1000 * 3 * 60 * 60, Duration.parse("PT3H").toMillis());
assertEquals(1000 * 4 * 24 * 60 * 60, Duration.parse("P4D").toMillis());
final long expected = (1000 * 4 * 24 * 60 * 60) + (1000 * 3 * 60 * 60) + (1000 * 2 * 60) + 1000;
assertEquals(expected, Duration.parse("P4DT3H2M1S").toMillis());
}
@Test
public void testToString() {
assertEquals("PT0S", Duration.ZERO.toString());
assertEquals("PT1S", Duration.parse("PT1S").toString());
assertEquals("PT2M1S", Duration.parse("PT2M1S").toString());
assertEquals("PT3H2M1S", Duration.parse("PT3H2M1S").toString());
assertEquals("P4DT3H2M1S", Duration.parse("P4DT3H2M1S").toString());
}
@Test
public void testPrefixPNotRequired() {
assertEquals("PT1S", Duration.parse("T1S").toString());
assertEquals("PT2M1S", Duration.parse("T2M1S").toString());
assertEquals("PT3H2M1S", Duration.parse("T3H2M1S").toString());
assertEquals("P4DT3H2M1S", Duration.parse("4DT3H2M1S").toString());
}
@Test
public void testInfixTNotRequired() {
assertEquals("PT1S", Duration.parse("P1S").toString());
assertEquals("PT2M1S", Duration.parse("P2M1S").toString());
assertEquals("PT3H2M1S", Duration.parse("P3H2M1S").toString());
assertEquals("P4DT3H2M1S", Duration.parse("P4D3H2M1S").toString());
}
@Test
public void testPrefixPAndInfixTNotRequired() {
assertEquals("PT1S", Duration.parse("1S").toString());
assertEquals("PT2M1S", Duration.parse("2M1S").toString());
assertEquals("PT3H2M1S", Duration.parse("3H2M1S").toString());
assertEquals("P4DT3H2M1S", Duration.parse("4D3H2M1S").toString());
}
@Test
public void testCompareTo() {
assertEquals(-1, Duration.parse("PT1S").compareTo(Duration.parse("PT2S")));
assertEquals(-1, Duration.parse("PT1M").compareTo(Duration.parse("PT2M")));
assertEquals(-1, Duration.parse("PT1H").compareTo(Duration.parse("PT2H")));
assertEquals(-1, Duration.parse("P1D").compareTo(Duration.parse("P2D")));
assertEquals(0, Duration.parse("PT1S").compareTo(Duration.parse("PT1S")));
assertEquals(0, Duration.parse("PT1M").compareTo(Duration.parse("PT1M")));
assertEquals(0, Duration.parse("PT1H").compareTo(Duration.parse("PT1H")));
assertEquals(0, Duration.parse("P1D").compareTo(Duration.parse("P1D")));
assertEquals(1, Duration.parse("PT2S").compareTo(Duration.parse("PT1S")));
assertEquals(1, Duration.parse("PT2M").compareTo(Duration.parse("PT1M")));
assertEquals(1, Duration.parse("PT2H").compareTo(Duration.parse("PT1H")));
assertEquals(1, Duration.parse("P2D").compareTo(Duration.parse("P1D")));
assertEquals(0, Duration.parse("PT1M").compareTo(Duration.parse("PT60S")));
assertEquals(0, Duration.parse("PT1H").compareTo(Duration.parse("PT60M")));
assertEquals(0, Duration.parse("PT1H").compareTo(Duration.parse("PT3600S")));
assertEquals(0, Duration.parse("P1D").compareTo(Duration.parse("PT24H")));
assertEquals(0, Duration.parse("P1D").compareTo(Duration.parse("PT1440M")));
}
@Test
public void testEquals() {
assertNotEquals(Duration.parse("PT1S"),(Duration.parse("PT2S")));
assertNotEquals(Duration.parse("PT1M"),(Duration.parse("PT2M")));
assertNotEquals(Duration.parse("PT1H"),(Duration.parse("PT2H")));
assertNotEquals(Duration.parse("P1D"),(Duration.parse("P2D")));
assertEquals( Duration.parse("PT1S"),(Duration.parse("PT1S")));
assertEquals( Duration.parse("PT1M"),(Duration.parse("PT1M")));
assertEquals( Duration.parse("PT1H"),(Duration.parse("PT1H")));
assertEquals( Duration.parse("P1D"),(Duration.parse("P1D")));
assertEquals( Duration.parse("PT1M"),(Duration.parse("PT60S")));
assertEquals( Duration.parse("PT1H"),(Duration.parse("PT60M")));
assertEquals( Duration.parse("PT1H"),(Duration.parse("PT3600S")));
assertEquals( Duration.parse("P1D"),(Duration.parse("PT24H")));
assertEquals(Duration.parse("P1D"), (Duration.parse("PT1440M")));
}
}