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))