public void DEB_RPFFM_ResetsFutureScores()
        {
            List <IPlayer> pList = new List <IPlayer>();

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

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

            b.ResetMatchScore(b.GetLowerRound(1)[0].MatchNumber);
            Assert.AreEqual(0, b.GetLowerRound(2)[0].Score[0]);
        }
        public void DEBAddGame_MovesTeamsThroughLowerBracket()
        {
            List <IPlayer> pList = new List <IPlayer>();

            for (int i = 0; i < 8; ++i)
            {
                Mock <IPlayer> moq = new Mock <IPlayer>();
                moq.Setup(p => p.Id).Returns(i);
                pList.Add(moq.Object);
            }
            IBracket b = new DoubleElimBracket(pList);

            //b.CreateBracket();

            b.AddGame(1, 1, 0, PlayerSlot.Defender);
            b.AddGame(2, 1, 0, PlayerSlot.Defender);

            b.AddGame(b.GetLowerRound(1)[0].MatchNumber, 1, 0, PlayerSlot.Defender);
            Assert.AreEqual(b.GetLowerRound(1)[0].Players[(int)PlayerSlot.Defender],
                            b.GetLowerRound(2)[0].Players[(int)PlayerSlot.Challenger]);
        }
        public void DEB_RPFFM_RemovesPlayerFromLowerBracket()
        {
            List <IPlayer> pList = new List <IPlayer>();

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

            b.AddGame(1, 1, 0, PlayerSlot.Defender);
            b.RemoveLastGame(1);
            Assert.IsNull(b.GetLowerRound(1)[0].Players[(int)PlayerSlot.Defender]);
        }
        public void DEBGetLowerRound_ReturnsCorrectly()
        {
            List <IPlayer> pList = new List <IPlayer>();

            for (int i = 0; i < 8; ++i)
            {
                Mock <IPlayer> moq = new Mock <IPlayer>();
                moq.Setup(p => p.Id).Returns(i);
                pList.Add(moq.Object);
            }
            IBracket b = new DoubleElimBracket(pList);

            //b.CreateBracket();

            Assert.AreEqual(2, b.GetLowerRound(1).Count);
        }
        public void DEBGetLowerRound_ThrowsIndexException_WithNegativeInput()
        {
            List <IPlayer> pList = new List <IPlayer>();

            for (int i = 0; i < 8; ++i)
            {
                Mock <IPlayer> moq = new Mock <IPlayer>();
                moq.Setup(p => p.Id).Returns(i);
                pList.Add(moq.Object);
            }
            IBracket b = new DoubleElimBracket(pList);

            //b.CreateBracket();

            b.GetLowerRound(-1);
            Assert.AreEqual(1, 2);
        }
        public void DEBCreateBracket_AssignsMatchNumbersToLowerBracket()
        {
            List <IPlayer> pList = new List <IPlayer>();

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

            //b.CreateBracket();

            Assert.AreEqual(b.GetRound(b.NumberOfRounds)[0].MatchNumber + 1,
                            b.GetLowerRound(1)[0].MatchNumber);
        }
        public void DEBSMGFWR_DoesNotUpdateLowerBracketRound()
        {
            List <IPlayer> pList = new List <IPlayer>();

            for (int i = 0; i < 16; ++i)
            {
                Mock <IPlayer> moq = new Mock <IPlayer>();
                moq.Setup(p => p.Id).Returns(i);
                pList.Add(moq.Object);
            }
            IBracket b = new DoubleElimBracket(pList);

            int round = 2;

            b.SetMaxGamesForWholeRound(round, 5);
            Assert.AreEqual(1, b.GetLowerRound(round)[0].MaxGames);
        }
        public void DEB_AddGame_MovesLoserToLowerBracket()
        {
            List <IPlayer> pList = new List <IPlayer>();

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

            //b.CreateBracket();

            b.AddGame(2, 0, 10, PlayerSlot.Challenger);
            Assert.AreEqual(b.GetMatch(2).Players[(int)PlayerSlot.Defender],
                            b.GetLowerRound(1)[0].Players[(int)PlayerSlot.Challenger]);
        }
        public void DEBSMGFWLR_CorrectlyUpdatesLowerBracketRound()
        {
            List <IPlayer> pList = new List <IPlayer>();

            for (int i = 0; i < 16; ++i)
            {
                Mock <IPlayer> moq = new Mock <IPlayer>();
                moq.Setup(p => p.Id).Returns(i);
                pList.Add(moq.Object);
            }
            IBracket b = new DoubleElimBracket(pList);

            int round = 2;
            int games = 5;

            b.SetMaxGamesForWholeLowerRound(round, games);
            Assert.AreEqual(games, b.GetLowerRound(round)[1].MaxGames);
        }
        public void DEBRemoveLastGame_UpdatesALLRankings_WhenMatchWinIsReversed()
        {
            List <IPlayer> pList = new List <IPlayer>();

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

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

            b.RemoveLastGame(b.GetLowerRound(1)[0].MatchNumber);
            Assert.AreEqual(0, b.Rankings.Count);
        }
        public void DEB_RPFFM_OnlyRemovesCorrectPlayersFromFuture()
        {
            List <IPlayer> pList = new List <IPlayer>();

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

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

            b.ResetMatchScore(1);
            Assert.IsNotNull(b.GetLowerRound(1)[0].Players[(int)PlayerSlot.Challenger]);
        }
        public void DEBAddGame_DropsLoserFromSecondRound()
        {
            List <IPlayer> pList = new List <IPlayer>();

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

            //b.CreateBracket();

            b.AddGame(1, 1, 0, PlayerSlot.Defender);
            b.AddGame(2, 1, 0, PlayerSlot.Defender);

            b.AddGame(3, 1, 0, PlayerSlot.Defender);
            Assert.AreEqual(b.GetMatch(3).Players[(int)PlayerSlot.Challenger],
                            b.GetLowerRound(2)[0].Players[(int)PlayerSlot.Defender]);
        }
        public void DEB_CreateBracket_AddsSingleElimPlayinRound_ForAbnormalSizedTournaments()
        {
            List <IPlayer> pList = new List <IPlayer>();

            for (int i = 0; i < 15; ++i)
            {
                Mock <IPlayer> moq = new Mock <IPlayer>();
                moq.Setup(p => p.Id).Returns(i);
                pList.Add(moq.Object);
            }
            IBracket b = new DoubleElimBracket(pList);
            //b.CreateBracket();
            int numLowerMatches = 0;

            for (int r = 1; r <= b.NumberOfLowerRounds; ++r)
            {
                List <IMatch> round = b.GetLowerRound(r);
                numLowerMatches += round.Count;
            }

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

            for (int i = 0; i < 8; ++i)
            {
                Mock <IPlayer> moq = new Mock <IPlayer>();
                moq.Setup(p => p.Id).Returns(i);
                pList2.Add(moq.Object);
            }
            IBracket b2 = new DoubleElimBracket(pList2);
            //b.CreateBracket();
            int numSecondLowerMatches = 0;

            for (int r = 1; r <= b2.NumberOfLowerRounds; ++r)
            {
                List <IMatch> round = b2.GetLowerRound(r);
                numSecondLowerMatches += round.Count;
            }

            Assert.AreEqual(numLowerMatches, numSecondLowerMatches);
        }
        public void DEBRemoveLastGame_RemovesFromLowerBracket()
        {
            List <IPlayer> pList = new List <IPlayer>();

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

            b.AddGame(1, 1, 0, PlayerSlot.Defender);
            b.AddGame(2, 1, 0, PlayerSlot.Defender);
            b.SetMaxGamesForWholeLowerRound(1, 3);
            int mNum = b.GetLowerRound(1)[0].MatchNumber;

            b.AddGame(mNum, 1, 0, PlayerSlot.Defender);

            b.RemoveLastGame(mNum);
            Assert.AreEqual(0, b.GetMatch(mNum).Score[(int)PlayerSlot.Defender]);
        }
        public void DEB_CreateBracket_CreatesLowerBracketMatches()
        {
            List <IPlayer> pList = new List <IPlayer>();

            for (int i = 0; i < 32; ++i)
            {
                Mock <IPlayer> moq = new Mock <IPlayer>();
                moq.Setup(p => p.Id).Returns(i);
                pList.Add(moq.Object);
            }
            IBracket b = new DoubleElimBracket(pList);
            //b.CreateBracket(2);

            int numLowerMatches = 0;

            for (int r = 1; r <= b.NumberOfLowerRounds; ++r)
            {
                List <IMatch> round = b.GetLowerRound(r);
                numLowerMatches += round.Count;
            }
            Assert.AreEqual(30, numLowerMatches);
        }
        public void DEBAddGame_ThrowsMatchesModifiedEvent_IncludesLowerRoundAdvancement()
        {
            int affectedMatches = 0;

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

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

            b.SetMatchWinner(1, PlayerSlot.Defender);
            b.SetMatchWinner(2, PlayerSlot.Defender);

            b.MatchesModified += delegate(object sender, BracketEventArgs e)
            {
                affectedMatches = e.UpdatedMatches.Count;
            };
            b.AddGame(b.GetLowerRound(1)[0].MatchNumber, 3, 2, PlayerSlot.Defender);
            Assert.AreEqual(2, affectedMatches);
        }