Beispiel #1
0
        /// <summary>
        /// Selects last 30 hands that meet requirements ( Pot > 6 BB; is VPIP) from the same session as specified statistic
        /// </summary>
        /// <param name="statistics"></param>
        /// <param name="current"></param>
        /// <returns></returns>
        public static IEnumerable <ReplayerDataModel> CreateSessionHandsList(IEnumerable <Playerstatistic> statistics, Playerstatistic current)
        {
            var settings = ServiceLocator.Current.GetInstance <ISettingsService>().GetSettings();
            var bbFilter = settings.GeneralSettings.ReplayerBBFilter;

            IEnumerable <Playerstatistic> potStat = new List <Playerstatistic>();

            if (statistics != null && statistics.Count() > 0)
            {
                if (current.IsTourney)
                {
                    potStat = statistics.Where(x => x.TournamentId == current.TournamentId).OrderByDescending(x => x.Time);
                }
                else
                {
                    var cancellationTokenSource = new CancellationTokenSource();

                    var session = new SessionsReportCreator()
                                  .Create(statistics.ToList(), cancellationTokenSource.Token)
                                  .Where(x => x.Statistics.Any(s => s.GameNumber == current.GameNumber));

                    if (session != null && session.Count() > 0)
                    {
                        potStat = session.FirstOrDefault().Statistics.OrderByDescending(x => x.Time);
                    }
                }
            }

            var result = potStat.Where(x => Math.Abs(x.NetWon) >= (bbFilter * x.BigBlind)).Select(x => new ReplayerDataModel(x));

            return(result);
        }
Beispiel #2
0
        public void TestSessionReportCreator(string file)
        {
            using (var perfScope = new PerformanceMonitor("ReportCreatorTests.TestSessionReportCreator"))
            {
                var playerStatistic = playerStatisticDictionary[file];

                var sessionsReportCreator = new SessionsReportCreator();

                var canellationTokenSource = new CancellationTokenSource();

                var report = sessionsReportCreator
                             .Create(playerStatistic, canellationTokenSource.Token)
                             .OrderBy(x => x.SessionStart)
                             .ToArray();

                var expectedData = SessionExpectedDataSet[file]
                                   .OrderBy(x => x.SessionStart)
                                   .ToArray();

                Assert.That(report.Length, Is.EqualTo(expectedData.Length), "Results length doesn't match expected");

                Assert.Multiple(() =>
                {
                    var tolerance = 0.01m;

                    for (var i = 0; i < report.Length; i++)
                    {
                        Console.WriteLine(report[i]);

                        Assert.That(report[i].SessionStart, Is.EqualTo(expectedData[i].SessionStart), $"SessionStart[{i}]");
                        Assert.That(report[i].StatisticsCount, Is.EqualTo(expectedData[i].StatisticsCount), $"StatisticsCount[{i}]");
                        Assert.That(report[i].BB, Is.EqualTo(expectedData[i].BB).Within(tolerance), $"BB[{i}]");
                        Assert.That(report[i].SessionLength, Is.EqualTo(expectedData[i].SessionLength), $"SessionLength[{i}]");
                        Assert.That(report[i].VPIP, Is.EqualTo(expectedData[i].VPIP).Within(tolerance), $"VPIP[{i}]");
                        Assert.That(report[i].PFR, Is.EqualTo(expectedData[i].PFR).Within(tolerance), $"PFR[{i}]");
                        Assert.That(report[i].ThreeBet, Is.EqualTo(expectedData[i].ThreeBet).Within(tolerance), $"ThreeBet[{i}]");
                        Assert.That(report[i].TotalWon, Is.EqualTo(expectedData[i].TotalWon).Within(tolerance), $"TotalWon[{i}]");
                        Assert.That(report[i].WSSD, Is.EqualTo(expectedData[i].WSSD).Within(tolerance), $"WSSD[{i}]");
                        Assert.That(report[i].WWSF, Is.EqualTo(expectedData[i].WWSF).Within(tolerance), $"WWSF[{i}]");
                        Assert.That(report[i].WTSD, Is.EqualTo(expectedData[i].WTSD).Within(tolerance), $"WTSD[{i}]");
                    }
                });
            }
        }