/* * 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.log4j.helpers; import org.apache.log4j.Layout; import org.apache.log4j.LayoutTest; import org.apache.log4j.spi.LoggingEvent; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.TimeZone; import java.util.Calendar; /** * Tests for DateLayout. * */ public class DateLayoutTest extends LayoutTest { /** * Construct a new instance of LayoutTest. * @param testName test name. */ public DateLayoutTest(final String testName) { super(testName); } /** * Constructor for use by derived tests. * @param testName name of test. * @param expectedContentType expected value for getContentType(). * @param expectedIgnoresThrowable expected value for ignoresThrowable(). * @param expectedHeader expected value for getHeader(). * @param expectedFooter expected value for getFooter(). */ protected DateLayoutTest( final String testName, final String expectedContentType, final boolean expectedIgnoresThrowable, final String expectedHeader, final String expectedFooter) { super( testName, expectedContentType, expectedIgnoresThrowable, expectedHeader, expectedFooter); } /** * @{inheritDoc} */ protected Layout createLayout() { return new MockLayout(); } /** * Tests DateLayout.NULL_DATE_FORMAT constant. */ public void testNullDateFormat() { assertEquals("NULL", DateLayout.NULL_DATE_FORMAT); } /** * Tests DateLayout.RELATIVE constant. */ public void testRelativeTimeDateFormat() { assertEquals("RELATIVE", DateLayout.RELATIVE_TIME_DATE_FORMAT); } /** * Tests DateLayout.DATE_FORMAT_OPTION constant. * @deprecated since constant is deprecated */ public void testDateFormatOption() { assertEquals("DateFormat", DateLayout.DATE_FORMAT_OPTION); } /** * Tests DateLayout.TIMEZONE_OPTION constant. * @deprecated since constant is deprecated */ public void testTimeZoneOption() { assertEquals("TimeZone", DateLayout.TIMEZONE_OPTION); } /** * Tests getOptionStrings(). * @deprecated since getOptionStrings is deprecated. * */ public void testGetOptionStrings() { String[] options = ((DateLayout) createLayout()).getOptionStrings(); assertEquals(2, options.length); } /** * Tests setting DateFormat through setOption method. * @deprecated since setOption is deprecated. */ public void testSetOptionDateFormat() { DateLayout layout = (DateLayout) createLayout(); layout.setOption("dAtefOrmat", "foobar"); assertEquals("FOOBAR", layout.getDateFormat()); } /** * Tests setting TimeZone through setOption method. * @deprecated since setOption is deprecated. */ public void testSetOptionTimeZone() { DateLayout layout = (DateLayout) createLayout(); layout.setOption("tImezOne", "+05:00"); assertEquals("+05:00", layout.getTimeZone()); } /** * Tests setDateFormat. */ public void testSetDateFormat() { DateLayout layout = (DateLayout) createLayout(); layout.setDateFormat("ABSOLUTE"); assertEquals("ABSOLUTE", layout.getDateFormat()); } /** * Tests setTimeZone. */ public void testSetTimeZone() { DateLayout layout = (DateLayout) createLayout(); layout.setTimeZone("+05:00"); assertEquals("+05:00", layout.getTimeZone()); } /** * Tests 2 parameter setDateFormat with null. */ public void testSetDateFormatNull() { DateLayout layout = (DateLayout) createLayout(); layout.setDateFormat((String) null, null); } /** * Tests 2 parameter setDateFormat with "NULL". */ public void testSetDateFormatNullString() { DateLayout layout = (DateLayout) createLayout(); layout.setDateFormat("NuLL", null); } /** * Tests 2 parameter setDateFormat with "RELATIVE". */ public void testSetDateFormatRelative() { DateLayout layout = (DateLayout) createLayout(); layout.setDateFormat("rElatIve", TimeZone.getDefault()); } /** * Tests 2 parameter setDateFormat with "ABSOLUTE". */ public void testSetDateFormatAbsolute() { DateLayout layout = (DateLayout) createLayout(); layout.setDateFormat("aBsolUte", TimeZone.getDefault()); } /** * Tests 2 parameter setDateFormat with "DATETIME". */ public void testSetDateFormatDateTime() { DateLayout layout = (DateLayout) createLayout(); layout.setDateFormat("dAte", TimeZone.getDefault()); } /** * Tests 2 parameter setDateFormat with "ISO8601". */ public void testSetDateFormatISO8601() { DateLayout layout = (DateLayout) createLayout(); layout.setDateFormat("iSo8601", TimeZone.getDefault()); } /** * Tests 2 parameter setDateFormat with "HH:mm:ss". */ public void testSetDateFormatSimple() { DateLayout layout = (DateLayout) createLayout(); layout.setDateFormat("HH:mm:ss", TimeZone.getDefault()); } /** * Tests activateOptions. */ public void testActivateOptions() { DateLayout layout = (DateLayout) createLayout(); layout.setDateFormat("HH:mm:ss"); layout.setTimeZone("+05:00"); layout.activateOptions(); } /** * Tests setDateFormat(DateFormat, TimeZone). */ public void testSetDateFormatWithFormat() { DateFormat format = new SimpleDateFormat("HH:mm"); DateLayout layout = (DateLayout) createLayout(); layout.setDateFormat(format, TimeZone.getDefault()); } /** * Tests IS08601DateFormat class. * @deprecated since ISO8601DateFormat is deprecated */ public void testISO8601Format() { DateFormat format = new ISO8601DateFormat(); Calendar calendar = Calendar.getInstance(); calendar.clear(); calendar.set(1970, 0, 1, 0, 0, 0); String actual = format.format(calendar.getTime()); assertEquals("1970-01-01 00:00:00,000", actual); } /** * Tests DateTimeDateFormat class. * @deprecated since DateTimeDateFormat is deprecated */ public void testDateTimeFormat() { DateFormat format = new DateTimeDateFormat(); Calendar calendar = Calendar.getInstance(); calendar.clear(); calendar.set(1970, 0, 1, 0, 0, 0); String actual = format.format(calendar.getTime()); SimpleDateFormat df = new SimpleDateFormat("dd MMM yyyy HH:mm:ss,SSS"); String expected = df.format(calendar.getTime()); assertEquals(expected, actual); } /** * Concrete Layout class for tests. */ private static final class MockLayout extends DateLayout { /** * Create new instance of MockLayout. */ public MockLayout() { // // checks that protected fields are properly initialized assertNotNull(pos); assertNotNull(date); assertNull(dateFormat); } /** * @{inheritDoc} */ public String format(final LoggingEvent event) { return "Mock"; } /** * @{inheritDoc} */ public void activateOptions() { } /** * @{inheritDoc} */ public boolean ignoresThrowable() { return true; } } }