示例#1
0
        public void GameTest2()
        {
            var input = @"Player 1:|9|2|6|3|1||Player 2:|5|8|4|7|10".Replace("|", Environment.NewLine);

            var(player1, player2) = DeckParser.Parse(input);
            var game = new Game(new List <Player> {
                player1, player2
            });

            while (!game.Complete())
            {
                game.PlayRound();
            }

            Assert.Equal(3, player2.Deck.Cards.Pop());
            Assert.Equal(2, player2.Deck.Cards.Pop());
            Assert.Equal(10, player2.Deck.Cards.Pop());
            Assert.Equal(6, player2.Deck.Cards.Pop());
            Assert.Equal(8, player2.Deck.Cards.Pop());
            Assert.Equal(5, player2.Deck.Cards.Pop());
            Assert.Equal(9, player2.Deck.Cards.Pop());
            Assert.Equal(4, player2.Deck.Cards.Pop());
            Assert.Equal(7, player2.Deck.Cards.Pop());
            Assert.Equal(1, player2.Deck.Cards.Pop());
        }
示例#2
0
        public void DeckParserLoadsSingleInput()
        {
            var fileName = "Zoo Warlock";
            var sut      = new DeckParser();

            sut.LoadInput(fileName);
            sut.DisplayCode(fileName);
            Assert.IsTrue(fileName.Length > 0);
        }
示例#3
0
        public void ScoreCalcTest()
        {
            var input = @"Player 1:|9|2|6|3|1||Player 2:|5|8|4|7|10".Replace("|", Environment.NewLine);

            var(player1, player2) = DeckParser.Parse(input);
            var game = new Game(new List <Player> {
                player1, player2
            });

            while (!game.Complete())
            {
                game.PlayRound();
            }

            Assert.Equal(306, player2.CalculateScore());
        }
示例#4
0
        public void Puzzle1()
        {
            var input = new FileReader()
                        .GetResource("AdventOfCode2020.Tests.Day22.PuzzleInput.txt");

            var(player1, player2) = DeckParser.Parse(input);
            var game = new Game(new List <Player> {
                player1, player2
            });

            while (!game.Complete())
            {
                game.PlayRound();
            }

            Assert.Equal(35005, player1.CalculateScore());
            Assert.Equal(0, player2.CalculateScore());
        }
示例#5
0
        public void PlayerParser()
        {
            var input = @"Player 1:|9|2|6|3|1||Player 2:|5|8|4|7|10".Replace("|", Environment.NewLine);

            var(player1, player2) = DeckParser.Parse(input);

            Assert.Equal(9, player1.Deck.Cards.Pop());
            Assert.Equal(2, player1.Deck.Cards.Pop());
            Assert.Equal(6, player1.Deck.Cards.Pop());
            Assert.Equal(3, player1.Deck.Cards.Pop());
            Assert.Equal(1, player1.Deck.Cards.Pop());

            Assert.Equal(5, player2.Deck.Cards.Pop());
            Assert.Equal(8, player2.Deck.Cards.Pop());
            Assert.Equal(4, player2.Deck.Cards.Pop());
            Assert.Equal(7, player2.Deck.Cards.Pop());
            Assert.Equal(10, player2.Deck.Cards.Pop());
        }
示例#6
0
        public void Puzzle2()
        {
            var input = new FileReader()
                        .GetResource("AdventOfCode2020.Tests.Day22.PuzzleInput.txt");

            var(player1, player2) = DeckParser.Parse(input);
            var game = new RecursiveCombat(new List <Player> {
                player1, player2
            });

            while (!game.Complete())
            {
                game.PlayRound();
            }

            Assert.Equal(1800, game.Rounds);

            Assert.Equal(9833, game.GetWinner().CalculateScore());
        }
示例#7
0
        public void DeckParserCodesNames()
        {
            var           filesIn = new List <string>();
            DirectoryInfo d       = new DirectoryInfo(
                path: @"d:\temp\decks");

            FileInfo[] Files = d.GetFiles("*.txt");
            foreach (FileInfo file in Files)
            {
                filesIn.Add(
                    Path.GetFileNameWithoutExtension(file.Name));
            }
            var sut = new DeckParser();

            foreach (var item in filesIn)
            {
                sut.LoadLine(item);
            }
        }
示例#8
0
        public void DeckParserLoadsMany()
        {
            var           filesIn = new List <string>();
            DirectoryInfo d       = new DirectoryInfo(
                path: @"d:\temp\decks");

            FileInfo[] Files = d.GetFiles("*.txt");
            foreach (FileInfo file in Files)
            {
                filesIn.Add(
                    Path.GetFileNameWithoutExtension(file.Name));
            }
            var sut = new DeckParser();

            sut.AddCode("#region Decks");
            foreach (var item in filesIn)
            {
                sut.LoadInput(item);
                sut.DisplayCode(item);
            }
            Console.WriteLine($"#endregion");
        }
示例#9
0
        public void TestInfiniteGame()
        {
            var input = @"Player 1:|43|19||Player 2:|2|29|14".Replace("|", Environment.NewLine); var(player1, player2) = DeckParser.Parse(input);
            var game  = new RecursiveCombat(new List <Player> {
                player1, player2
            });

            while (!game.Complete())
            {
                game.PlayRound();
            }

            Assert.Equal(78, player2.CalculateScore());
        }