/*
* 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.Date;
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;
}
}
}
|