/// <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); }
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}]"); } }); } }