@Test public void shouldCloseBothStreams() { idAndVersionStreamVerifier.verify( primaryStream, secondayStream, idAndVersionStreamVerifierListener); verify(primaryStream).close(); verify(secondayStream).close(); }
@Test public void shouldNotReportErrorsIfStreamsAreEqual() { idAndVersionStreamVerifier.verify( streamOf(item(1), item(2), item(3)), streamOf(item(1), item(2), item(3)), idAndVersionStreamVerifierListener); verifyZeroInteractions(idAndVersionStreamVerifierListener); }
@Test public void shouldReportMissingValuesIfPrimaryStreamIsEmpty() { idAndVersionStreamVerifier.verify( streamOf(), streamOf(item(1), item(2)), idAndVersionStreamVerifierListener); verify(idAndVersionStreamVerifierListener) .onMissingInPrimaryStream(argThat(hasIdAndVersion("1", 1))); verify(idAndVersionStreamVerifierListener) .onMissingInPrimaryStream(argThat(hasIdAndVersion("2", 2))); verifyNoMoreInteractions(idAndVersionStreamVerifierListener); }
@Test public void shouldReportMismatchedAtEndOfStream() { idAndVersionStreamVerifier.verify( streamOf(item(1), item(2), item("3", 55)), streamOf(item(1), item(2), item("3", 33)), idAndVersionStreamVerifierListener); verify(idAndVersionStreamVerifierListener) .onVersionMisMatch(argThat(hasIdAndVersion("3", 55)), argThat(hasIdAndVersion("3", 33))); verifyNoMoreInteractions(idAndVersionStreamVerifierListener); }
@Test public void shouldReportVersionMisMatches() { idAndVersionStreamVerifier.verify( streamOf(item(1), item("2", 2), item(3), item(4)), streamOf(item(1), item("2", 5), item(3), item(4)), idAndVersionStreamVerifierListener); verify(idAndVersionStreamVerifierListener) .onVersionMisMatch(argThat(hasIdAndVersion("2", 2)), argThat(hasIdAndVersion("2", 5))); verifyNoMoreInteractions(idAndVersionStreamVerifierListener); }
@Test public void shouldReportMissingItemsInTheMiddleOfThePrimaryStream() { idAndVersionStreamVerifier.verify( streamOf(item(1), item(3), item(4)), streamOf(item(1), item(2), item(3), item(4)), idAndVersionStreamVerifierListener); verify(idAndVersionStreamVerifierListener) .onMissingInPrimaryStream(argThat(hasIdAndVersion("2", 2))); verifyNoMoreInteractions(idAndVersionStreamVerifierListener); }
@Test public void shouldReportMissingItemsAtTheStartOfTheSecondaryStream() { idAndVersionStreamVerifier.verify( streamOf(item(1), item(2), item(3), item(4)), streamOf(item(2), item(3), item(4)), idAndVersionStreamVerifierListener); verify(idAndVersionStreamVerifierListener) .onMissingInSecondaryStream(argThat(hasIdAndVersion("1", 1))); verifyNoMoreInteractions(idAndVersionStreamVerifierListener); }
@Test public void shouldCloseSecondaryWhenPrimaryCloseThrowsException() { doThrow(new RuntimeException()).when(primaryStream).close(); try { idAndVersionStreamVerifier.verify( primaryStream, secondayStream, idAndVersionStreamVerifierListener); } catch (RuntimeException e) { // Expected } verify(secondayStream).close(); }
@Test public void shouldReportMismatchIfPreceededByMissingItem() { idAndVersionStreamVerifier.verify( streamOf(item(1), item("2", 2), item(3), item(4)), streamOf(item(1), item("3", 42), item(4)), idAndVersionStreamVerifierListener); verify(idAndVersionStreamVerifierListener) .onMissingInSecondaryStream(argThat(hasIdAndVersion("2", 2))); verify(idAndVersionStreamVerifierListener) .onVersionMisMatch(argThat(hasIdAndVersion("3", 3)), argThat(hasIdAndVersion("3", 42))); verifyNoMoreInteractions(idAndVersionStreamVerifierListener); }
@Test public void shouldNotReportErrorsIfStreamsAreEmpty() { idAndVersionStreamVerifier.verify(streamOf(), streamOf(), idAndVersionStreamVerifierListener); verifyZeroInteractions(idAndVersionStreamVerifierListener); }