package org.marketcetera.util.test;
import java.io.File;
import org.apache.log4j.BasicConfigurator;
import org.apache.log4j.Level;
import org.apache.log4j.spi.LoggingEvent;
import org.junit.Before;
/**
* Base class for test cases.
*
* @author tlerios@marketcetera.com
* @since 0.5.0
* @version $Id: TestCaseBase.java 16154 2012-07-14 16:34:05Z colin $
*/
/* $License$ */
public class TestCaseBase
{
// CLASS DATA.
/**
* The root directory for test files.
*/
protected static final String DIR_ROOT=
"src"+File.separator+"test"+ //$NON-NLS-1$ //$NON-NLS-2$
File.separator+"sample_data"; //$NON-NLS-1$
/**
* The root directory for target files.
*/
protected static final String DIR_TARGET=
"target"; //$NON-NLS-1$
/**
* The root directory for class files.
*/
protected static final String DIR_CLASSES=
DIR_TARGET+File.separator+"classes"; //$NON-NLS-1$
/**
* The root directory for test class files.
*/
protected static final String DIR_TEST_CLASSES=
DIR_TARGET+File.separator+"test-classes"; //$NON-NLS-1$
// INSTANCE DATA.
private LogTestAssist mLogAssist;
// CLASS METHODS.
/**
* Sets the level of the root logger to the given level.
*
* @param level The level.
*/
protected static void setDefaultLevel
(Level level)
{
LogTestAssist.setDefaultLevel(level);
}
/**
* Sets the level of the logger with the given name to the given
* level.
*
* @param name The logger name.
* @param level The level.
*/
protected static void setLevel
(String name,
Level level)
{
LogTestAssist.setLevel(name,level);
}
/**
* Asserts that the contents of the given event match the given
* expected level, logger name, message, and location.
*
* @param event The event.
* @param level The expected level. Use null to indicate "don't
* care".
* @param logger The expected logger name. Use null to indicate
* "don't care".
* @param message The expected message. Use null to indicate
* "don't care".
* @param location The expected location. Use null to indicate
* "don't care".
*/
protected static void assertEvent
(LoggingEvent event,
Level level,
String logger,
String message,
String location)
{
LogTestAssist.assertEvent(event,level,logger,
message,location);
}
// INSTANCE METHODS.
/**
* Sets up the receiver's collector of retained events as part of
* each test's fixture.
*/
@Before
public void setupTestCaseBase()
{
mLogAssist=new LogTestAssist();
BasicConfigurator.configure(getAppender());
}
/**
* Returns the receiver's log message helper.
*
* @return The helper.
*/
protected LogTestAssist getLogAssist()
{
return mLogAssist;
}
/**
* Returns the receiver's collector (appender) of retained events.
*
* @return The appender.
*/
protected MemoryAppender getAppender()
{
return getLogAssist().getAppender();
}
/**
* Asserts that the receiver's collector contains the given number
* of events.
*
* @param count The number of events.
*/
protected void assertEventCount
(int count)
{
getLogAssist().assertEventCount(count);
}
/**
* Asserts that the receiver's collector contains no events.
*/
protected void assertNoEvents()
{
getLogAssist().assertNoEvents();
}
/**
* Asserts that the contents of the receiver's collector's most
* recent event match the given expected level, logger name,
* message, and location. The assertion fails if the receiver has
* no events.
*
* @param level The expected level. Use null to indicate "don't
* care".
* @param logger The expected logger name. Use null to indicate
* "don't care".
* @param message The expected message. Use null to indicate
* "don't care".
* @param location The expected location. Use null to indicate
* "don't care".
*/
protected void assertLastEvent
(Level level,
String logger,
String message,
String location)
{
getLogAssist().assertLastEvent(level,logger,message,location);
}
/**
* Asserts that at least one of the receiver's collector's events
* matches the given expected level, logger name, message, and
* location. If the collector has no events, the assertion fails.
*
* @param level The expected level. Use null to indicate "don't
* care".
* @param logger The expected logger name. Use null to indicate
* "don't care".
* @param message The expected message. Use null to indicate
* "don't care".
* @param location The expected location. Use null to indicate
* "don't care".
*/
protected void assertSomeEvent
(Level level,
String logger,
String message,
String location)
{
getLogAssist().assertSomeEvent(level,logger,message,location);
}
/**
* Asserts that the receiver's collector contains a single event,
* and that its contents match the given expected level, logger
* name, message, and location. The collector's list of retained
* events is cleared upon success.
*
* @param level The expected level. Use null to indicate "don't
* care".
* @param logger The expected logger name. Use null to indicate
* "don't care".
* @param message The expected message. Use null to indicate
* "don't care".
* @param location The expected location. Use null to indicate
* "don't care".
*/
protected void assertSingleEvent
(Level level,
String logger,
String message,
String location)
{
getLogAssist().assertSingleEvent(level,logger,message,location);
}
}