Add CompositeAppender.compose(:Appender[]) and CompositeAppender.compose(:Iterable<Appender>) methods to compose an array or Iterable of Appenders.

Resolves gh-73.
This commit is contained in:
John Blum
2020-02-19 19:12:18 -08:00
parent 7fe4c41fc9
commit f5918498c9
2 changed files with 125 additions and 0 deletions

View File

@@ -23,6 +23,9 @@ import static org.mockito.Mockito.never;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import java.util.Arrays;
import java.util.Collections;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
@@ -77,6 +80,78 @@ public class CompositeAppenderUnitTests {
assertThat(composite.isStarted()).isTrue();
}
@Test
public void composeAppenderArray() {
Appender mockAppenderOne = mock(Appender.class);
Appender mockAppenderTwo = mock(Appender.class);
Appender mockAppenderThree = mock(Appender.class);
Appender composite = CompositeAppender.compose(mockAppenderOne, mockAppenderTwo, mockAppenderThree);
assertThat(composite).isInstanceOf(CompositeAppender.class);
Appender appenderOne = ((CompositeAppender) composite).getAppenderOne();
Appender appenderTwo = ((CompositeAppender) composite).getAppenderTwo();
assertThat(appenderOne).isInstanceOf(CompositeAppender.class);
assertThat(appenderTwo).isEqualTo(mockAppenderThree);
assertThat(((CompositeAppender) appenderOne).getAppenderOne()).isEqualTo(mockAppenderOne);
assertThat(((CompositeAppender) appenderOne).getAppenderTwo()).isEqualTo(mockAppenderTwo);
}
@Test
public void composeAppenderArrayWithOneAppender() {
assertThat(CompositeAppender.compose(this.mockAppenderOne)).isSameAs(this.mockAppenderOne);
}
@Test
public void composeAppenderArrayWithZeroAppenders() {
assertThat(CompositeAppender.compose()).isNull();
}
@Test
public void composeAppenderArrayIsNullSafe() {
assertThat(CompositeAppender.compose((Appender[]) null)).isNull();
}
@Test
public void composeAppenderIterable() {
Appender mockAppenderOne = mock(Appender.class);
Appender mockAppenderTwo = mock(Appender.class);
Appender mockAppenderThree = mock(Appender.class);
Appender composite =
CompositeAppender.compose(Arrays.asList(mockAppenderOne, mockAppenderTwo, mockAppenderThree));
assertThat(composite).isInstanceOf(CompositeAppender.class);
Appender appenderOne = ((CompositeAppender) composite).getAppenderOne();
Appender appenderTwo = ((CompositeAppender) composite).getAppenderTwo();
assertThat(appenderOne).isInstanceOf(CompositeAppender.class);
assertThat(appenderTwo).isEqualTo(mockAppenderThree);
assertThat(((CompositeAppender) appenderOne).getAppenderOne()).isEqualTo(mockAppenderOne);
assertThat(((CompositeAppender) appenderOne).getAppenderTwo()).isEqualTo(mockAppenderTwo);
}
@Test
public void composeAppenderIterableWithOneAppender() {
assertThat(CompositeAppender.compose(Collections.singletonList(this.mockAppenderTwo)))
.isSameAs(this.mockAppenderTwo);
}
@Test
public void composeAppenderIterableWithZeroAppenders() {
assertThat(CompositeAppender.compose(Collections.emptyList())).isNull();
}
@Test
public void composeAppenderIterableIsNullSafe() {
assertThat(CompositeAppender.compose((Iterable<Appender<Object>>) null)).isNull();
}
@Test
public void setContextConfiguresContextOnCompositeAppenderAndComposedAppenders() {