private decimal TestPayout(string strwheel, decimal betperline, Func <int, int, int[], Wheel> wheelEncoding) { var sdt = DateTime.Now; var serviceProvider = new ServiceCollection() .AddLogging() .BuildServiceProvider(); var logFactory = serviceProvider.GetService <ILoggerFactory>(); var logger = logFactory.CreateLogger <FountainOfFortuneModule>(); var FountainOfFortuneModule = new FountainOfFortuneModule(logger); var maxWin = 0m; var totalWin = 0m; List <int> maxIndexPosition = new List <int>(); RequestContext <SpinArgs> requestContext = new RequestContext <SpinArgs>("", FountainOfFortuneConfiguration.GameName, PlatformType.Web); var summData = new SummaryData(); Assert.That(strwheel, Is.Not.Null.Or.Empty); string[] arrstr = strwheel.Split(','); int[] arr = Array.ConvertAll(arrstr, int.Parse); UserGameKey ugk = new UserGameKey() { UserId = -1, GameId = FountainOfFortuneConfiguration.GameId, Level = 1 }; SpinBet sb = new SpinBet(ugk, PlatformType.None) { LineBet = 1, Credits = 0, Lines = FountainOfFortuneConfiguration.Lines, Multiplier = 1 }; requestContext.Currency = new Currency() { Id = sb.CurrencyId }; requestContext.Parameters = new SpinArgs() { LineBet = sb.LineBet, BettingLines = sb.Lines }; requestContext.GameSetting = new GameSetting() { GameSettingGroupId = sb.GameSettingGroupId }; FountainOfFortuneSpinResult sr = new FountainOfFortuneSpinResult(ugk) { SpinBet = new SpinBet(ugk, PlatformType.None) { Lines = FountainOfFortuneConfiguration.Lines, Multiplier = 1, LineBet = betperline }, Wheel = wheelEncoding(FountainOfFortuneConfiguration.Width, FountainOfFortuneConfiguration.Height, arr) }; totalWin = FountainOfFortuneCommon.CalculateWin(sr, 1); Console.WriteLine($"Win : {totalWin}"); return(totalWin); }
public void TestFountainOfFortune(int gameId, int level, string currencyCode, int numusers, int numItrPerUser, decimal bet, int lines, int mp) { var sdt = DateTime.Now; var serviceProvider = new ServiceCollection() .AddLogging() .BuildServiceProvider(); var logFactory = serviceProvider.GetService <ILoggerFactory>(); var logger = logFactory.CreateLogger <FountainOfFortuneModule>(); var FountainOfFortuneModule = new FountainOfFortuneModule(logger); var maxWin = 0m; var summData = new SummaryData(); var users = GenerateUsers(gameId, numusers, level); var sbs = GenerateUserBets(users, bet, lines, mp); RequestContext <SpinArgs> requestContext = new RequestContext <SpinArgs>("", FountainOfFortuneConfiguration.GameName, PlatformType.Web); RequestContext <BonusArgs> requestBonusContext = new RequestContext <BonusArgs>("", FountainOfFortuneConfiguration.GameName, PlatformType.Web); Parallel.ForEach(users, () => new SummaryData(), (key, state, sdata) => { var sb = sbs[key.UserId]; requestContext.Currency = new Currency() { Id = sb.CurrencyId }; requestContext.Parameters = new SpinArgs() { LineBet = sb.LineBet, BettingLines = sb.Lines }; requestContext.GameSetting = new GameSetting() { GameSettingGroupId = sb.GameSettingGroupId }; for (var i = 0; i < numItrPerUser; ++i) { var sr = FountainOfFortuneModule.ExecuteSpin(level, new UserGameSpinData(), requestContext).Value as FountainOfFortuneSpinResult; if (sr.Win > maxWin) { maxWin = sr.Win; } UpdateSummaryData(sdata, sr); UpdateFountainOfFortuneSummaryData(sdata, sr); } return(sdata); }, sdata => { lock (summData) { summData.Sum(sdata); } }); DisplayFountainOfFortuneSummaryData(level, bet, lines, summData, sdt, maxWin, null); }