public void ShouldStopBecauseOfExceptionOnAnotherThread() { var handshake = Substitute.For <IStormCommandIn>(); var reader = Substitute.For <IStormReader>(); reader.ReadInitialHandshakeMessage().Returns(handshake); reader.ReadCommand().Returns(new StormTuple(Substitute.For <IProtocolReaderFormat>(), 1, "1", "2", 1, new object[0])); var writer = Substitute.For <IBoltWriter>(); var subjectUnderTest = new TestBolt(reader, writer); new Thread(() => { subjectUnderTest.Started.WaitOne(); throw new Exception(); }) { IsBackground = true }.Start(); subjectUnderTest.Run(); Assert.IsTrue(subjectUnderTest.ExceptionCalled); }
public void ShouldInitialiseThenReadCommandThenEndBecauseOfException() { var handshake = Substitute.For <IStormCommandIn>(); var command = Substitute.For <IStormCommandIn>(); var reader = Substitute.For <IStormReader>(); reader.ReadInitialHandshakeMessage().Returns(handshake); reader.ReadCommand().Returns(_ => command, _ => { throw new Exception(); }); var writer = Substitute.For <IBoltWriter>(); var subjectUnderTest = new TestBolt(reader, writer); subjectUnderTest.Run(); handshake.Received().BeProcessesBy(subjectUnderTest); command.Received().BeProcessesBy(subjectUnderTest); writer.ReceivedWithAnyArgs().LogError(""); Assert.IsTrue(subjectUnderTest.ExceptionCalled); }