public int EngineShouldRetrieveCorrectCollapseMultiplier(int level, int iterations)
        {
            var config      = new Configuration();
            var targetWheel = MainGameEngine.GetTargetWheel(level, config, false);

            var targetMultiplier = CollapsingBonusEngine.GetCollapseMultiplier(config.BonusConfig.Collapse.Multipliers, iterations);

            return(targetMultiplier);
        }
        public void EngineShouldCollapseBonusOnWinUpdate(int level)
        {
            var collapsingSpinResult = GenerateWinningCollapsingSpinResult(level);
            var collapsingBonus      = CollapsingBonusEngine.CreateCollapsingSpinBonus(collapsingSpinResult);

            collapsingBonus.UpdateBonus(collapsingSpinResult);

            Assert.IsTrue(collapsingBonus.SpinResult.Collapse);
        }
Exemplo n.º 3
0
        public void EngineShouldStartBonusOnCreateCollapsingBonusResult(int level)
        {
            var collapsingSpinResult = GenerateCollapsingSpinResult(level);
            var collapsingBonus      = CollapsingBonusEngine.CreateCollapsingSpinBonus(collapsingSpinResult);

            collapsingBonus.UpdateBonus(collapsingSpinResult);

            Assert.IsTrue(collapsingBonus.IsStarted);
        }
        public void EngineShouldCreateCollapsingBonusResultWithSameSpinTransactionId(int level)
        {
            var collapsingSpinResult = GenerateWinningCollapsingSpinResult(level);
            var collapsingBonus      = CollapsingBonusEngine.CreateCollapsingSpinBonus(collapsingSpinResult);

            collapsingBonus.UpdateBonus(collapsingSpinResult);
            var collapsingBonusResult = CollapsingBonusEngine.CreateCollapsingBonusResult(collapsingBonus, collapsingSpinResult);

            Assert.IsTrue(collapsingBonusResult.SpinTransactionId == collapsingSpinResult.SpinTransactionId);
        }
        public void EngineShouldContinueCollapsingBonusResultOnWinSpin(int level)
        {
            var collapsingSpinResult = GenerateWinningCollapsingSpinResult(level);
            var collapsingBonus      = CollapsingBonusEngine.CreateCollapsingSpinBonus(collapsingSpinResult);

            collapsingBonus.UpdateBonus(collapsingSpinResult);
            var collapsingBonusResult = CollapsingBonusEngine.CreateCollapsingBonusResult(collapsingBonus, collapsingSpinResult);

            Assert.IsTrue(!collapsingBonusResult.IsCompleted);
        }
Exemplo n.º 6
0
        public void EngineShouldCreateCollapsingResultSameRoundId(int level)
        {
            var config = new Configuration();

            var spinResult           = GenerateWinningSpinResult(level);
            var targetWheel          = MainGameEngine.GetTargetWheel(level, config, spinResult.Wheel.ReelStripsId);
            var collapsingSpinResult = CollapsingBonusEngine.CreateCollapsingSpinResult(spinResult, targetWheel, config.Payline, config.MainGamePayTable);

            Assert.IsTrue(spinResult.RoundId == collapsingSpinResult.RoundId);
        }
        public void EngineShouldCreateCollapsingBonusResultWithSameGameResultAndBonus(int level)
        {
            var collapsingSpinResult = GenerateWinningCollapsingSpinResult(level);
            var collapsingBonus      = CollapsingBonusEngine.CreateCollapsingSpinBonus(collapsingSpinResult);

            collapsingBonus.UpdateBonus(collapsingSpinResult);
            var collapsingBonusResult = CollapsingBonusEngine.CreateCollapsingBonusResult(collapsingBonus, collapsingSpinResult);

            Assert.AreSame(collapsingBonusResult.Bonus, collapsingBonus);
        }
Exemplo n.º 8
0
        public void EngineShouldCreateCollapsingSpinBonusWithValidGuid(int level)
        {
            var spinResult           = GenerateWinningSpinResult(level);
            var collapsingSpinResult = GenerateWinningCollapsingSpinResult(level);

            var spinResultBonus           = CollapsingBonusEngine.CreateCollapsingSpinBonus(spinResult);
            var collapsingSpinResultBonus = CollapsingBonusEngine.CreateCollapsingSpinBonus(collapsingSpinResult);

            Assert.IsTrue(!string.IsNullOrWhiteSpace(spinResultBonus.Guid.ToString()));
            Assert.IsTrue(!string.IsNullOrWhiteSpace(collapsingSpinResultBonus.Guid.ToString()));
        }
