public void RaiseWithAnEventHandlerThatThrowsAnException() { OneThirstyDude dude = new OneThirstyDude(); Soda bru = new Soda(); bru.Pop += new PopHandler(dude.HandlePopWithException); Assert.Throws <FormatException>(() => bru.OnPop("Iron Brew", new EventRaiser()), "Iron Brew"); }
public void RaiseWithBadNumberOfArguments() { OneThirstyDude dude = new OneThirstyDude(); Soda bru = new Soda(); bru.Pop += new PopHandler(dude.HandlePop); Assert.Throws <TargetParameterCountException>(() => bru.OnPopWithBadNumberOfArguments("Iron Brew", new EventRaiser())); }
public void RaiseWithNullEvent() { OneThirstyDude dude = new OneThirstyDude(); Soda bru = new Soda(); bru.Pop += new PopHandler(dude.HandlePop); bru.OnPopWithNullEvent("Iron Brew", new EventRaiser()); Assert.AreEqual(string.Empty, dude.Soda); }
public void Raise() { OneThirstyDude dude = new OneThirstyDude(); Soda bru = new Soda(); bru.Pop += new PopHandler(dude.HandlePop); bru.OnPop("Iron Brew", new EventRaiser()); Assert.AreEqual("Iron Brew", dude.Soda); }
public void RaiseSwallowsExceptionRaisedByHandlers() { OneThirstyDude dude = new OneThirstyDude(); Soda bru = new Soda(); bru.Pop += new PopHandler(dude.HandlePopWithException); bru.OnPop("Iron Brew", new DefensiveEventRaiser()); Assert.AreEqual("Iron Brew", dude.Soda); // should have got through before exception was thrown }
public void RaiseSwallowsExceptionRaisedByHandlerButCallsAllOtherHandlers() { bool firstCall = false; bool secondCall = false; bool thirdCall = false; OneThirstyDude dude = new OneThirstyDude(); Soda bru = new Soda(); bru.Pop += (sender, soda) => firstCall = true; bru.Pop += (sender, soda) => { secondCall = true; throw new Exception(); }; bru.Pop += (sender, soda) => { thirdCall = true; }; DefensiveEventRaiser eventRaiser = new DefensiveEventRaiser(); IEventExceptionsCollector exceptions = bru.OnPop("Iron Brew", eventRaiser); Assert.AreEqual(1, exceptions.Exceptions.Count); Assert.IsTrue(firstCall); Assert.IsTrue(secondCall); Assert.IsTrue(thirdCall); }