예제 #1
0
        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");
        }
예제 #2
0
        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()));
        }
예제 #3
0
        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);
        }
예제 #4
0
        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);
        }
예제 #5
0
        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
        }
예제 #6
0
        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);
        }