def test_three_letter(self): l1 = LinkedList() l1.add('a') l1.add('b') l1.add('a') self.assertEqual(True, isPalindrome(l1, len(l1), "3"))
def test_cycle(self): l1 = LinkedList() l1.add(1) l1.add(2) l1.add(3) l1.add(4) l1.root.next.next.next.next = l1.root.next
def test_no_cycle(self): l1 = LinkedList() l1.add(1) l1.add(2) l1.add(3) l1.add(4) self.assertEqual(None, findCycleStart(l1))
def test_four_elements(self): l1 = LinkedList() l1.add(1) l1.add(2) l1.add(3) l1.add(4) self.assertEqual(2, kFromEnd(l1, 2))
def test_cycle_immediately(self): l1 = LinkedList() l1.add(1) l1.add(2) l1.add(3) l1.add(4) l1.root.next.next.next.next = l1.root
def test_different_nums(self): diff_nums = LinkedList() diff_nums.add(3) diff_nums.add(4) diff_nums.add(2) diff_nums.add(1) diff_nums.add(7) node = diff_nums.root.next.next deleteMiddle(node) result = LinkedList() result.add(3) result.add(4) result.add(1) result.add(7) self.assertEqual(result, diff_nums)
def test_long_short_parameters(self): l1 = LinkedList() l2 = LinkedList() l1.add(1) l1.add(0) l1.add(0) l1.add(0) l2.add(1) result = LinkedList() result.add(1) result.add(0) result.add(0) result.add(1) self.assertEqual(result, addLists(l1, l2))
def test_partition_sorted_list(self): l1 = LinkedList() result = LinkedList() result.add(1) result.add(4) result.add(3) result.add(2) l1.add(1) l1.add(2) l1.add(3) l1.add(4) self.assertEqual(result, partitionList(l1, 2))
def test_partition_four_elem(self): l1 = LinkedList() result = LinkedList() result.add(2) result.add(1) result.add(4) result.add(3) l1.add(1) l1.add(3) l1.add(4) l1.add(2) self.assertEqual(result, partitionList(l1, 3))
def test_four_elements(self): four_elem = LinkedList() four_elem.add(1) four_elem.add(2) four_elem.add(3) four_elem.add(4) node = four_elem.root.next.next deleteMiddle(node) result = LinkedList() result.add(1) result.add(2) result.add(4) self.assertEqual(result, four_elem)
def test_three_elements(self): three_elem = LinkedList() three_elem.add(1) three_elem.add(2) three_elem.add(3) node = three_elem.root.next deleteMiddle(node) result = LinkedList() result.add(1) result.add(3) self.assertEqual(result, three_elem)
def test_two_letter(self): l1 = LinkedList() l1.add('a') l1.add('b') self.assertEqual(False, isPalindrome(l1, len(l1), "2"))
def test_large_elements(self): l1 = LinkedList() result = LinkedList() l1.add(2) l1.add(9) l1.add(7) l1.add(6) l1.add(3) l1.add(4) l1.add(1) result.add(1) result.add(3) result.add(2) result.add(4) result.add(6) result.add(7) result.add(9) self.assertEqual(result, partitionList(l1, 4))
class TestRemoveDups(unittest.TestCase): def helper_equal_lists(self, l1, l2): node1 = l1.root node2 = l2.root while node1 and node2: if (node1.data != node2.data): return False node1 = node1.next node2 = node2.next return not (node1 or node2) def setUp(self): self.l1 = LinkedList() self.l2 = LinkedList() def test_single_element(self): self.l1.add(1) self.l2.add(1) self.assertEqual(self.helper_equal_lists(self.l2, removeDups(self.l1)), True) def test_one_dup(self): self.l1.add(1) self.l1.add(2) self.l1.add(2) self.l2.add(1) self.l2.add(2) self.assertEqual(self.helper_equal_lists(self.l2, removeDups(self.l1)), True) def test_three_dups(self): self.l1.add(1) self.l1.add(2) self.l1.add(2) self.l1.add(3) self.l1.add(3) self.l2.add(1) self.l2.add(2) self.l2.add(3) self.assertEqual(self.helper_equal_lists(self.l2, removeDups(self.l1)), True) def test_high_dup_occurence(self): self.l1.add(1) self.l1.add(2) self.l1.add(2) self.l1.add(3) self.l1.add(3) self.l1.add(3) self.l1.add(3) self.l2.add(1) self.l2.add(2) self.l2.add(3) self.assertEqual(self.helper_equal_lists(self.l2, removeDups(self.l1)), True) def test_interspersed_dups(self): self.l1.add(1) self.l1.add(2) self.l1.add(2) self.l1.add(3) self.l1.add(3) self.l1.add(4) self.l1.add(4) self.l1.add(3) self.l1.add(5) self.l1.add(5) self.l1.add(5) self.l1.add(3) self.l1.add(2) self.l1.add(6) self.l1.add(6) self.l2.add(1) self.l2.add(2) self.l2.add(3) self.l2.add(4) self.l2.add(5) self.l2.add(6) self.assertEqual(self.helper_equal_lists(self.l2, removeDups(self.l1)), True) def test_out_of_order_dups(self): self.l1.add(1) self.l1.add(3) self.l1.add(2) self.l1.add(5) self.l1.add(2) self.l1.add(3) self.l1.add(4) self.l1.add(4) self.l1.add(3) self.l1.add(5) self.l1.add(5) self.l1.add(3) self.l1.add(2) self.l1.add(6) self.l1.add(6) self.l2.add(1) self.l2.add(3) self.l2.add(2) self.l2.add(5) self.l2.add(4) self.l2.add(6) self.assertEqual(self.helper_equal_lists(self.l2, removeDups(self.l1)), True) def test_invalid_case_dups_in_expected(self): self.l1.add(1) self.l1.add(3) self.l1.add(2) self.l1.add(5) self.l1.add(2) self.l1.add(3) self.l1.add(4) self.l1.add(4) self.l1.add(3) self.l1.add(5) self.l1.add(5) self.l1.add(3) self.l1.add(2) self.l1.add(6) self.l1.add(6) self.l2.add(1) self.l2.add(3) self.l2.add(3) self.l2.add(2) self.l2.add(5) self.l2.add(4) self.l2.add(6) self.assertEqual(self.helper_equal_lists(self.l2, removeDups(self.l1)), False) def test_invalid_case_dups_out_of_order(self): self.l1.add(1) self.l1.add(3) self.l1.add(2) self.l1.add(5) self.l1.add(2) self.l1.add(3) self.l1.add(4) self.l1.add(4) self.l1.add(3) self.l1.add(5) self.l1.add(5) self.l1.add(3) self.l1.add(2) self.l1.add(6) self.l1.add(6) self.l2.add(3) self.l2.add(1) self.l2.add(2) self.l2.add(5) self.l2.add(4) self.l2.add(6) self.assertEqual(self.helper_equal_lists(self.l2, removeDups(self.l1)), False)
def test_long_parameters_result_overflow(self): l1 = LinkedList() l2 = LinkedList() l1.add(1) l1.add(0) l1.add(0) l1.add(0) l2.add(9) l2.add(0) l2.add(0) l2.add(0) result = LinkedList() result.add(1) result.add(0) result.add(0) result.add(0) result.add(0) self.assertEqual(result, addLists(l1, l2))
def test_three_digit(self): l1 = LinkedList() l2 = LinkedList() l1.add(1) l1.add(2) l1.add(3) l2.add(4) l2.add(5) l2.add(6) result = LinkedList() result.add(5) result.add(7) result.add(9) self.assertEqual(result, addLists(l1, l2))
def test_overflow_ones_place(self): l1 = LinkedList() l2 = LinkedList() l1.add(2) l1.add(1) l1.add(4) l2.add(4) l2.add(1) l2.add(6) result = LinkedList() result.add(6) result.add(3) result.add(0) self.assertEqual(result, addLists(l1, l2))
def test_one_element(self): l1 = LinkedList() l1.add(1) self.assertEqual(1, kFromEnd(l1, 0))
def test_two_elements(self): l1 = LinkedList() l1.add(1) l1.add(2) self.assertEqual(1, kFromEnd(l1, 1))
def test_large_elements(self): l1 = LinkedList() l1.add(1) l1.add(2) l1.add(3) l1.add(4) l1.add(5) l1.add(6) l1.add(7) l1.add(8) l1.add(9) l1.add(10) l1.add(11) self.assertEqual(8, kFromEnd(l1, 3))