text: import unittest
  import puzzle8
  import search
  import time
  
  class TestMethods(unittest.TestCase):
  
      offTwoPuzzle = puzzle8.state([3,4,5,2,0,6,1,8,7])
  
      gradePuzzle1 = puzzle8.state([8,7,6,5,4,3,2,1,0])
      gradePuzzle2 = puzzle8.state([1,2,3,4,5,6,7,8,0])
      
  
      def setUp(self):
          self.gradePuzzles = [247860748,253206748,253780508,152293420,
                               300501380, 108306836]
          self.pathLengths = [2,4,8,10,12,16]
  
      def testItDeepGrading(self):
          print("The last iteration may be very slow. On my laptop, it took")
          print("approximately 5-6 minutes to run the last test.")
          startTime = time.time()
          for i in range(len(self.gradePuzzles)):
              print("\nTrying to find a solution for puzzle with solution of depth",
                    self.pathLengths[i])
              print("Starting puzzle:")
              puzzle8.display(self.gradePuzzles[i])
              solnPath = search.itdeep(self.gradePuzzles[i])
              print("Found a solution, of depth", len(solnPath))
              print("Solution path:", solnPath)
              self.assertEqual(len(solnPath),self.pathLengths[i])
          print('it deep time',time.time()-startTime)
  
  
  
  if __name__=='__main__':
      unittest.main()