Exemplo n.º 9
0
        public void EngineShouldCreateCollapsingSpinBonusWithTransactionId(int level)
        {
            var spinResult           = GenerateWinningSpinResult(level);
            var collapsingSpinResult = GenerateWinningCollapsingSpinResult(level);

            var spinResultBonus           = CollapsingBonusEngine.CreateCollapsingSpinBonus(spinResult);
            var collapsingSpinResultBonus = CollapsingBonusEngine.CreateCollapsingSpinBonus(collapsingSpinResult);

            Assert.IsTrue(spinResultBonus.SpinTransactionId == spinResult.TransactionId);
            Assert.IsTrue(collapsingSpinResultBonus.SpinTransactionId == collapsingSpinResult.TransactionId);
        }
        public void EngineShouldCreateBonusXElementOfCollapsingBonusResult(int level)
        {
            var collapsingSpinResult = GenerateWinningCollapsingSpinResult(level);
            var collapsingBonus      = CollapsingBonusEngine.CreateCollapsingSpinBonus(collapsingSpinResult);

            collapsingBonus.UpdateBonus(collapsingSpinResult);
            var collapsingBonusResult = CollapsingBonusEngine.CreateCollapsingBonusResult(collapsingBonus, collapsingSpinResult);

            var xElement = collapsingBonusResult.ToXElement();

            Assert.IsNotNull(xElement);
        }
        public void EngineShouldCreateBonusResponseXmlOfCollapsingBonusResult(int level)
        {
            var collapsingSpinResult = GenerateWinningCollapsingSpinResult(level);
            var collapsingBonus      = CollapsingBonusEngine.CreateCollapsingSpinBonus(collapsingSpinResult);

            collapsingBonus.UpdateBonus(collapsingSpinResult);
            var collapsingBonusResult = CollapsingBonusEngine.CreateCollapsingBonusResult(collapsingBonus, collapsingSpinResult);

            var responseXml = collapsingBonusResult.ToResponseXml(ResponseXmlFormat.History);

            Assert.IsNotNull(responseXml);
        }
        public void CollapsingSpinResultShouldHaveSameBonusDetailsOnResultUpdate(int level)
        {
            var collapsingSpinResult = GenerateWinningCollapsingSpinResult(level);
            var collapsingSpinBonus  = CollapsingBonusEngine.CreateCollapsingSpinBonus(collapsingSpinResult);

            collapsingSpinBonus.UpdateBonus(collapsingSpinResult);
            collapsingSpinResult.UpdateBonus(collapsingSpinBonus);

            var isEqualBonusId   = collapsingSpinResult.BonusElement.Id == collapsingSpinBonus.Id;
            var isEqualBonusGuid = collapsingSpinResult.BonusElement.Value == collapsingSpinBonus.Guid.ToString("N");

            Assert.IsTrue(isEqualBonusId && isEqualBonusGuid);
        }
Exemplo n.º 13
0
        public static CollapsingSpinResult GenerateCollapsingSpinResult(int level)
        {
            var config               = new Configuration();
            var spinResult           = GenerateWinningSpinResult(level);
            var targetWheel          = MainGameEngine.GetTargetWheel(level, config, spinResult.Wheel.ReelStripsId);
            var collapsingSpinResult = CollapsingBonusEngine.CreateCollapsingSpinResult(
                spinResult,
                targetWheel,
                config.Payline,
                config.MainGamePayTable);

            return(collapsingSpinResult);
        }
Exemplo n.º 14
0
        public void EngineShouldCreateCollapsingResultSameRoundId(int level)
        {
            var config = new Configuration();

            var spinResult           = GenerateWinningSpinResult(level);
            var collapsingSpinResult = GenerateWinningCollapsingSpinResult(level);

            var spinResultCollapsingResult           = CollapsingBonusEngine.CreateCollapsingSpinResult(spinResult, config.Wheels[level], config.SymbolCollapsePairs, config.Payline, config.PayTable);
            var collapsingSpinResultCollapsingResult = CollapsingBonusEngine.CreateCollapsingSpinResult(collapsingSpinResult, config.Wheels[level], config.SymbolCollapsePairs, config.Payline, config.PayTable);

            Assert.IsTrue(spinResult.RoundId == spinResultCollapsingResult.RoundId);
            Assert.IsTrue(collapsingSpinResultCollapsingResult.RoundId == collapsingSpinResult.RoundId);
        }
