Пример #1
0
        public void TestGetPlayerRating()
        {
            var testSubject = new EloRatingSystem();

            var testResult = testSubject.GetPlayerRating(true, false, 1200, 1000, 20);

            Assert.AreEqual(1205, testResult.Item1);
            Assert.AreEqual(995, testResult.Item2);

            testResult = testSubject.GetPlayerRating(false, true, 1200, 1000, 20);
            Assert.AreEqual(1185, testResult.Item1);
            Assert.AreEqual(1015, testResult.Item2);
        }
Пример #2
0
        public void BasicExample()
        {
            //an adjacency graph where [i,j], [j,i] would be the two choices
            // [i,j] playerA likes playerB and [j,i] playerB likes playerA
            var games = new[, ]
            {
                { 0, 0, 0, 1, 1 },
                { 1, 0, 1, 1, 1 },
                { 1, 0, 0, 0, 0 },
                { 0, 1, 0, 0, 0 },
                { 1, 0, 1, 1, 0 }
            };

            var players = new[]
            { new EloPlayer("A"), new EloPlayer("B"), new EloPlayer("C"), new EloPlayer("D"), new EloPlayer("E") };

            var testSubject = new EloRatingSystem();

            testSubject.PlayGame(players, games);

            Assert.AreEqual(908D, players[0].Rating);
            Assert.AreEqual(1011D, players[1].Rating);
            Assert.AreEqual(843D, players[2].Rating);
            Assert.AreEqual(847D, players[3].Rating);
            Assert.AreEqual(955D, players[4].Rating);

            testSubject = new EloRatingSystem(true);
            testSubject.PlayGame(players, games);

            Assert.AreEqual(941D, players[0].Rating);
            Assert.AreEqual(1005D, players[1].Rating);
            Assert.AreEqual(843D, players[2].Rating);
            Assert.AreEqual(874D, players[3].Rating);
            Assert.AreEqual(965D, players[4].Rating);

            Console.WriteLine(string.Join(",", players.Select(p => p.ToString())));
        }