public void UpdateBitEffectDurationOnAdd() { int bits = 100; BitEffect bitEffect = new BitEffect("fish", "test", bits) { }; Assert.Equal(0, bitEffect.Milliseconds); effectQueue.EnqueueBitEffect(bitEffect); Assert.Equal(bits * settings.bitsToSecRatio * 1000, bitEffect.Milliseconds); }
/*public EffectQueue(Settings settings) * { * this.settings = settings; * //queue = new LinkedList<Effect>(); * }*/ public void EnqueueSubEffect(SubEffect se) { se.Milliseconds = settings.subEffectSec * 1000; int months = se.Months; string subEffect = settings.subEffect1; if (months < 3) { subEffect = settings.subEffect1; } else if (months >= 3 && months < 6) { subEffect = settings.subEffect3; } else if (months >= 6) { subEffect = settings.subEffect6; } se.EffectName = subEffect; Effect firstSubEffect = this.FirstOrDefault(e => e.EffectType == EffectType.SUB); if (firstSubEffect != null) { // A sub effect is already in the queue se.Milliseconds = 1000; //firstSubEffect.Milliseconds += 1000; } BitEffect firstBitEffect = (BitEffect)this.FirstOrDefault(e => e.EffectType == EffectType.BITS); if (firstBitEffect != null) { // A bit effect is already in the queue LinkedListNode <Effect> seNode = AddBefore(Find(firstBitEffect), se); if (firstBitEffect.Running) { //Effect lastSubEffect = this.LastOrDefault(e => e.EffectType == EffectType.SUB); firstBitEffect.Milliseconds = firstBitEffect.RemainingMilliseconds; firstBitEffect.Running = false; firstBitEffect.Continued = true; Remove(firstBitEffect); AddAfter(seNode, firstBitEffect); } } else { AddLast(se); } }
public void AddSubEffectsBeforeBitEffects() { BitEffect bitEffect = new BitEffect("fish", "test", 100); effectQueue.EnqueueBitEffect(bitEffect); SubEffect subEffect = new SubEffect(1, SubscriptionPlan.Tier1, "test"); effectQueue.EnqueueSubEffect(subEffect); BitEffect bitEffect2 = new BitEffect("fish", "test2", 100); effectQueue.EnqueueBitEffect(bitEffect2); Assert.Equal(effectQueue.First.Value, subEffect); }
public void AddBitEffectsAfterSubEffects() { SubEffect subEffect = new SubEffect(1, SubscriptionPlan.Tier1, "test"); effectQueue.EnqueueSubEffect(subEffect); BitEffect bitEffect = new BitEffect("fish", "test", 100); effectQueue.EnqueueBitEffect(bitEffect); SubEffect subEffect2 = new SubEffect(2, SubscriptionPlan.Tier1, "test2"); effectQueue.EnqueueSubEffect(subEffect2); Assert.Equal(effectQueue.Last.Value, bitEffect); }
public void AddTwoBitEffectsInCorrectOrder() { BitEffect bitEffect = new BitEffect("fish", "test", 100); effectQueue.EnqueueBitEffect(bitEffect); BitEffect bitEffect2 = new BitEffect("fish", "test", 100); effectQueue.EnqueueBitEffect(bitEffect2); LinkedListNode <Effect> first = effectQueue.First; Assert.Equal(first.Value, bitEffect); LinkedListNode <Effect> second = first.Next; Assert.Equal(second.Value, bitEffect2); }
public void SetBitEffectAsContinuedIfResumedAfterSubEffect() { BitEffect bitEffect = new BitEffect("fish", "test", 100); bitEffect.Running = true; effectQueue.EnqueueBitEffect(bitEffect); Assert.False(bitEffect.Continued); SubEffect subEffect = new SubEffect(2, SubscriptionPlan.Tier1, "test"); effectQueue.EnqueueSubEffect(subEffect); BitEffect queueEffect = (BitEffect)effectQueue.First(e => e.EffectType == EffectType.BITS); Assert.True(queueEffect.Continued); }
public void HandleSubEffectWithRunningBitEffect() { BitEffect bitEffect = new BitEffect("fish", "test", 100); effectQueue.EnqueueBitEffect(bitEffect); int duration = bitEffect.Milliseconds; // 60000 bitEffect.Begin(); Assert.True(bitEffect.Running); SubEffect subEffect = new SubEffect(1, SubscriptionPlan.Tier1, "test"); effectQueue.EnqueueSubEffect(subEffect); LinkedListNode <Effect> sub = effectQueue.First; Assert.Equal(sub.Value, subEffect); Assert.Equal(sub.Next.Value, bitEffect); Assert.InRange(bitEffect.Milliseconds, bitEffect.RemainingMilliseconds, duration + sub.Value.Milliseconds); }
public void EnqueueBitEffect(BitEffect bitEffect) { bitEffect.Milliseconds = (int)(bitEffect.BitsUsed * settings.bitsToSecRatio * 1000); AddLast(bitEffect); }