Exemplo n.º 15
0
        public void EngineShouldCreateCollapsingSpinBonusWithGameResult(int level)
        {
            var spinResult           = GenerateWinningSpinResult(level);
            var collapsingSpinResult = GenerateWinningCollapsingSpinResult(level);

            var spinResultBonus           = CollapsingBonusEngine.CreateCollapsingSpinBonus(spinResult);
            var collapsingSpinResultBonus = CollapsingBonusEngine.CreateCollapsingSpinBonus(collapsingSpinResult);

            Assert.AreSame(spinResult, spinResultBonus.GameResult);
            Assert.AreSame(spinResult, spinResultBonus.SpinResult);
            Assert.AreSame(collapsingSpinResult, collapsingSpinResultBonus.GameResult);
            Assert.AreSame(collapsingSpinResult, collapsingSpinResultBonus.SpinResult);
        }
        public void EngineShouldRemoveCorrectWinPositions(string wheelString, int level)
        {
            var config              = new Configuration();
            var wheel               = new Wheel(Game.WheelWidth, Game.WheelHeight, wheelString.ToFormattedWheelString());
            var winPositions        = MainGameEngine.GenerateWinPositions(config.Payline, config.PayTable, wheel, 1, 1);
            var removedWinPositions = CollapsingBonusEngine.GetRemoveWinPositions(winPositions);

            foreach (var winPositionIndex in winPositions.Select((Value, Index) => new { Value, Index }))
            {
                var removedWinPosition = removedWinPositions.ElementAt(winPositionIndex.Index);

                Assert.AreEqual(winPositionIndex.Value.Line, removedWinPosition.Line);
            }
        }
Exemplo n.º 17
0
        public void EngineShouldRemoveCorrectWinPositionCount(string wheelString, int level)
        {
            var config       = new Configuration();
            var wheel        = new Wheel(Game.WheelWidth, Game.WheelHeight, wheelString);
            var winPositions = MainGameEngine.GenerateWinPositions(
                config.Payline,
                config.PayTable,
                wheel,
                1,
                Game.Lines,
                1);
            var removedWinPositions = CollapsingBonusEngine.GetRemoveWinPositions(winPositions);

            Assert.AreEqual(winPositions.Count, removedWinPositions.Count);
        }
Exemplo n.º 18
0
        public void EngineShouldRemoveCorrectWinPositionCount(string wheelString, int level)
        {
            var config       = new Configuration();
            var wheel        = new Wheel(Game.WheelWidth, Game.WheelHeight, wheelString.ToFormattedWheelString());
            var winPositions = MainGameEngine.GenerateWinPositions(
                config.Payline,
                config.PayTable,
                wheel,
                1,
                Game.Lines,
                config.BonusConfig.Collapse.Multipliers.First());
            var bonusPositions      = MainGameEngine.GenerateBonusPositions(wheel);
            var removedWinPositions = CollapsingBonusEngine.GetRemoveWinPositions(winPositions, bonusPositions);

            Assert.AreEqual(winPositions.Count + bonusPositions.Count, removedWinPositions.Count);
        }
