/** * Logback: the reliable, generic, fast and flexible logging framework. * Copyright (C) 1999-2013, QOS.ch. All rights reserved. * * This program and the accompanying materials are dual-licensed under * either the terms of the Eclipse Public License v1.0 as published by * the Eclipse Foundation * * or (per the licensee's choosing) * * under the terms of the GNU Lesser General Public License version 2.1 * as published by the Free Software Foundation. */ package ch.qos.logback.core.rolling.helper; import java.util.Date; import junit.framework.TestCase; public class RollingCalendarTest extends TestCase { public RollingCalendarTest(String arg0) { super(arg0); } protected void setUp() throws Exception { super.setUp(); } protected void tearDown() throws Exception { super.tearDown(); } public void testPeriodicity() { { RollingCalendar rc = new RollingCalendar(); assertEquals(PeriodicityType.TOP_OF_SECOND, rc .computePeriodicityType("yyyy-MM-dd_HH_mm_ss")); } { RollingCalendar rc = new RollingCalendar(); assertEquals(PeriodicityType.TOP_OF_MINUTE, rc .computePeriodicityType("yyyy-MM-dd_HH_mm")); } { RollingCalendar rc = new RollingCalendar(); assertEquals(PeriodicityType.TOP_OF_HOUR, rc .computePeriodicityType("yyyy-MM-dd_HH")); } { RollingCalendar rc = new RollingCalendar(); assertEquals(PeriodicityType.TOP_OF_DAY, rc .computePeriodicityType("yyyy-MM-dd")); } { RollingCalendar rc = new RollingCalendar(); assertEquals(PeriodicityType.TOP_OF_MONTH, rc .computePeriodicityType("yyyy-MM")); } } public void testVaryingNumberOfHourlyPeriods() { RollingCalendar rc = new RollingCalendar(); rc.init("yyyy-MM-dd_HH"); long MILLIS_IN_HOUR = 3600*1000; for (int p = 100; p > -100; p--) { long now = 1223325293589L; // Mon Oct 06 22:34:53 CEST 2008 Date result = rc.getRelativeDate(new Date(now), p); long expected = now - (now % (MILLIS_IN_HOUR)) + p * MILLIS_IN_HOUR; assertEquals(expected, result.getTime()); } } public void testVaryingNumberOfDailyPeriods() { RollingCalendar rc = new RollingCalendar(); rc.init("yyyy-MM-dd"); final long MILLIS_IN_DAY = 24*3600*1000; for (int p = 20; p > -100; p--) { long now = 1223325293589L; // Mon Oct 06 22:34:53 CEST 2008 Date nowDate = new Date(now); Date result = rc.getRelativeDate(nowDate, p); long offset = rc.getTimeZone().getRawOffset()+rc.getTimeZone().getDSTSavings(); long origin = now - (now % (MILLIS_IN_DAY)) - offset; long expected = origin + p * MILLIS_IN_DAY; assertEquals("p="+p, expected, result.getTime()); } } }