示例#1
0
 def testSolveTwice(self):
     page1 = MazePage(name='1', size=(3, 2), start=(1, 0), goal=(1, 1))
     page2 = MazePage(name='2', size=(3, 2), start=(2, 1), goal=(2, 1))
     page2[2][1].addExit(0, 1)
     
     page1.solve(page2) # ignore first result
     moves, _ = page1.solve(page2) # repeat the call
     
     self.assertEqual([(page1, 0, 1)], moves)
示例#2
0
 def testMultipleSolutionsError(self):
     page1 = MazePage(name='1', size=(2, 2), start=(0, 0), goal=(1, 1))
     page2 = MazePage(name='2', size=(2, 1), start=(0, 0), goal=(1, 0))
     page2[0][0].addExit(0, 1)
     page2[0][0].addExit(1, 0)
     page1[1][0].addExit(1, 0)
     page1[0][1].addExit(1, 0)
     page2[1][0].addExit(0, 1)
     page2[1][0].addExit(1, 0)
     
     with self.assertRaises(MultipleSolutionsError):
         page1.solve(page2)
示例#3
0
 def testMoveError(self):
     page1 = MazePage(name='1', size=(3, 2), start=(2, 0), goal=(1, 1))
     page2 = MazePage(name='2', size=(3, 2), start=(2, 1), goal=(2, 1))
     page2[2][1].addExit(1, 0)
     
     moves, _ = page1.solve(page2)
     
     self.assertEqual(None, moves)
示例#4
0
 def testSolve(self):
     page1 = MazePage(name='1', size=(3, 2), start=(1, 0), goal=(1, 1))
     page2 = MazePage(name='2', size=(3, 2), start=(2, 1), goal=(2, 1))
     page2[2][1].addExit(0, 1)
     
     moves, sidetrack_depth = page1.solve(page2)
     
     self.assertEqual([(page1, 0, 1)], moves)
     self.assertEqual(0, sidetrack_depth)
示例#5
0
 def testPartnerSolution(self):
     page1 = MazePage(name='1', size=(3, 2), start=(1, 0), goal=(2, 0))
     page2 = MazePage(name='2', size=(3, 2), start=(2, 1), goal=(2, 0))
     page2[2][1].addExit(1, 0)
     page1[2][0].addExit(0, -1)
     
     moves, _ = page1.solve(page2)
     
     self.assertEqual([(page1, 1, 0), (page2, 0, -1)], moves)
示例#6
0
 def testBacktrackSolution(self):
     page1 = MazePage(name='1', size=(3, 2), start=(1, 0), goal=(2, 0))
     page2 = MazePage(name='2', size=(3, 2), start=(2, 1), goal=(2, 1))
     page2[2][1].addExit(0, 1)
     page2[2][1].addExit(1, 0)
     
     moves, _ = page1.solve(page2)
     
     self.assertEqual([(page1, 1, 0)], moves)
示例#7
0
 def testCycle(self):
     page1 = MazePage(name='1', size=(2, 2), start=(0, 0), goal=(1, 1))
     page2 = MazePage(name='2', size=(2, 2), start=(0, 0), goal=(1, 1))
     page2[0][0].addExit(1, 0)
     page2[1][0].addExit(-1, 0)
     page1[1][0].addExit(1, 0)
     page1[0][0].addExit(-1, 0)
     
     moves, _ = page1.solve(page2)
     
     self.assertEqual(None, moves)