Exemplo n.º 19
0
        public void EngineShouldCreateCollapsingResultSameRoundId(int level)
        {
            var config = new Configuration();

            var spinResult               = GenerateWinningFreeSpinResult(level);
            var referenceWheel           = MainGameEngine.GetTargetWheel(level, config, spinResult.Wheel.ReelStripsId);
            var freeSpinCollapsingResult = GenerateWinningFreeSpinCollapsingResult(level);
            var freeSpinBonus            = FreeSpinBonusEngine.CreateFreeSpinBonus(freeSpinCollapsingResult);

            freeSpinBonus.UpdateBonus(freeSpinCollapsingResult);

            var spinResultCollapsingResult = CollapsingBonusEngine.CreateCollapsingSpinResult(spinResult, referenceWheel, config.BonusConfig.FreeSpin.Multipliers, config.Payline, config.PayTable);
            var freeSpinCollapsingResultCollapsingResult = FreeSpinBonusEngine.CreateFreeSpinBonusResult(freeSpinBonus, freeSpinCollapsingResult);

            Assert.IsTrue(spinResult.RoundId == spinResultCollapsingResult.RoundId);
            Assert.IsTrue(freeSpinCollapsingResultCollapsingResult.RoundId == freeSpinCollapsingResult.RoundId);
        }
        public void EngineShouldGenerateCorrectCollapseAddItems(int level)
        {
            var config              = new Configuration();
            var spinResult          = GenerateWinningSpinResult(level);
            var referenceWheel      = MainGameEngine.GetTargetWheel(level, config);
            var removedWinPositions = CollapsingBonusEngine.GetRemoveWinPositions(spinResult.WinPositions);
            var collapsingRemoves   = CollapsingBonusEngine.GetCollapseRemoveItems(removedWinPositions);
            var newTopIndices       = CollapsingBonusEngine.GetCollapseTopIndices(referenceWheel, spinResult.TopIndices, collapsingRemoves);
            var collapsingAdds      = CollapsingBonusEngine.GetCollapseAddItems(referenceWheel, newTopIndices, collapsingRemoves);

            for (var widthIndex = 0; widthIndex < spinResult.Wheel.Width; widthIndex++)
            {
                var referenceReel = referenceWheel[widthIndex];
                var targetReel    = collapsingAdds[widthIndex];

                Assert.IsTrue(!targetReel.Except(referenceReel).Any());
            }
        }
        public void EngineShouldReadResponseXmlOfCollapsingBonusResult(int level)
        {
            var collapsingSpinResult = GenerateWinningCollapsingSpinResult(level);
            var collapsingBonus      = CollapsingBonusEngine.CreateCollapsingSpinBonus(collapsingSpinResult);

            collapsingBonus.UpdateBonus(collapsingSpinResult);
            var collapsingBonusResult = CollapsingBonusEngine.CreateCollapsingBonusResult(collapsingBonus, collapsingSpinResult);

            var xElement = collapsingBonusResult.ToXElement();

            Assert.DoesNotThrow(() =>
            {
                using (var xmlReader = xElement.CreateReader())
                {
                    var responseXml = new BonusXml();
                    responseXml.ReadXml(xmlReader);
                }
            });
        }
Exemplo n.º 22
0
        public void EngineShouldGenerateCorrectCollapseAddItems(int level)
        {
            var config                  = new Configuration();
            var referenceWheel          = config.Wheels[level];
            var spinResult              = GenerateWinningSpinResult(level);
            var removedWinPositions     = CollapsingBonusEngine.GetRemoveWinPositions(spinResult.WinPositions);
            var matchingSymbolPositions = MainGameEngine.GenerateMatchingSymbolPositions(config.SymbolCollapsePairs, spinResult.WinPositions.Select(wp => wp.Symbol).ToList(), spinResult.Wheel);
            var bombAndStopperPositions = MainGameEngine.GenerateBombAndStopperPositions(spinResult.Wheel, spinResult.WinPositions);
            var collapsingRemoves       = CollapsingBonusEngine.GetCollapseRemoveItems(removedWinPositions, matchingSymbolPositions, bombAndStopperPositions);
            var newTopIndices           = CollapsingBonusEngine.GetCollapseTopIndices(referenceWheel, spinResult.TopIndices, collapsingRemoves);
            var collapsingAdds          = CollapsingBonusEngine.GetCollapseAddItems(referenceWheel, newTopIndices, collapsingRemoves);

            for (var widthIndex = 0; widthIndex < spinResult.Wheel.Width; widthIndex++)
            {
                var referenceReel = referenceWheel[widthIndex];
                var targetReel    = collapsingAdds[widthIndex];

                Assert.IsTrue(!targetReel.Except(referenceReel).Any());
            }
        }
        public void EngineShouldGenerateCorrectNewTopIndices(int level)
        {
            var config              = new Configuration();
            var spinResult          = GenerateNonWinningSpinResult(level);
            var referenceWheel      = MainGameEngine.GetTargetWheel(level, config);
            var removedWinPositions = CollapsingBonusEngine.GetRemoveWinPositions(spinResult.WinPositions);
            var collapsingRemoves   = CollapsingBonusEngine.GetCollapseRemoveItems(removedWinPositions);
            var newTopIndices       = CollapsingBonusEngine.GetCollapseTopIndices(referenceWheel, spinResult.TopIndices, collapsingRemoves);

            for (var widthIndex = 0; widthIndex < spinResult.Wheel.Width; widthIndex++)
            {
                var previousTopIndex = spinResult.TopIndices[widthIndex];
                var currentTopIndex  = newTopIndices[widthIndex];

                var tempIndex           = previousTopIndex - collapsingRemoves[widthIndex].Count;
                var expectedNewTopIndex = tempIndex >= 0 ? tempIndex : referenceWheel[widthIndex].Count + tempIndex;

                Assert.AreEqual(expectedNewTopIndex, currentTopIndex);
            }
        }
