//Dstl (c) Crown Copyright 2017 package uk.gov.dstl.baleen.core.logging; import static org.junit.Assert.assertEquals; import org.junit.Test; import ch.qos.logback.classic.Level; import ch.qos.logback.classic.spi.LoggingEvent; import ch.qos.logback.core.spi.FilterReply; /** Tests for the{@link MinMaxFilter}. * * */ public class MinMaxFilterTest { protected MinMaxFilter create(Level min, Level max) { return new MinMaxFilter(min, max); } /** Test when the level is within the bounds (including at the edges). * */ @Test public void within() { assertNeutral(Level.INFO, Level.DEBUG, Level.ERROR); assertNeutral(Level.DEBUG, Level.DEBUG, Level.ERROR); assertNeutral(Level.ERROR, Level.DEBUG, Level.ERROR); assertNeutral(Level.WARN, Level.DEBUG, Level.ERROR); assertNeutral(Level.WARN, Level.WARN, Level.WARN); } /** Test when the level is outside the bounds. * */ @Test public void outside() { assertNeutral(Level.INFO, Level.INFO, Level.WARN); assertNeutral(Level.WARN, Level.INFO, Level.WARN); assertDeny(Level.DEBUG, Level.INFO, Level.WARN); assertDeny(Level.ERROR, Level.INFO, Level.WARN); } /** Test that nulls are handled correctly. * */ @Test public void nullLevels() { assertNeutral(Level.INFO, null, Level.WARN); assertDeny(Level.ERROR, null, Level.WARN); assertNeutral(Level.WARN, Level.INFO, null); assertDeny(Level.DEBUG, Level.INFO, null); assertDeny(null, null, null); } private void assertNeutral(Level level, Level min, Level max) { MinMaxFilter filter = create(min, max); LoggingEvent event = new LoggingEvent(); event.setLevel(level); assertEquals(FilterReply.NEUTRAL, filter.decide(event)); } private void assertDeny(Level level, Level min, Level max) { MinMaxFilter filter = create(min, max); LoggingEvent event = new LoggingEvent(); event.setLevel(level); assertEquals(FilterReply.DENY, filter.decide(event)); } }