示例#1
0
    def test_three_letter(self):
        l1 = LinkedList()
        l1.add('a')
        l1.add('b')
        l1.add('a')

        self.assertEqual(True, isPalindrome(l1, len(l1), "3"))
示例#2
0
    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
示例#3
0
    def test_no_cycle(self):
        l1 = LinkedList()
        l1.add(1)
        l1.add(2)
        l1.add(3)
        l1.add(4)

        self.assertEqual(None, findCycleStart(l1))
示例#4
0
    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))
示例#5
0
    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
示例#6
0
    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)
示例#7
0
    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))
示例#8
0
    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))
示例#9
0
    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))
示例#10
0
    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)
示例#11
0
    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)
示例#12
0
    def test_two_letter(self):
        l1 = LinkedList()
        l1.add('a')
        l1.add('b')

        self.assertEqual(False, isPalindrome(l1, len(l1), "2"))
示例#13
0
    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))
示例#14
0
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)
示例#15
0
    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))
示例#16
0
    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))
示例#17
0
    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))
示例#18
0
 def test_one_element(self):
     l1 = LinkedList()
     l1.add(1)
     self.assertEqual(1, kFromEnd(l1, 0))
示例#19
0
 def test_two_elements(self):
     l1 = LinkedList()
     l1.add(1)
     l1.add(2)
     self.assertEqual(1, kFromEnd(l1, 1))
示例#20
0
    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))