public void WhenRunWithAllTiger_ShouldHave100PercentPredictResult() { var scores = new Score[] { Score.Tiger, Score.Tiger, Score.Tiger, Score.Tiger, Score.Tiger, Score.Tiger, Score.Tiger, Score.Tiger, Score.Tiger }; var predictors = new IPredictor[] { new SameDifferentPredictor(), new Anti12Predictor(), new Anti2Predictor() }; var resultPredictor = new DummyPredictor(); var predictService = new PredictionService(predictors, resultPredictor); var mappingScores = new Score[] { Score.Tiger, Score.Tiger, Score.Tiger, Score.Tiger, Score.Tiger, Score.Tiger, Score.Tiger, Score.Tiger }; var gameStates = scores.Select(s => new GameStateInput(s, None)); var result = predictService.PredictScore(gameStates, mappingScores) .ToList(); Assert.AreEqual(scores.Count() + 1, result.Count()); var sdResult = result .Select(r => r.ScorePredictions.Find(Constants.SameDiffPredictionName).Bind(p => p.Result)) .Where(r => r.IsSome) .Map(r => r.IfNone(Result.Lose)); var stat = StatService.Calculate( Constants.SameDiffPredictionName, sdResult); Assert.AreEqual(100, stat.WinRate); }