public void TurnChanged() { var state = new GameState(3, "X", "O"); var newState = Logics.ExecuteIntent(state, new Intent("X", 0, 0)); Assert.True(newState.Turn > state.Turn); }
public void CellOwnerNotOverrided() { var state = new GameState(3, "X", "O"); var newState = Logics.ExecuteIntent(state, new Intent("X", 0, 0)); Assert.True(newState.Field.GetCellAt(0, 0).Owner == "X"); Assert.False(Logics.IsIntentValid(newState, new Intent("O", 0, 0))); }
public void CorrectWinner() { var state = new GameState(1, "X", "O"); var newState = Logics.ExecuteIntent(state, new Intent("X", 0, 0)); var result = Logics.TryGetResult(newState); Assert.True(result.Winner == "X"); }
public void CellOwnerChanged() { var state = new GameState(3, "X", "O"); Assert.True(state.Field.GetCellAt(0, 0).Owner != "X"); var newState = Logics.ExecuteIntent(state, new Intent("X", 0, 0)); Assert.True(newState.Field.GetCellAt(0, 0).Owner == "X"); }
public void WinSimple() { var state = new GameState(1, "X", "O"); var newState = Logics.ExecuteIntent(state, new Intent("X", 0, 0)); var result = Logics.TryGetResult(newState); Assert.NotNull(result); Assert.True(result.IsWin); }
public void PlayersCycle() { // 1) "X" // 2) "O" var state = new GameState(3, "X", "O"); state = Logics.ExecuteIntent(state, new Intent("X", 0, 0)); state = Logics.ExecuteIntent(state, new Intent("O", 1, 1)); state = Logics.ExecuteIntent(state, new Intent("X", 2, 2)); }
public void NoWinnerInDraw() { var state = new GameState(3, "X", "O"); foreach (var intent in _drawIntents) { state = Logics.ExecuteIntent(state, intent); } var result = Logics.TryGetResult(state); Assert.True(string.IsNullOrEmpty(result.Winner)); }
public void Draw() { var state = new GameState(3, "X", "O"); foreach (var intent in _drawIntents) { state = Logics.ExecuteIntent(state, intent); } var result = Logics.TryGetResult(state); Assert.NotNull(result); Assert.True(result.IsDraw); }
void Update() { DrawField(); DrawTurnInfo(); while (true) { var intent = AskForIntent(); if (intent != null) { _state = Logics.ExecuteIntent(_state, intent); return; } } }
GameState CheckWin(Intent[] intents, string winner) { var state = new GameState(3, "X", "O"); foreach (var intent in intents) { state = Logics.ExecuteIntent(state, intent); } var result = Logics.TryGetResult(state); Assert.NotNull(result); Assert.True(result.IsWin); Assert.True(result.Winner == winner); return(state); }
public IActionResult PostIntent([FromHeader] string playerSecret, [FromBody] Intent intent) { _logger.LogDebug($"PostIntent: '{intent}'"); var state = _repository.State; if (!Logics.IsIntentValid(state, intent)) { return(BadRequest("Invalid intent")); } if (!IsPlayerSecretValid(intent.Player, playerSecret, out var error)) { return(BadRequest(error)); } _repository.State = Logics.ExecuteIntent(state, intent); _logger.LogDebug("PostIndent: success"); return(Ok()); }
public void ThrowOnInvaldIntent() { Assert.False(Logics.IsIntentValid(null, null)); Assert.Throws <ArgumentException>(() => Logics.ExecuteIntent(null, null)); }
protected override void OnValidIntentCreated(Intent intent) { _state = Logics.ExecuteIntent(_state, intent); OnStateUpdated(); }