package uws.service.log;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import java.io.ByteArrayOutputStream;
import java.io.OutputStream;
import org.junit.Test;
import uws.service.log.UWSLog.LogLevel;
public class TestDefaultUWSLog {
@Test
public void testCanLog(){
OutputStream output = new ByteArrayOutputStream();
DefaultUWSLog logger = new DefaultUWSLog(output);
// Default value = DEBUG => ALL MESSAGES CAN BE LOGGED
assertEquals(LogLevel.DEBUG, logger.getMinLogLevel());
for(LogLevel ll : LogLevel.values())
assertTrue(logger.canLog(ll));
// Test: INFO => ALL EXCEPT DEBUG CAN BE LOGGED
logger.setMinLogLevel(LogLevel.INFO);
assertEquals(LogLevel.INFO, logger.getMinLogLevel());
assertFalse(logger.canLog(LogLevel.DEBUG));
assertTrue(logger.canLog(LogLevel.INFO));
assertTrue(logger.canLog(LogLevel.WARNING));
assertTrue(logger.canLog(LogLevel.ERROR));
assertTrue(logger.canLog(LogLevel.FATAL));
// Test: WARNING => ALL EXCEPT DEBUG AND INFO CAN BE LOGGED
logger.setMinLogLevel(LogLevel.WARNING);
assertEquals(LogLevel.WARNING, logger.getMinLogLevel());
assertFalse(logger.canLog(LogLevel.DEBUG));
assertFalse(logger.canLog(LogLevel.INFO));
assertTrue(logger.canLog(LogLevel.WARNING));
assertTrue(logger.canLog(LogLevel.ERROR));
assertTrue(logger.canLog(LogLevel.FATAL));
// Test: ERROR => ONLY ERROR AND FATAL CAN BE LOGGED
logger.setMinLogLevel(LogLevel.ERROR);
assertEquals(LogLevel.ERROR, logger.getMinLogLevel());
assertFalse(logger.canLog(LogLevel.DEBUG));
assertFalse(logger.canLog(LogLevel.INFO));
assertFalse(logger.canLog(LogLevel.WARNING));
assertTrue(logger.canLog(LogLevel.ERROR));
assertTrue(logger.canLog(LogLevel.FATAL));
// Test: FATAL => ONLY FATAL CAN BE LOGGED
logger.setMinLogLevel(LogLevel.FATAL);
assertEquals(LogLevel.FATAL, logger.getMinLogLevel());
assertFalse(logger.canLog(LogLevel.DEBUG));
assertFalse(logger.canLog(LogLevel.INFO));
assertFalse(logger.canLog(LogLevel.WARNING));
assertFalse(logger.canLog(LogLevel.ERROR));
assertTrue(logger.canLog(LogLevel.FATAL));
}
}