예제 #1
0
        public void RRGResetMatches_FiresMatchesModifiedEventsForEveryMatch()
        {
            List <IPlayer> pList = new List <IPlayer>();

            for (int i = 1; i <= 12; ++i)
            {
                Mock <IPlayer> moq = new Mock <IPlayer>();
                moq.Setup(p => p.Id).Returns(i);
                pList.Add(moq.Object);
            }
            IBracket b = new RoundRobinGroups(pList, 3);

            for (int n = 1; n <= b.NumberOfMatches; ++n)
            {
                b.AddGame(n, 1, 0, PlayerSlot.Defender);
            }

            int matchesModded = 0;

            b.MatchesModified += delegate(object sender, BracketEventArgs e)
            {
                matchesModded += e.UpdatedMatches.Count;
            };
            b.ResetMatches();
            Assert.AreEqual(b.NumberOfMatches, matchesModded);
        }
예제 #2
0
        public void RRGGenerateTiebreakers_ThrowsRoundAddedEvent()
        {
            bool roundAdded = false;

            List <IPlayer> pList = new List <IPlayer>();

            for (int i = 0; i < 12; ++i)
            {
                Mock <IPlayer> moq = new Mock <IPlayer>();
                moq.Setup(p => p.Id).Returns(i + 1);
                pList.Add(moq.Object);
            }
            IBracket b = new RoundRobinGroups(pList, 3);

            b.RoundAdded += delegate
            {
                roundAdded = true;
            };
            int matchesPerGroup = b.NumberOfMatches / (b as IGroupStage).NumberOfGroups;

            for (int n = 1; n <= matchesPerGroup; ++n)
            {
                b.SetMatchWinner(n, PlayerSlot.Defender);
            }

            b.GenerateTiebreakers();
            Assert.IsTrue(roundAdded);
        }
예제 #3
0
        public void RRGGenerateTiebreakers_RoundAddedEventContainsAllNewMatchModels()
        {
            int newMatchModels = 0;

            List <IPlayer> pList = new List <IPlayer>();

            for (int i = 0; i < 12; ++i)
            {
                Mock <IPlayer> moq = new Mock <IPlayer>();
                moq.Setup(p => p.Id).Returns(i + 1);
                pList.Add(moq.Object);
            }
            IBracket b          = new RoundRobinGroups(pList, 3);
            int      numMatches = b.NumberOfMatches;

            b.RoundAdded += delegate(object sender, BracketEventArgs e)
            {
                newMatchModels += e.UpdatedMatches.Count;
            };
            int matchesPerGroup = numMatches / (b as IGroupStage).NumberOfGroups;

            for (int n = 1; n <= matchesPerGroup; ++n)
            {
                b.SetMatchWinner(n, PlayerSlot.Defender);
            }

            b.GenerateTiebreakers();
            Assert.AreEqual(b.NumberOfMatches - numMatches, newMatchModels);
        }
예제 #4
0
        public void RRGCreateBracket_CreatesUnevenGroupsForOddPlayercounts()
        {
            List <IPlayer> pList = new List <IPlayer>();

            for (int i = 1; i <= 7; ++i)
            {
                Mock <IPlayer> moq = new Mock <IPlayer>();
                moq.Setup(p => p.Id).Returns(i);
                pList.Add(moq.Object);
            }
            IBracket b = new RoundRobinGroups(pList, 2);

            Assert.AreEqual((2 * 3 + 3), b.NumberOfMatches);
        }
예제 #5
0
        public void RRGCtor_Constructs()
        {
            List <IPlayer> pList = new List <IPlayer>();

            for (int i = 1; i <= 4; ++i)
            {
                Mock <IPlayer> moq = new Mock <IPlayer>();
                moq.Setup(p => p.Id).Returns(i + 1);
                pList.Add(moq.Object);
            }
            IBracket b = new RoundRobinGroups(pList, 2);

            Assert.IsInstanceOfType(b, typeof(RoundRobinGroups));
        }
예제 #6
0
        public void RRGGenerateTiebreakers_ReturnsFalse_WhenNoGroupsAreFinished()
        {
            List <IPlayer> pList = new List <IPlayer>();

            for (int i = 0; i < 12; ++i)
            {
                Mock <IPlayer> moq = new Mock <IPlayer>();
                moq.Setup(p => p.Id).Returns(i + 1);
                pList.Add(moq.Object);
            }
            IBracket b = new RoundRobinGroups(pList, 3);

            Assert.IsFalse(b.GenerateTiebreakers());
        }
예제 #7
0
        public void RRGGetRound_ReturnsMatchesFromAllGroups()
        {
            List <IPlayer> pList = new List <IPlayer>();

            for (int i = 1; i <= 32; ++i)
            {
                Mock <IPlayer> moq = new Mock <IPlayer>();
                moq.Setup(p => p.Id).Returns(i);
                pList.Add(moq.Object);
            }
            IBracket b = new RoundRobinGroups(pList, 4);

            Assert.AreEqual((4 * 4), b.GetRound(1).Count);
        }
예제 #8
0
        public void RRGGetRound_ThrowsInvalidIndex_WithNegativeRound()
        {
            List <IPlayer> pList = new List <IPlayer>();

            for (int i = 1; i <= 4; ++i)
            {
                Mock <IPlayer> moq = new Mock <IPlayer>();
                moq.Setup(p => p.Id).Returns(i);
                pList.Add(moq.Object);
            }
            IBracket b = new RoundRobinGroups(pList, 2);

            b.GetRound(-1);
            Assert.AreEqual(1, 2);
        }
