예제 #1
0
 def test_distCoherence(self):
     for iterations in range(10000):    
         R_A=Hanoi.randLocationR(8)
         T_A=Hanoi.SA2TA(Hanoi.rollcall2SA(R_A))
         L_A=Hanoi.rollcall2List(R_A)
         R_B=Hanoi.randLocationR(8)
         T_B=Hanoi.SA2TA(Hanoi.rollcall2SA(R_B))
         dist0=Hanoi.distTA(T_A,T_B)
         #look for neighbors of A, and their distances to B
         Legal=[[False,False,False],[False,False,False],[False,False,False]]
         for i in range(3):
             for j in range(3):
                 Legal[i][j]=Hanoi.isLegalMove(L_A,i,j)
             Legal[i][i]=False #not neighbor to self
         distVect=[]
         for i in range(3):
             for j in range(3):
                 if Legal[i][j]:
                     Hanoi.makeMove(L_A,i,j)
                     T_temp=Hanoi.SA2TA(Hanoi.rollcall2SA(Hanoi.list2Rollcall(L_A)))
                     distVect.append(Hanoi.distTA(T_temp,T_B))
                     Hanoi.makeMove(L_A,j,i)
         self.assertTrue((dist0-1 in distVect) or dist0==0)
         for e in distVect:
             stmt=(e==dist0 or e==dist0+1 or e==dist0-1)
             self.assertTrue(stmt)
         self.assertTrue(len(distVect)==3 or len(distVect)==2)    
예제 #2
0
 def test_makeMoves(self): #probably calls isLegalMove
     L=[[4],[1,2,3],[]];
     Hanoi.makeMove(L,2,0);
     Hanoi.makeMove(L,2,2);
     Hanoi.makeMove(L,0,2);
     Hanoi.makeMove(L,1,2);
     Hanoi.makeMove(L,1,0);
     Hanoi.makeMove(L,2,0);
     Hanoi.makeMove(L,1,2);
     Hanoi.makeMove(L,0,1);
     Hanoi.makeMove(L,0,2);
     Hanoi.makeMove(L,1,2);
     k=[[],[],[1,2,3,4]];
     self.assertEqual(L,k);