package com.flextrade.jfixture.behaviours.tracing; import com.flextrade.jfixture.SpecimenBuilder; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import static org.junit.Assert.assertSame; import static org.junit.Assert.assertTrue; public class TestTracingBehaviour { private TracingBehaviour behaviour; @Mock private Appendable mockAppendable; @Mock private SpecimenBuilder mockSpecimenBuilder; @Mock private TracingStrategy mockStrategy; @Before public void initialise() { MockitoAnnotations.initMocks(this); this.behaviour = new TracingBehaviour(this.mockStrategy, this.mockAppendable); } @Test(expected = IllegalArgumentException.class) public void null_appendable_throws_exception() { this.behaviour = new TracingBehaviour(this.mockStrategy, null); } @Test(expected = IllegalArgumentException.class) public void null_strategy_throws_exception() { this.behaviour = new TracingBehaviour(null, this.mockAppendable); } @Test(expected = IllegalArgumentException.class) public void null_builder_throws_exception() { this.behaviour.transform(null); } @Test public void transform_returns_specimen_tracer() { SpecimenBuilder transformed = this.behaviour.transform(this.mockSpecimenBuilder); assertTrue(transformed instanceof SpecimenTracer); } @Test public void transform_returns_specimen_tracer_with_correct_appendable() { SpecimenTracer tracer = (SpecimenTracer) this.behaviour.transform(this.mockSpecimenBuilder); assertSame(this.mockAppendable, tracer.getTraceWriter()); } }