from unittest import TestCase
from util import BLACK as B,WHITE as W,EMPTY as _
from go.core import isLegalPosition, Go
class TestLegal(TestCase):
def testLegal(self):
board=[
[_,_,_,_,_],
[B,B,B,B,B],
[W,W,_,B,_],
[_,_,_,W,W],
[_,W,_,W,_]
]
self.assertTrue(isLegalPosition(board))
def testIllegal(self):
board=[
[_,B,_,_,_],
[B,W,B,_,_],
[_,B,_,_,_],
[_,_,_,_,_],
[_,_,_,_,_]
]
self.assertFalse(isLegalPosition(board))
class TestMove(TestCase):
def testCapture(self):
g=Go(3)
g.load([
[_,B,_],
[B,W,_],
[_,B,_]
])
g.toMove=B
g.doMove(B,1,2)
self.assertEqual(g.board,[
[_,B,_],
[B,_,B],
[_,B,_]
])
g._helper.clear()
for row in g._helper._board:
for x in row:
self.assertEqual(x,0)
def testUndo(self):
g=Go(3)
g.load([
[_,B,_],
[B,W,_],
[_,B,_]
])
g.toMove=B
g.doMove(B,1,2)
g.undoMove(1,2,((1,1),))
self.assertEqual(g.board,[
[_,B,_],
[B,W,_],
[_,B,_]
])