package org.pitest.mutationtest.execute; import static org.junit.Assert.assertEquals; import static org.pitest.mutationtest.LocationMother.aMutationId; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import org.junit.Before; import org.junit.Test; import org.pitest.mutationtest.DetectionStatus; import org.pitest.mutationtest.MutationStatusTestPair; import org.pitest.mutationtest.engine.MutationIdentifier; import org.pitest.util.ExitCode; import org.pitest.util.Id; import org.pitest.util.SafeDataInputStream; public class DefaultReporterTest { private DefaultReporter testee; private ByteArrayOutputStream os; @Before public void setUp() { this.os = new ByteArrayOutputStream(); this.testee = new DefaultReporter(this.os); } @Test public void shouldSendMutationIdentifierToOutputStream() throws IOException { final MutationIdentifier mi = aMutationId().withIndex(0).withMutator("foo") .build(); this.testee.describe(mi); final SafeDataInputStream is = resultToStream(); assertEquals(Id.DESCRIBE, is.readByte()); assertEquals(is.read(MutationIdentifier.class), mi); } @Test public void shouldSendDetectionStatus() throws IOException { final MutationIdentifier mi = aMutationId().withIndex(0).withMutator("foo") .build(); final MutationStatusTestPair ms = new MutationStatusTestPair(2, DetectionStatus.KILLED, "foo"); this.testee.report(mi, ms); final SafeDataInputStream is = resultToStream(); assertEquals(Id.REPORT, is.readByte()); assertEquals(is.read(MutationIdentifier.class), mi); assertEquals(is.read(MutationStatusTestPair.class), ms); } private SafeDataInputStream resultToStream() { final SafeDataInputStream is = new SafeDataInputStream( new ByteArrayInputStream(this.os.toByteArray())); return is; } @Test public void shouldSendExitCode() { this.testee.done(ExitCode.TIMEOUT); final SafeDataInputStream is = resultToStream(); assertEquals(Id.DONE, is.readByte()); assertEquals(is.readInt(), ExitCode.TIMEOUT.getCode()); } }