// https://mindsportsolympiad.com/mso-grand-prix/?msclkid=3915208aaaef11ec82ffd46aaa61f0dd#1642103865073-8a2a8ac9-f8a6
        public void CalculatorGetsRightAnswerWhenComplexTie()
        {
            var data = new[] {
                new TestCalc {
                    Rank = 1, PentaScore = 0f, Absent = false, Id = 1
                },
                new TestCalc {
                    Rank = 3, PentaScore = 0f, Absent = false, Id = 2
                },
                new TestCalc {
                    Rank = 5, PentaScore = 0f, Absent = false, Id = 3
                },
                new TestCalc {
                    Rank = 0, PentaScore = 0f, Absent = true, Id = 13
                },
                new TestCalc {
                    Rank = 4, PentaScore = 0f, Absent = false, Id = 4
                },
                new TestCalc {
                    Rank = 1, PentaScore = 0f, Absent = false, Id = 5
                },
            };

            var calc = new GrandPrixCalculator();

            calc.Calculate(1, data);

            Assert.AreEqual(34f, data[0].PentaScore, 0.00001);
            Assert.AreEqual(20f, data[1].PentaScore, 0.00001);
            Assert.AreEqual(0, data[2].PentaScore);
            Assert.AreEqual(0, data[3].PentaScore);
            Assert.AreEqual(12f, data[4].PentaScore, 0.00001);
            Assert.AreEqual(34f, data[5].PentaScore, 0.00001);
        }
        public void CalculatorGetsRightAnswerInSimpleCaseLargeEvent()
        {
            var data = new[] {
                new TestCalc {
                    Rank = 1, PentaScore = 0f, Absent = false, Id = 1
                },
                new TestCalc {
                    Rank = 2, PentaScore = 0f, Absent = false, Id = 2
                },
                new TestCalc {
                    Rank = 3, PentaScore = 0f, Absent = false, Id = 3
                },
                new TestCalc {
                    Rank = 4, PentaScore = 0f, Absent = false, Id = 4
                },
                new TestCalc {
                    Rank = 5, PentaScore = 0f, Absent = false, Id = 5
                },
                new TestCalc {
                    Rank = 6, PentaScore = 0f, Absent = false, Id = 6
                },
                new TestCalc {
                    Rank = 7, PentaScore = 0f, Absent = false, Id = 7
                },
                new TestCalc {
                    Rank = 8, PentaScore = 0f, Absent = false, Id = 8
                },
                new TestCalc {
                    Rank = 9, PentaScore = 0f, Absent = false, Id = 9
                },
                new TestCalc {
                    Rank = 10, PentaScore = 0f, Absent = false, Id = 10
                },
                new TestCalc {
                    Rank = 11, PentaScore = 0f, Absent = false, Id = 11
                },
                new TestCalc {
                    Rank = 12, PentaScore = 0f, Absent = false, Id = 12
                },
            };

            var calc = new GrandPrixCalculator();

            calc.Calculate(1, data);

            Assert.AreEqual(40f, data[0].PentaScore, 0.00001);
            Assert.AreEqual(28f, data[1].PentaScore, 0.00001);
            Assert.AreEqual(20f, data[2].PentaScore, 0.00001);
            Assert.AreEqual(12f, data[3].PentaScore, 0.00001);
            Assert.AreEqual(2f, data[4].PentaScore, 0.00001);
            Assert.AreEqual(2f, data[5].PentaScore, 0.00001);
            Assert.AreEqual(0f, data[6].PentaScore, 0.00001);
            Assert.AreEqual(0f, data[7].PentaScore, 0.00001);
            Assert.AreEqual(0f, data[8].PentaScore, 0.00001);
            Assert.AreEqual(0f, data[9].PentaScore, 0.00001);
            Assert.AreEqual(0f, data[10].PentaScore, 0.00001);
        }
        public void CalculatorGetsRightAnswerWhenTie()
        {
            var data = new[] {
                new TestCalc {
                    Rank = 1, PentaScore = 0f, Absent = false, Id = 1
                },
                new TestCalc {
                    Rank = 2, PentaScore = 0f, Absent = false, Id = 2
                },
                new TestCalc {
                    Rank = 3, PentaScore = 0f, Absent = false, Id = 3
                },
                new TestCalc {
                    Rank = 4, PentaScore = 0f, Absent = false, Id = 4
                },
                new TestCalc {
                    Rank = 4, PentaScore = 0f, Absent = false, Id = 5
                },
                new TestCalc {
                    Rank = 4, PentaScore = 0f, Absent = false, Id = 6
                },
                new TestCalc {
                    Rank = 4, PentaScore = 0f, Absent = false, Id = 7
                },
                new TestCalc {
                    Rank = 4, PentaScore = 0f, Absent = false, Id = 8
                },
                new TestCalc {
                    Rank = 4, PentaScore = 0f, Absent = false, Id = 9
                },
                new TestCalc {
                    Rank = 10, PentaScore = 0f, Absent = false, Id = 10
                },
                new TestCalc {
                    Rank = 11, PentaScore = 0f, Absent = false, Id = 11
                },
                new TestCalc {
                    Rank = 12, PentaScore = 0f, Absent = false, Id = 12
                },
                new TestCalc {
                    Rank = 13, PentaScore = 0f, Absent = false, Id = 13
                },
                new TestCalc {
                    Rank = 14, PentaScore = 0f, Absent = false, Id = 14
                },
                new TestCalc {
                    Rank = 15, PentaScore = 0f, Absent = false, Id = 15
                },
                new TestCalc {
                    Rank = 16, PentaScore = 0f, Absent = false, Id = 16
                },
                new TestCalc {
                    Rank = 17, PentaScore = 0f, Absent = false, Id = 17
                },
                new TestCalc {
                    Rank = 18, PentaScore = 0f, Absent = false, Id = 18
                },
                new TestCalc {
                    Rank = 19, PentaScore = 0f, Absent = false, Id = 19
                },
            };

            var calc = new GrandPrixCalculator();

            calc.Calculate(1, data);

            Assert.AreEqual(40f, data[0].PentaScore, 0.00001);
            Assert.AreEqual(28f, data[1].PentaScore, 0.00001);
            Assert.AreEqual(20f, data[2].PentaScore, 0.00001);
            Assert.AreEqual(5f, data[3].PentaScore, 0.00001);
            Assert.AreEqual(5f, data[4].PentaScore, 0.00001);
            Assert.AreEqual(5f, data[5].PentaScore, 0.00001);
            Assert.AreEqual(5f, data[6].PentaScore, 0.00001);
            Assert.AreEqual(5f, data[7].PentaScore, 0.00001);
            Assert.AreEqual(5f, data[8].PentaScore, 0.00001);
            Assert.AreEqual(0f, data[9].PentaScore, 0.00001);
            Assert.AreEqual(0f, data[10].PentaScore, 0.00001);
            Assert.AreEqual(0f, data[11].PentaScore, 0.00001);
        }