public bool FreeSpinResultShouldFlagSpinResultWithBonusOnScatterOrCollapse(string wheelString, int level, decimal bet)
        {
            var config  = new Configuration();
            var spinBet = MainGameEngine.GenerateSpinBet(new RequestContext <SpinArgs>("", "", PlatformType.Web)
            {
                GameSetting = new Model.Entity.GameSetting {
                    GameSettingGroupId = 0
                },
                Currency = new Model.Entity.Currency {
                    Id = 0
                },
                Parameters = new SpinArgs
                {
                    LineBet    = bet,
                    Multiplier = 1
                }
            });

            var wheel        = new Wheel(Game.WheelWidth, Game.WheelHeight, wheelString.ToFormattedWheelString());
            var winPositions = FreeSpinBonusEngine.GenerateWinPositions(
                config.Payline,
                config.FreeGamePayTable,
                config.FreeGameScatterSymbols,
                wheel,
                spinBet.LineBet,
                spinBet.Lines,
                1);
            var bonusPositions = MainGameEngine.GenerateBonusPositions(wheel);

            var freeSpinResult = new FreeSpinResult(spinBet, wheel, null, winPositions, bonusPositions);

            return(freeSpinResult.HasBonus);
        }
        public string EngineShouldCreateCorrectCollapseReels(string wheelString, string indicesString, int level)
        {
            var config  = new Configuration();
            var spinBet = MainGameEngine.GenerateSpinBet(new RequestContext <SpinArgs>("", "", PlatformType.Web)
            {
                GameSetting = new Model.Entity.GameSetting {
                    GameSettingGroupId = 0
                },
                Currency = new Model.Entity.Currency {
                    Id = 0
                },
                Parameters = new SpinArgs
                {
                    LineBet    = 1,
                    Multiplier = 1
                }
            });

            var targetWheel = config.WeightedReelStripsCollection
                              .Where(reelStripItem => reelStripItem.Name.Contains("freegame", StringComparison.InvariantCultureIgnoreCase))
                              .ElementAt(1)
                              .Wheel;
            var topIndices     = Array.ConvertAll(indicesString.Split(','), Convert.ToInt32).ToList();
            var wheel          = new Wheel(Game.WheelWidth, Game.WheelHeight, wheelString.ToFormattedWheelString());
            var winPositions   = FreeSpinBonusEngine.GenerateWinPositions(config.Payline, config.FreeGamePayTable, config.FreeGameScatterSymbols, wheel, spinBet.LineBet, spinBet.Lines, 1);
            var bonusPositions = MainGameEngine.GenerateBonusPositions(wheel);

            var freeSpinResult           = new FreeSpinResult(spinBet, wheel, topIndices, winPositions, bonusPositions);
            var freeSpinCollapsingResult = FreeSpinBonusEngine.CreateFreeSpinCollapsingResult(
                freeSpinResult,
                targetWheel,
                config.Payline,
                config.FreeGamePayTable,
                config.FreeGameScatterSymbols);

            return(string.Join('|', freeSpinCollapsingResult.Wheel.Reels.Select(symbols => string.Join(',', symbols))));
        }