public void RaiseWithAnEventHandlerThatThrowsAnException () 
 {
     OneThirstyDude dude = new OneThirstyDude ();
     Soda bru = new Soda ();
     bru.Pop += new PopHandler (dude.HandlePopWithException);
     bru.OnPop ("Iron Brew", new EventRaiser ());
 }
 public void RaiseWithBadNumberOfArguments () 
 {
     OneThirstyDude dude = new OneThirstyDude ();
     Soda bru = new Soda ();
     bru.Pop += new PopHandler (dude.HandlePop);
     bru.OnPopWithBadNumberOfArguments ("Iron Brew", new EventRaiser ());
 }
 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 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 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 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);
        }