Example #1
0
        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);
        }
Example #2
0
        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)));
        }
Example #3
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");
        }
Example #4
0
        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");
        }
Example #5
0
        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);
        }
Example #6
0
        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));
        }
Example #7
0
        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));
        }
Example #8
0
        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);
        }
Example #9
0
 void Update()
 {
     DrawField();
     DrawTurnInfo();
     while (true)
     {
         var intent = AskForIntent();
         if (intent != null)
         {
             _state = Logics.ExecuteIntent(_state, intent);
             return;
         }
     }
 }
Example #10
0
        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);
        }
Example #11
0
        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());
        }
Example #12
0
 public void ThrowOnInvaldIntent()
 {
     Assert.False(Logics.IsIntentValid(null, null));
     Assert.Throws <ArgumentException>(() => Logics.ExecuteIntent(null, null));
 }
Example #13
0
 protected override void OnValidIntentCreated(Intent intent)
 {
     _state = Logics.ExecuteIntent(_state, intent);
     OnStateUpdated();
 }