public void PickStartingPlayerBeforeOpponent() { var player1 = new Player { User = new User { Id = 1 }, IsOwner = true, Deck = new Deck { BattleKingCard = new DeckCard() } }; var game = new Game { State = new PickStartingPlayerState { Substates = { new PickStartingPlayerSubstate { UserId = 1, CanPickStartingPlayer = true }, new PickStartingPlayerSubstate { UserId = 2, CanPickStartingPlayer = true } } }, Players = { player1, new Player { User = new User { Id = 2 }, Deck = new Deck { BattleKingCard = new DeckCard() } } } }; var command = new PickStartingPlayerCommand { SenderUserId = 1, StartingPlayerUserId = 1 }; command.Execute(game); Assert.Null(command.NextState); }
public void PickStartingPlayer() { var player1 = new Player { User = new User { Id = 1 }, IsOwner = true, Deck = new Deck { BattleKingCard = new DeckCard() } }; var game = new Game { State = new PickStartingPlayerState { Substates = { new PickStartingPlayerSubstate { UserId = 1, CanPickStartingPlayer = true }, new PickStartingPlayerSubstate { UserId = 2 }, } }, Players = { player1, new Player { User = new User { Id = 2 }, Deck = new Deck { BattleKingCard = new DeckCard() } } } }; var command = new PickStartingPlayerCommand { SenderUserId = 1, StartingPlayerUserId = 1 }; command.Execute(game); Assert.True(player1.IsRoundStarter); Assert.IsType(typeof(RedrawState), command.NextState); }
public void PickDifferentStartingPlayerThanOpponent() { var game = new Game { State = new PickStartingPlayerState { Substates = { new PickStartingPlayerSubstate { UserId = 1, CanPickStartingPlayer = true }, new PickStartingPlayerSubstate { UserId = 2, CanPickStartingPlayer = true, StartingPlayerUserId = 2 }, } }, Players = { new Player { User = new User { Id = 1 }, IsOwner = true, Deck = new Deck { BattleKingCard = new DeckCard() } }, new Player { User = new User { Id = 2 }, Deck = new Deck { BattleKingCard = new DeckCard() } } } }; var command = new PickStartingPlayerCommand { SenderUserId = 1, StartingPlayerUserId = 1 }; command.Execute(game); var coinTossEvent = command.Events.SingleOrDefault(); Assert.NotNull(coinTossEvent); Assert.IsType(typeof(CoinTossEvent), coinTossEvent); Assert.IsType(typeof(RedrawState), command.NextState); }