def test_legal_no_such_player(self): fsm = StateMachine() data = ''' (role x) (init 1) (<= (legal x ?x) (true ?x)) ''' fsm.store(data=data) self.assertFalse(fsm.legal(player='o', move='1'))
def test_legal_player_and_move_failure(self): fsm = StateMachine() data = ''' (role x) (init 1) (<= (legal x ?x) (true ?x)) ''' fsm.store(data=data) self.assertFalse(fsm.legal(player='x', move='2'))
def test_legal_all_moves(self): fsm = StateMachine() data = ''' (role x) (role o) (init 1) (init 2) (init 3) (init 4) (even 2) (even 4) (odd 1) (odd 3) (<= (legal x ?x) (true ?x) (even ?x)) (<= (legal o ?x) (true ?x) (odd ?x)) ''' fsm.store(data=data) self.assertEqual({'x': ['2', '4'], 'o': ['1', '3']}, fsm.legal())
def test_legal_player_moves(self): fsm = StateMachine() data = ''' (role x) (role o) (init 1) (init 2) (init 3) (init 4) (even 2) (even 4) (odd 1) (odd 3) (<= (legal x ?x) (true ?x) (even ?x)) (<= (legal o ?x) (true ?x) (odd ?x)) ''' fsm.store(data=data) self.assertEqual(['2', '4'], fsm.legal(player='x'))