Exemplo n.º 24
0
        public void EngineShouldGenerateCorrectNewTopIndices(int level)
        {
            var config                  = new Configuration();
            var referenceWheel          = MainGameEngine.GetTargetWheel(level, config);
            var spinResult              = GenerateWinningNonBonusSpinResult(level);
            var removedWinPositions     = CollapsingBonusEngine.GetRemoveWinPositions(spinResult.WinPositions);
            var matchingSymbolPositions = MainGameEngine.GenerateMatchingSymbolPositions(config.SymbolCollapsePairs, spinResult.WinPositions.Select(wp => wp.Symbol).ToList(), spinResult.Wheel);
            var bombAndStopperPositions = MainGameEngine.GenerateBombAndStopperPositions(spinResult.Wheel, spinResult.WinPositions);
            var collapsingRemoves       = CollapsingBonusEngine.GetCollapseRemoveItems(removedWinPositions, matchingSymbolPositions, bombAndStopperPositions);
            var newTopIndices           = CollapsingBonusEngine.GetCollapseTopIndices(referenceWheel, spinResult.TopIndices, collapsingRemoves);

            for (var widthIndex = 0; widthIndex < spinResult.Wheel.Width; widthIndex++)
            {
                var previousTopIndex = spinResult.TopIndices[widthIndex];
                var currentTopIndex  = newTopIndices[widthIndex];

                var tempIndex           = previousTopIndex - collapsingRemoves[widthIndex].Count;
                var expectedNewTopIndex = tempIndex >= 0 ? tempIndex : referenceWheel[widthIndex].Count + tempIndex;

                Assert.AreEqual(expectedNewTopIndex, currentTopIndex);
            }
        }
        public void EngineShouldCreateCollapsingSpinResultWithCorrectMultiplier(int level)
        {
            var config      = new Configuration();
            var spinResult  = GenerateWinningSpinResult(level);
            var targetWheel = MainGameEngine.GetTargetWheel(level, config, spinResult.Wheel.ReelStripsId);

            CollapsingSpinResult collapsingSpinResult = null;

            do
            {
                collapsingSpinResult = CollapsingBonusEngine.CreateCollapsingSpinResult(spinResult, targetWheel, config.BonusConfig.Collapse.Multipliers, config.Payline, config.PayTable);

                if (collapsingSpinResult.Win > 0)
                {
                    spinResult = collapsingSpinResult;
                }
            } while (collapsingSpinResult.Win > 0);

            var targetMultiplier = CollapsingBonusEngine.GetCollapseMultiplier(config.BonusConfig.Collapse.Multipliers, collapsingSpinResult.CollapsingSpinCount - 1);

            Assert.IsTrue(spinResult.AvalancheMultiplier == targetMultiplier);
        }
Exemplo n.º 26
0
        public void EngineShouldGetCorrectCollapseRemoveItems(string wheelString, int level)
        {
            var config       = new Configuration();
            var wheel        = new Wheel(Game.WheelWidth, Game.WheelHeight, wheelString.ToFormattedWheelString());
            var winPositions = MainGameEngine.GenerateWinPositions(
                config.Payline,
                config.PayTable,
                wheel,
                1,
                Game.Lines,
                config.BonusConfig.Collapse.Multipliers.First());
            var bonusPositions      = MainGameEngine.GenerateBonusPositions(wheel);
            var removedWinPositions = CollapsingBonusEngine.GetRemoveWinPositions(winPositions, bonusPositions);
            var collapsingRemoves   = CollapsingBonusEngine.GetCollapseRemoveItems(removedWinPositions);

            for (var widthIndex = 0; widthIndex < wheel.Width; widthIndex++)
            {
                var removeRowPositions = CollapsingBonusEngine.GetRemoveRowPositions(removedWinPositions, widthIndex);

                Assert.IsTrue(!collapsingRemoves[widthIndex].Except(removeRowPositions).Any());
            }
        }
        public void EngineShouldGetCorrectCollapseRemoveItems(string wheelString, int level)
        {
            var config              = new Configuration();
            var wheel               = new Wheel(Game.WheelWidth, Game.WheelHeight, wheelString.ToFormattedWheelString());
            var winPositions        = MainGameEngine.GenerateWinPositions(config.Payline, config.PayTable, wheel, 1, 1);
            var removedWinPositions = CollapsingBonusEngine.GetRemoveWinPositions(winPositions);
            var collapsingRemoves   = CollapsingBonusEngine.GetCollapseRemoveItems(removedWinPositions);

            for (var widthIndex = 0; widthIndex < wheel.Width; widthIndex++)
            {
                var removeRowPositionsCollection = new List <int>();

                for (var heightIndex = 0; heightIndex < Game.WheelHeight; heightIndex++)
                {
                    var index = (widthIndex * Game.WheelHeight) + heightIndex;
                    var removeRowPositions = CollapsingBonusEngine.GetRemoveRowPositions(removedWinPositions, index);
                    removeRowPositionsCollection.AddRange(removeRowPositions);
                }

                Assert.IsTrue(!collapsingRemoves[widthIndex].Except(removeRowPositionsCollection).Any());
            }
        }
