public void CheckSecondSituationHorizontallyTest() { Board board = new Board(); AlphaBeta alphaBeta = new AlphaBeta(); int result = 0; //OOO_ board.PutToken(0); board.PutToken(1); board.PutToken(2); alphaBeta.CheckSecondSituationHorizonatally(true, board, ref result); Assert.AreEqual(900000, result); result = 0; //_OO_O board.RemoveToken(0); board.PutToken(4); alphaBeta.CheckSecondSituationHorizonatally(true, board, ref result); Assert.AreEqual(900000, result); result = 0; //_OOOX board.RemoveToken(4); board.PutToken(4); board.PutToken(3); alphaBeta.CheckSecondSituationHorizonatally(true, board, ref result); Assert.AreEqual(900000, result); result = 0; //_OOO_ board.RemoveToken(4); alphaBeta.CheckSecondSituationHorizonatally(true, board, ref result); Assert.AreEqual(int.MaxValue, result); result = 0; //_OOO___ //_XOXOXO board = new Board(); board.PutToken(2); board.PutToken(4); board.PutToken(6); board.PutToken(1); board.PutToken(3); board.PutToken(5); board.PutToken(1); board.PutToken(2); board.PutToken(3); alphaBeta.CheckSecondSituationHorizonatally(true, board, ref result); Assert.AreEqual(900000, result); result = 0; //_OOO___ //XXOXOXO board.PutToken(0); alphaBeta.CheckSecondSituationHorizonatally(true, board, ref result); Assert.AreEqual(int.MaxValue, result); result = 0; //XOOO___ //XXOXOXO board.PutToken(0); alphaBeta.CheckSecondSituationHorizonatally(true, board, ref result); Assert.AreEqual(900000, result); result = 0; //_XO_OO_ //_OOOXXX board = new Board(); board.PutToken(1); board.PutToken(2); board.PutToken(3); board.PutToken(4); board.PutToken(5); board.PutToken(6); board.PutToken(1); board.PutToken(2); board.PutToken(4); board.PutToken(5); alphaBeta.CheckSecondSituationHorizonatally(true, board, ref result); Assert.AreEqual(900000, result); result = 0; //OOO____ //XXX_OOO board = new Board(); board.PutToken(0); board.PutToken(1); board.PutToken(2); board.PutToken(0); board.PutToken(1); board.PutToken(2); board.PutToken(4); board.PutToken(5); board.PutToken(6); alphaBeta.CheckSecondSituationHorizonatally(true, board, ref result); Assert.AreEqual(900000, result); //GENERALLY UPPER EXAMPLE SHOULD RETURN INFINITY, BUT WE DONT CHECK IT... //ITS LIKE TWO VERY GOOD SITUATIONS. WE CHECK JUST ONE. //IMAGINE OTHER SITUATION: //_OOOXOX //_OOOXOX //THIS EXAMPLE ALSO SHOWS TWO VERY GOOD SITUATIONS BUT IT SHOULD NOT RETURN INF //SHOULD WE CHECK THIS SPECIAL ONE? ITS ADDITIONAL IFS... TOO MANY... //OOOX___ result = 0; board = new Board(); board.PutToken(0); board.PutToken(1); board.PutToken(2); board.PutToken(3); var res = alphaBeta.CheckSecondSituationHorizonatally(true, board, ref result); Assert.IsFalse(res); Assert.AreEqual(50000, result); //_OOX___ result = 0; board.RemoveToken(0); alphaBeta.CheckSecondSituationHorizonatally(true, board, ref result); Assert.IsFalse(res); Assert.AreEqual(0, result); //___OOO_ result = 0; board = new Board(); board.PutToken(3); board.PutToken(4); board.PutToken(5); alphaBeta.CheckSecondSituationHorizonatally(true, board, ref result); Assert.AreEqual(int.MaxValue, result); board.PutToken(2); alphaBeta.CheckSecondSituationHorizonatally(true, board, ref result); Assert.AreEqual(900000, result); }