Exemplo n.º 1
0
        public void EffectTriggerEffects()
        {
            int MULTI_DURATION = 3;
            var effectTrigger  = new EffectTrigger <EffectArgs>();

            var effect1 = new IntEffect("Int Effect 1", 1);
            var effect2 = new IntEffect("Int Effect 3", MULTI_DURATION);

            var effectInf = new IntEffect("Int Effect Inf", IntEffect.INFINITE);

            effectTrigger.Add(effect2);
            effectTrigger.TriggerEffects(null);             // Test with null arguments
            Assert.AreEqual(1, effectTrigger.Effects.Count);
            Assert.AreEqual(MULTI_DURATION - 1, effectTrigger.Effects[0].Duration);
            Assert.AreEqual(1, effect1.Duration);

            effectTrigger.Add(effect1);
            effectTrigger.Add(effectInf);
            Assert.AreEqual(3, effectTrigger.Effects.Count);

            effectTrigger.TriggerEffects(null);
            Assert.AreEqual(2, effectTrigger.Effects.Count);
            Assert.AreEqual(MULTI_DURATION - 2, effectTrigger.Effects[0].Duration);
            Assert.AreEqual(IntEffect.INFINITE, effectTrigger.Effects[1].Duration);

            var secEffectTrigger = new EffectTrigger <EffectArgs>();
            var testEffect       = new IntEffect("Int effect dummy", 1);
            var cancelingEffect  = new CancelingIntEffect("Int effect 3", 1);

            secEffectTrigger.Add(cancelingEffect);
            secEffectTrigger.Add(testEffect);
            Assert.AreEqual(2, secEffectTrigger.Effects.Count);

            secEffectTrigger.TriggerEffects(new EffectArgs());
            Assert.AreEqual(1, secEffectTrigger.Effects.Count);
            Assert.AreEqual(1, secEffectTrigger.Effects[0].Duration);             // Must have cancelled
        }
Exemplo n.º 2
0
        public void EffectTriggerEffects()
        {
            const int multiDuration = 3;
            var       effectTrigger = new EffectTrigger <EffectArgs>();

            var effect1 = new IntEffect("Int Effect 1", 1);
            var effect2 = new IntEffect("Int Effect 3", multiDuration);

            var effectInf = new IntEffect("Int Effect Inf", IntEffect.Infinite);

            effectTrigger.Add(effect2);
            effectTrigger.TriggerEffects(null); // Test with null arguments
            Assert.Equal(1, effectTrigger.Effects.Count);
            Assert.Equal(multiDuration - 1, effectTrigger.Effects[0].Duration);
            Assert.Equal(1, effect1.Duration);

            effectTrigger.Add(effect1);
            effectTrigger.Add(effectInf);
            Assert.Equal(3, effectTrigger.Effects.Count);

            effectTrigger.TriggerEffects(null);
            Assert.Equal(2, effectTrigger.Effects.Count);
            Assert.Equal(multiDuration - 2, effectTrigger.Effects[0].Duration);
            Assert.Equal(IntEffect.Infinite, effectTrigger.Effects[1].Duration);

            var secEffectTrigger = new EffectTrigger <EffectArgs>();
            var testEffect       = new IntEffect("Int effect dummy", 1);
            var cancelingEffect  = new CancelingIntEffect("Int effect 3", 1);

            secEffectTrigger.Add(cancelingEffect);
            secEffectTrigger.Add(testEffect);
            Assert.Equal(2, secEffectTrigger.Effects.Count);

            secEffectTrigger.TriggerEffects(new EffectArgs());
            Assert.Equal(1, secEffectTrigger.Effects.Count);
            Assert.Equal(1, secEffectTrigger.Effects[0].Duration); // Must have cancelled
        }
Exemplo n.º 3
0
        public static TimeSpan TestEffectManagerNoExpiredHandler(int numEffects, int iterations)
        {
            var s = new Stopwatch();

            // For caching
            var myEffectManager = new EffectTrigger <EffectArgs>();

            foreach (int i in Enumerable.Range(0, numEffects))
            {
                myEffectManager.Add(new MyEffect(iterations + 1));
            }

            myEffectManager.TriggerEffects(new EffectArgs());

            s.Start();
            for (int i = 0; i < iterations; i++)
            {
                myEffectManager.TriggerEffects(new EffectArgs());
            }
            s.Stop();

            return(s.Elapsed);
        }