Example #1
0
        public CompetitionRunResultRankingComparable(CompetitionRunResult runResult, CompetitionClassModel model, RankingComparisonMode comparisonMode)
        {
            Guard.NotNull(runResult, nameof(runResult));
            Guard.NotNull(model, nameof(model));

            this.runResult      = runResult;
            this.comparisonMode = comparisonMode;
            calculator          = new CompetitorAssessmentCalculator(runResult, model);
        }
        private static void AssertCompetitorsAreCompatibleWithProposedScenario(
            [NotNull] CompetitionRunResult xCompetitor, [NotNull] CompetitionRunResult yCompetitor,
            [NotNull] OrderingScenario scenario, [NotNull] CompetitionClassModel model)
        {
            var xCalculator = new CompetitorAssessmentCalculator(xCompetitor, model);
            var yCalculator = new CompetitorAssessmentCalculator(yCompetitor, model);

            if (scenario[0])
            {
                xCompetitor.HasFinished.Should().BeTrue();
            }
            else
            {
                xCompetitor.HasFinished.Should().BeFalse();
            }
            if (scenario[1])
            {
                xCompetitor.IsEliminated.Should().BeTrue();
            }
            else
            {
                xCompetitor.IsEliminated.Should().BeFalse();
            }
            if (scenario[2])
            {
                yCompetitor.HasFinished.Should().BeTrue();
            }
            else
            {
                yCompetitor.HasFinished.Should().BeFalse();
            }
            if (scenario[3])
            {
                yCompetitor.IsEliminated.Should().BeTrue();
            }
            else
            {
                yCompetitor.IsEliminated.Should().BeFalse();
            }

            if (scenario[4])
            {
                xCalculator.PenaltyTime.Should().BeGreaterThan(yCalculator.PenaltyTime);
            }
            else
            {
                xCalculator.PenaltyTime.Should().BeLessOrEqualTo(yCalculator.PenaltyTime);
            }
            if (scenario[5])
            {
                xCalculator.OverrunTime.Should().BeGreaterThan(yCalculator.OverrunTime);
            }
            else
            {
                xCalculator.OverrunTime.Should().BeLessOrEqualTo(yCalculator.OverrunTime);
            }
            if (scenario[6])
            {
                yCalculator.PenaltyTime.Should().BeGreaterThan(xCalculator.PenaltyTime);
            }
            else
            {
                yCalculator.PenaltyTime.Should().BeLessOrEqualTo(xCalculator.PenaltyTime);
            }
            if (scenario[7])
            {
                yCalculator.OverrunTime.Should().BeGreaterThan(xCalculator.OverrunTime);
            }
            else
            {
                yCalculator.OverrunTime.Should().BeLessOrEqualTo(xCalculator.OverrunTime);
            }

            if (scenario[8])
            {
                xCalculator.FinishTime.Should().BeGreaterThan(yCalculator.FinishTime);
            }
            else
            {
                xCalculator.FinishTime.Should().BeLessOrEqualTo(yCalculator.FinishTime);
            }
            if (scenario[9])
            {
                xCompetitor.Competitor.Number.Should().BeGreaterThan(yCompetitor.Competitor.Number);
            }
            else
            {
                xCompetitor.Competitor.Number.Should().BeLessOrEqualTo(yCompetitor.Competitor.Number);
            }
            if (scenario[10])
            {
                yCalculator.FinishTime.Should().BeGreaterThan(xCalculator.FinishTime);
            }
            else
            {
                yCalculator.FinishTime.Should().BeLessOrEqualTo(xCalculator.FinishTime);
            }
            if (scenario[11])
            {
                yCompetitor.Competitor.Number.Should().BeGreaterThan(xCompetitor.Competitor.Number);
            }
            else
            {
                yCompetitor.Competitor.Number.Should().BeLessOrEqualTo(xCompetitor.Competitor.Number);
            }
        }
        private static void AssertCompetitorsAreCompatibleWithProposedScenario(
            [NotNull] CompetitionRunResult xCompetitor,
            [NotNull] CompetitionRunResult yCompetitor, [NotNull] OrderingScenario scenario,
            [NotNull] CompetitionClassModel model)
        {
            var xCalculator = new CompetitorAssessmentCalculator(xCompetitor, model);
            var yCalculator = new CompetitorAssessmentCalculator(yCompetitor, model);

            if (scenario[0])
            {
                xCalculator.PenaltyTime.Should().BeGreaterThan(yCalculator.PenaltyTime);
            }
            else
            {
                xCalculator.PenaltyTime.Should().BeLessOrEqualTo(yCalculator.PenaltyTime);
            }

            if (scenario[1])
            {
                xCalculator.OverrunTime.Should().BeGreaterThan(yCalculator.OverrunTime);
            }
            else
            {
                xCalculator.OverrunTime.Should().BeLessOrEqualTo(yCalculator.OverrunTime);
            }

            if (scenario[2])
            {
                yCalculator.PenaltyTime.Should().BeGreaterThan(xCalculator.PenaltyTime);
            }
            else
            {
                yCalculator.PenaltyTime.Should().BeLessOrEqualTo(xCalculator.PenaltyTime);
            }

            if (scenario[3])
            {
                yCalculator.OverrunTime.Should().BeGreaterThan(xCalculator.OverrunTime);
            }
            else
            {
                yCalculator.OverrunTime.Should().BeLessOrEqualTo(xCalculator.OverrunTime);
            }
        }