/**
* Logback: the reliable, generic, fast and flexible logging framework.
* Copyright (C) 1999-2013, QOS.ch. All rights reserved.
*
* This program and the accompanying materials are dual-licensed under
* either the terms of the Eclipse Public License v1.0 as published by
* the Eclipse Foundation
*
* or (per the licensee's choosing)
*
* under the terms of the GNU Lesser General Public License version 2.1
* as published by the Free Software Foundation.
*/
package ch.qos.logback.core;
import static ch.qos.logback.core.BasicStatusManager.MAX_HEADER_COUNT;
import static ch.qos.logback.core.BasicStatusManager.TAIL_SIZE;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import java.util.ArrayList;
import java.util.List;
import ch.qos.logback.core.status.OnConsoleStatusListener;
import ch.qos.logback.core.status.StatusListener;
import org.junit.Test;
import ch.qos.logback.core.status.ErrorStatus;
import ch.qos.logback.core.status.Status;
public class BasicStatusManagerTest {
BasicStatusManager bsm = new BasicStatusManager();
@Test
public void smoke() {
bsm.add(new ErrorStatus("hello", this));
assertEquals(Status.ERROR, bsm.getLevel());
List<Status> statusList = bsm.getCopyOfStatusList();
assertNotNull(statusList);
assertEquals(1, statusList.size());
assertEquals("hello", statusList.get(0).getMessage());
}
@Test
public void many() {
int margin = 300;
int len = MAX_HEADER_COUNT + TAIL_SIZE + margin;
for (int i = 0; i < len; i++) {
bsm.add(new ErrorStatus("" + i, this));
}
List<Status> statusList = bsm.getCopyOfStatusList();
assertNotNull(statusList);
assertEquals(MAX_HEADER_COUNT + TAIL_SIZE, statusList.size());
List<Status> witness = new ArrayList<Status>();
for (int i = 0; i < MAX_HEADER_COUNT; i++) {
witness.add(new ErrorStatus("" + i, this));
}
for (int i = 0; i < TAIL_SIZE; i++) {
witness.add(new ErrorStatus("" + (MAX_HEADER_COUNT + margin + i), this));
}
assertEquals(witness, statusList);
}
@Test
public void duplicateInstallationsOfOnConsoleListener() {
OnConsoleStatusListener sl0 = new OnConsoleStatusListener();
sl0.start();
OnConsoleStatusListener sl1 = new OnConsoleStatusListener();
sl1.start();
bsm.add(sl0);
{
List<StatusListener> listeners = bsm.getCopyOfStatusListenerList();
assertEquals(1, listeners.size());
}
bsm.add(sl1);
{
List<StatusListener> listeners = bsm.getCopyOfStatusListenerList();
assertEquals(1, listeners.size());
}
}
}