Exemplo n.º 28
0
        public void EngineShouldCreateCollapsingFreeSpinResultWithCorrectMultiplier(int level)
        {
            var config         = new Configuration();
            var freeSpinResult = GenerateWinningFreeSpinResult(level) as Games.FrostDragon.Models.GameResults.Spins.SpinResult;
            var targetWheel    = MainGameEngine.GetTargetWheel(level, config, freeSpinResult.Wheel.ReelStripsId);

            FreeSpinCollapsingResult freeSpinCollapsingResult = null;

            do
            {
                freeSpinCollapsingResult = FreeSpinBonusEngine.CreateFreeSpinCollapsingResult(freeSpinResult, targetWheel, config.BonusConfig.FreeSpin.Multipliers, config.Payline, config.PayTable);

                if (freeSpinCollapsingResult.Win > 0)
                {
                    freeSpinResult = freeSpinCollapsingResult;
                }
            } while (freeSpinCollapsingResult.Win > 0);

            var targetMultiplier = CollapsingBonusEngine.GetCollapseMultiplier(config.BonusConfig.FreeSpin.Multipliers, freeSpinCollapsingResult.CollapsingSpinCount - 1);

            Assert.IsTrue(freeSpinResult.AvalancheMultiplier == targetMultiplier);
        }
Exemplo n.º 29
0
        public void EngineShouldGetCorrectCollapseRemoveItems(string wheelString, int level)
        {
            var config       = new Configuration();
            var wheel        = new Wheel(Game.WheelWidth, Game.WheelHeight, wheelString);
            var winPositions = MainGameEngine.GenerateWinPositions(
                config.Payline,
                config.PayTable,
                wheel,
                1,
                Game.Lines,
                1);
            var matchingSymbolPositions = MainGameEngine.GenerateMatchingSymbolPositions(config.SymbolCollapsePairs, winPositions.Select(wp => wp.Symbol).ToList(), wheel);
            var bombAndStopperPositions = MainGameEngine.GenerateBombAndStopperPositions(wheel, winPositions);
            var removedWinPositions     = CollapsingBonusEngine.GetRemoveWinPositions(winPositions);
            var collapsingRemoves       = CollapsingBonusEngine.GetCollapseRemoveItems(removedWinPositions, matchingSymbolPositions, bombAndStopperPositions);

            for (var widthIndex = 0; widthIndex < wheel.Width; widthIndex++)
            {
                var removeRowPositions = CollapsingBonusEngine.GetRemoveRowPositions(removedWinPositions, matchingSymbolPositions, bombAndStopperPositions, widthIndex);

                Assert.IsTrue(!collapsingRemoves[widthIndex].Except(removeRowPositions).Any());
            }
        }
        public void EngineShouldIncreaseWinPositionMultiplierOnSpinCollapse(int level)
        {
            var config      = new Configuration();
            var spinResult  = GenerateWinningSpinResult(level);
            var targetWheel = MainGameEngine.GetTargetWheel(level, config, spinResult.Wheel.ReelStripsId);

            CollapsingSpinResult collapsingSpinResult = null;

            do
            {
                collapsingSpinResult = CollapsingBonusEngine.CreateCollapsingSpinResult(spinResult, targetWheel, config.BonusConfig.Collapse.Multipliers, config.Payline, config.PayTable);

                if (collapsingSpinResult.Win > 0)
                {
                    spinResult = collapsingSpinResult;
                }
            } while (collapsingSpinResult.Win > 0);

            var targetMultiplier  = spinResult.AvalancheMultiplier;
            var targetWinPosition = spinResult.WinPositions.FirstOrDefault();
            var symbolMultiplier  = config.PayTable.GetOdds(targetWinPosition.Symbol, targetWinPosition.Count);

            Assert.IsTrue(symbolMultiplier * targetMultiplier == targetWinPosition.Multiplier);
        }