예제 #9
0
        public void RRGGetModel_HasModelsOfAllMatches()
        {
            List <IPlayer> pList = new List <IPlayer>();

            for (int i = 0; i < 17; ++i)
            {
                IPlayer p = new Player(i + 1, "Player " + (i + 1).ToString());
                pList.Add(p);
            }
            IBracket b = new RoundRobinGroups(pList, 4);

            BracketModel bModel = b.GetModel(0);

            Assert.AreEqual(b.NumberOfMatches, bModel.Matches.Count);
        }
예제 #10
0
        public void RRGGetModel_HasModelsOfAllPlayers()
        {
            List <IPlayer> pList = new List <IPlayer>();

            for (int i = 0; i < 17; ++i)
            {
                IPlayer p = new Player(i + 1, "Player " + (i + 1).ToString());
                pList.Add(p);
            }
            IBracket b = new RoundRobinGroups(pList, 4);

            BracketModel bModel = b.GetModel(0);

            Assert.AreEqual(pList.Count, bModel.TournamentUsersBrackets.Count);
        }
예제 #11
0
        public void RRGCreateBracket_CreatesFourGroups()
        {
            int            numGroups = 4;
            List <IPlayer> pList     = new List <IPlayer>();

            for (int i = 1; i <= 32; ++i)
            {
                Mock <IPlayer> moq = new Mock <IPlayer>();
                moq.Setup(p => p.Id).Returns(i);
                pList.Add(moq.Object);
            }
            IBracket b = new RoundRobinGroups(pList, numGroups);

            Assert.AreEqual((4 * 7 * 4), b.NumberOfMatches);
        }
예제 #12
0
        public void RRGAddGame_AddsWinToFirstGroup()
        {
            List <IPlayer> pList = new List <IPlayer>();

            for (int i = 1; i <= 4; ++i)
            {
                Mock <IPlayer> moq = new Mock <IPlayer>();
                moq.Setup(p => p.Id).Returns(i);
                pList.Add(moq.Object);
            }
            IBracket b = new RoundRobinGroups(pList, 2);

            b.AddGame(1, 0, 1, PlayerSlot.Challenger);
            Assert.AreEqual(1, b.GetMatch(1).Score[(int)PlayerSlot.Challenger]);
        }
예제 #13
0
        public void RRGCheckForTies_ReturnsFalseIfNoTiesFound()
        {
            List <IPlayer> pList = new List <IPlayer>();

            for (int i = 0; i < 10; ++i)
            {
                Mock <IPlayer> moq = new Mock <IPlayer>();
                moq.Setup(p => p.Id).Returns(i + 1);
                pList.Add(moq.Object);
            }
            IBracket b = new RoundRobinGroups(pList, 5);

            b.SetMatchWinner(5, PlayerSlot.Defender);

            Assert.IsFalse(b.CheckForTies());
        }
예제 #14
0
        public void RRGGenerateTiebreakers_ReturnsFalseWhenNoTies()
        {
            List <IPlayer> pList = new List <IPlayer>();

            for (int i = 0; i < 10; ++i)
            {
                Mock <IPlayer> moq = new Mock <IPlayer>();
                moq.Setup(p => p.Id).Returns(i + 1);
                pList.Add(moq.Object);
            }
            IBracket b = new RoundRobinGroups(pList, 5);

            b.SetMatchWinner(4, PlayerSlot.Challenger);

            Assert.IsFalse(b.GenerateTiebreakers());
        }
예제 #15
0
        public void RRGAddGame_CanFinishBracket()
        {
            List <IPlayer> pList = new List <IPlayer>();

            for (int i = 1; i <= 4; ++i)
            {
                Mock <IPlayer> moq = new Mock <IPlayer>();
                moq.Setup(p => p.Id).Returns(i);
                pList.Add(moq.Object);
            }
            IBracket b = new RoundRobinGroups(pList, 2);

            for (int n = 1; n <= b.NumberOfMatches; ++n)
            {
                b.AddGame(n, 1, 0, PlayerSlot.Defender);
            }
            Assert.IsTrue(b.IsFinished);
        }
예제 #16
0
        public void RRGResetMatchScore_ResetsFromAllGroups()
        {
            List <IPlayer> pList = new List <IPlayer>();

            for (int i = 1; i <= 4; ++i)
            {
                Mock <IPlayer> moq = new Mock <IPlayer>();
                moq.Setup(p => p.Id).Returns(i);
                pList.Add(moq.Object);
            }
            IBracket b = new RoundRobinGroups(pList, 2);

            int matchNum = b.NumberOfMatches;

            b.AddGame(matchNum, 0, 1, PlayerSlot.Challenger);
            b.ResetMatchScore(matchNum);
            Assert.AreEqual(0, b.GetMatch(matchNum).Score[(int)PlayerSlot.Challenger]);
        }
예제 #17
0
        public void RRGCheckForTies_ReturnsTrueIfAnyTieIsFound()
        {
            List <IPlayer> pList = new List <IPlayer>();

            for (int i = 0; i < 12; ++i)
            {
                Mock <IPlayer> moq = new Mock <IPlayer>();
                moq.Setup(p => p.Id).Returns(i + 1);
                pList.Add(moq.Object);
            }
            IBracket b = new RoundRobinGroups(pList, 3);
            int      matchesPerGroup = b.NumberOfMatches / 3;

            for (int n = 1; n <= matchesPerGroup; ++n)
            {
                b.SetMatchWinner(n, PlayerSlot.Defender);
            }

            Assert.IsTrue(b.CheckForTies());
        }
예제 #18
0
        public void RRGCtor_ThrowsNullException()
        {
            IBracket b = new RoundRobinGroups(null, 2);

            Assert.AreEqual(1, 2);
        }