def testFindMiddle(self):
     size = 100
     node = find_middle(getLinkedList(range(size)))
     self.assertEqual(node.val, size // 2)
     size -= 1
     node = find_middle(getLinkedList(range(size)))
     self.assertEqual(node.val, size // 2)
 def checkSortImpl(self, sort):
     array = [randrange(5000) for i in range(5000)]
     head = getLinkedList(array)
     head = sort(head)
     array.sort()
     for num in array:
         self.assertEqual(head.val, num)
         head = head.next
     self.assertEqual(head, None)
 def testCycleDetection(self):
     size = 100
     head = getLinkedList(range(size))
     curr = head
     nodes = []
     while curr:
         nodes.append(curr)
         curr = curr.next
     if random.random() < 0.5:
         node = random.choice(nodes)
         nodes[-1].next = node
         self.assertTrue(cycle_detection(head))
         self.assertEqual(node, cycle_finding(head))
     else:
         self.assertFalse(cycle_detection(head))
         self.assertIsNone(cycle_finding(head))