package org.sef4j.callstack.event.impl;
import java.util.HashMap;
import java.util.Map;
import org.junit.Test;
import org.mockito.Mockito;
import org.sef4j.callstack.event.StackEvent.PopStackEvent;
import org.sef4j.callstack.event.StackEvent.PushStackEvent;
import org.sef4j.callstack.event.StackEventTstUtils;
import org.sef4j.callstack.stats.ThreadTimeUtils;
import org.slf4j.Logger;
public class Slf4jLoggerAdapterStackEventVisitorTest {
private Logger logger = Mockito.mock(Logger.class);
private Slf4jLoggerAdapterStackEventVisitor sut = new Slf4jLoggerAdapterStackEventVisitor(logger);
@Test
public void testAcceptPushStackEvent() {
// Prepare
Mockito.doNothing().when(logger).info("> foo");
// Perform
sut.acceptPushStackEvent(StackEventTstUtils.newPush("foo"));
// Post-check
Mockito.verify(logger).info("> foo");
}
@Test
public void testAcceptPushStackEvent_params() {
// Prepare
Map<String, Object> params = new HashMap<String,Object>();
params.put("param1", 123);
params.put("param2", 456);
Map<String, Object> props = new HashMap<String,Object>();
props.put("prop1", 789);
props.put("prop2", 890);
PushStackEvent event = new PushStackEvent("foo",
params , props, // params, props
0, 0, 0, // <= start times
0);
Mockito.doNothing().when(logger).info("> foo [prop2=890, prop1=789] (param1=123, param2=456)");
// Perform
sut.acceptPushStackEvent(event);
// Post-check
Mockito.verify(logger).info("> foo [prop2=890, prop1=789] (param1=123, param2=456)");
}
@Test
public void testAcceptPopStackEvent() {
// Prepare
long elapsedTimeNanos = ThreadTimeUtils.approxMillisToNanos(10);
PopStackEvent event = new PopStackEvent("foo",
elapsedTimeNanos,
0, 0, 0); // <= end times
Mockito.doNothing().when(logger).info("< foo, took 10 ms");
// Perform
sut.acceptPopStackEvent(event);
// Post-check
Mockito.verify(logger).info("< foo, took 10 ms");
}
}