@Test public void developerEventsAreDistributedToAllDevelopers() { cut.unrecoverableProgrammingError(someMessage, someException); verify(dev1).unrecoverableProgrammingError(someMessage, someException); verify(dev2).unrecoverableProgrammingError(someMessage, someException); verifyNoMoreInteractions(trader1, trader2, admin1, admin2, dev1, dev2); }
@Override public void unrecoverableProgrammingError(final String message, final Throwable error) { for (final DeveloperNotifier dev : developers) { dev.unrecoverableProgrammingError(message, error); } }
CombiningNotifier implements CombinedNotifier { @Override public void unrecoverableProgrammingError(final String message, final Throwable error) { for (final DeveloperNotifier dev : developers) { dev.unrecoverableProgrammingError(message, error); } } }
CombiningNotifier implements CombinedNotifier { @Override public void unrecoverableProgrammingError(final String message, final Throwable error) { for (final DeveloperNotifier dev : developers) { dev.unrecoverableProgrammingError(message, error); } } CombiningNotifier(final Iterable<TraderNotifier> traders,
            final Iterable<AdmininstratorNotifier> administators, final Iterable<DeveloperNotifier> developers); }
CombiningNotifier implements CombinedNotifier { @Override public void unrecoverableProgrammingError(final String message, final Throwable error) { for (final DeveloperNotifier dev : developers) { dev.unrecoverableProgrammingError(message, error); } } CombiningNotifier(final Iterable<TraderNotifier> traders,
            final Iterable<AdmininstratorNotifier> administators, final Iterable<DeveloperNotifier> developers); @Override void tradeCompleted(final CompletedTrade trade); @Override void unrecoverableError(final String message, final Throwable cause); @Override void unexpectedEvent(final String message, final Throwable cause); @Override void unexpectedEvent(final String message); @Override void informalEvent(final String message); @Override void unrecoverableProgrammingError(final String message, final Throwable error); }
CombiningNotifier implements CombinedNotifier { @Override public void unrecoverableProgrammingError(final String message, final Throwable error) { for (final DeveloperNotifier dev : developers) { dev.unrecoverableProgrammingError(message, error); } } CombiningNotifier(final Iterable<TraderNotifier> traders,
            final Iterable<AdmininstratorNotifier> administators, final Iterable<DeveloperNotifier> developers); @Override void tradeCompleted(final CompletedTrade trade); @Override void unrecoverableError(final String message, final Throwable cause); @Override void unexpectedEvent(final String message, final Throwable cause); @Override void unexpectedEvent(final String message); @Override void informalEvent(final String message); @Override void unrecoverableProgrammingError(final String message, final Throwable error);  }