blob: 0d2cac679aaee7e7ddd305500ed886f6ffaa67df [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.log4j;
import junit.framework.TestCase;
import org.apache.log4j.spi.LoggingEvent;
/**
* Tests for Layout.
*
*/
public class LayoutTest extends TestCase {
/**
* Expected content type.
*/
private final String contentType;
/**
* Expected value for ignoresThrowable.
*/
private final boolean ignoresThrowable;
/**
* Expected value for header.
*/
private final String header;
/**
* Expected value for footer.
*/
private final String footer;
/**
* Construct a new instance of LayoutTest.
* @param testName test name.
*/
public LayoutTest(final String testName) {
super(testName);
contentType = "text/plain";
ignoresThrowable = true;
header = null;
footer = null;
}
/**
* 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 LayoutTest(
final String testName, final String expectedContentType,
final boolean expectedIgnoresThrowable, final String expectedHeader,
final String expectedFooter) {
super(testName);
contentType = expectedContentType;
ignoresThrowable = expectedIgnoresThrowable;
header = expectedHeader;
footer = expectedFooter;
}
/**
* Tests Layout.LINE_SEP.
*/
public void testLineSep() {
assertEquals(System.getProperty("line.separator"), Layout.LINE_SEP);
}
/**
* Tests Layout.LINE_SEP.
*/
public void testLineSepLen() {
assertEquals(Layout.LINE_SEP.length(), Layout.LINE_SEP_LEN);
}
/**
* Creates layout for test.
* @return new instance of Layout.
*/
protected Layout createLayout() {
return new MockLayout();
}
/**
* Tests getContentType.
*/
public void testGetContentType() {
assertEquals(contentType, createLayout().getContentType());
}
/**
* Tests ignoresThrowable.
*/
public void testIgnoresThrowable() {
assertEquals(ignoresThrowable, createLayout().ignoresThrowable());
}
/**
* Tests getHeader.
*/
public void testGetHeader() {
assertEquals(header, createLayout().getHeader());
}
/**
* Tests getFooter.
*/
public void testGetFooter() {
assertEquals(footer, createLayout().getFooter());
}
/**
* Tests format.
* @throws Exception derived tests, particular XMLLayoutTest, may throw exceptions.
*/
public void testFormat() throws Exception {
Logger logger = Logger.getLogger("org.apache.log4j.LayoutTest");
LoggingEvent event =
new LoggingEvent(
"org.apache.log4j.Logger", logger, Level.INFO, "Hello, World", null);
String result = createLayout().format(event);
assertEquals("Mock", result);
}
/**
* Concrete Layout class for tests.
*/
private static final class MockLayout extends Layout {
/**
* @{inheritDoc}
*/
public String format(final LoggingEvent event) {
return "Mock";
}
/**
* @{inheritDoc}
*/
public void activateOptions() {
}
/**
* @{inheritDoc}
*/
public boolean ignoresThrowable() {
return true;
}
}
}