private static SummaryData ExecuteFreeSpin(int level, RequestContext <BonusArgs> bonusRequestcontext, WolvesResult result) { var bonus = module.CreateBonus(result); var summData = new SummaryData(); var freeSpinBonus = bonus.Value as WolvesBonus; var totalFreeSpin = 0; var fscouter = 0; switch (result.Wheel.Reels.Sum(ele => ele.Count(item => item == 9))) { case 3: totalFreeSpin = 10; break; case 4: totalFreeSpin = 15; break; case 5: totalFreeSpin = 20; break; } do { var freeSpinResult = BonusReducer.dispatch(level, freeSpinBonus, bonusRequestcontext) as WolvesSeqFreeSpinResult; var spinResult = freeSpinResult.SpinResult; if (spinResult.Wheel.Type == 4) { summData.FgRollingWin += spinResult.Win; } else { summData.FSpinCounter++; fscouter++; summData.FSTotalWin += spinResult.Win; } if (spinResult.HasBonus) { summData.FgRollingHit++; Assert.True(spinResult.Win > 0); } if (freeSpinResult.IsCompleted) { break; } freeSpinBonus = freeSpinResult.Bonus as WolvesBonus; } while (true); Assert.AreEqual(totalFreeSpin, fscouter); return(summData); }