public void BroadcastProcessor_OneProcessorThrows() { bool start1Called = false; bool start2Called = false; bool end1Called = false; bool end2Called = false; var processor1 = new TestActivityProcessor( ss => { start1Called = true; Assert.False(start2Called); Assert.False(end1Called); Assert.False(end2Called); throw new Exception("Start exception"); }, se => { end1Called = true; Assert.True(start1Called); Assert.True(start2Called); Assert.False(end2Called); throw new Exception("End exception"); }); var processor2 = new TestActivityProcessor( ss => { start2Called = true; Assert.True(start1Called); Assert.False(end1Called); Assert.False(end2Called); }, se => { end2Called = true; Assert.True(start1Called); Assert.True(start2Called); Assert.True(end1Called); }); var broadcastProcessor = new BroadcastActivityProcessor(new[] { processor1, processor2 }); var activity = new Activity("somename"); broadcastProcessor.OnStart(activity); Assert.True(start1Called); Assert.True(start2Called); broadcastProcessor.OnEnd(activity); Assert.True(end1Called); Assert.True(end2Called); }
public void BroadcastProcessor_CallsAllProcessorSequentially() { bool start1Called = false; bool start2Called = false; bool end1Called = false; bool end2Called = false; var processor1 = new TestActivityProcessor( ss => { start1Called = true; Assert.False(start2Called); Assert.False(end1Called); Assert.False(end2Called); }, se => { end1Called = true; Assert.True(start1Called); Assert.True(start2Called); Assert.False(end2Called); }); var processor2 = new TestActivityProcessor( ss => { start2Called = true; Assert.True(start1Called); Assert.False(end1Called); Assert.False(end2Called); }, se => { end2Called = true; Assert.True(start1Called); Assert.True(start2Called); Assert.True(end1Called); }); var broadcastProcessor = new BroadcastActivityProcessor(new[] { processor1, processor2 }); var activity = new Activity("somename"); broadcastProcessor.OnStart(activity); Assert.True(start1Called); Assert.True(start2Called); broadcastProcessor.OnEnd(activity); Assert.True(end1Called); Assert.True(end2Called); }