public void ShouldHighlightMovablePositions()
        {
            var game = new Game(new Board(3, 3, _ => false));

            game.Board[new Position(0, 0)].Piece = InitialSetup.CreatePiece(Spy.Rank, game.Players[0]);
            game.Board[new Position(0, 1)].Piece = InitialSetup.CreatePiece(Spy.Rank, game.Players[0]);
            game.Board[new Position(1, 0)].Piece = InitialSetup.CreatePiece(Spy.Rank, game.Players[0]);

            game.Board[new Position(2, 2)].Piece = InitialSetup.CreatePiece(Spy.Rank, game.Players[1]);

            var viewModel     = new GameViewModel(game);
            var cellPositions = GetCellPositions(viewModel);

            cellPositions(c => c.IsMovable).Should().BeEquivalentTo(new[] { new Position(0, 1), new Position(1, 0) });

            viewModel.Board[new Position(1, 0)].Background.Should().Be(KnownColors.Movable);
            viewModel.Board[new Position(0, 1)].Background.Should().Be(KnownColors.Movable);
            viewModel.Board[new Position(0, 0)].Background.Should().Be(KnownColors.NotMovable);
            viewModel.Board[new Position(2, 2)].Background.Should().Be(KnownColors.NotMovable);

            viewModel.Board[new Position(1, 0)].OnClick();
            viewModel.Board[new Position(1, 1)].OnClick();

            cellPositions(c => c.IsMovable).Should().BeEquivalentTo(new[] { new Position(2, 2) });
        }
            AttackTestContext(int attackerRank, int defenderRank)
            {
                Game = new Game(new Board(2, 1, _ => false));

                Attacker = Game.Board[Position1].Piece = InitialSetup.CreatePiece(attackerRank, Game.Players[0]);
                Defender = Game.Board[Position2].Piece = InitialSetup.CreatePiece(defenderRank, Game.Players[1]);

                GameViewModel = new GameViewModel(Game);
            }
        public void ShouldShowPieceNames()
        {
            var min = Flag.Rank;
            var max = Bomb.Rank;

            var game = new Game(new Board(1, max - min + 1, _ => false));

            for (var rank = min; rank <= max; rank++)
            {
                game.Board[new Position(0, rank - min)].Piece = InitialSetup.CreatePiece(rank, game.Players[1]);
            }

            var viewModel = new GameViewModel(game);

            viewModel.Board.Cells.Select(c => c.PieceShortName).Should().Equal(new[] { "F", "S", "2", "3", "4", "5", "6", "7", "8", "9", "10", "B" });
            viewModel.Board.Cells.Select(c => c.PieceLongName).Should().Equal(new[] { "Flag", "Spy", "Scout", "Miner", "Sergeant", "Lieutenant", "Captain", "Major", "Colonel", "General", "Marshal", "Bomb" });
        }