예제 #1
0
파일: tests.py 프로젝트: ingniq/algorithms
    def test_find_all(self):
        ol = OrderedStringList(True)

        ol.add("12")
        ol.add("55")
        ol.add("12")

        # поиск значения
        nodes = ol.find_all("12")
        self.assertEqual(len(nodes), 2)

        for node in nodes:
            self.assertEqual(node.value, "12")

        # поиск несуществующего значения
        nodes = ol.find_all("120")
        self.assertEqual(len(nodes), 0)

        # поиск по нулевому значению
        ol.add("")
        nodes = ol.find_all("")
        self.assertEqual(len(nodes), 1)

        # поиск в пустом списке
        ol = OrderedStringList(True)
        nodes = ol.find_all("12")
        self.assertEqual(len(nodes), 0)

        # поиск в списке из одного узла
        ol.add("12")
        nodes = ol.find_all("12")
        self.assertEqual(len(nodes), 1)

        for node in nodes:
            self.assertEqual(node.value, "12")

        # поиск в списке из одного узла несуществующего элемента
        nodes = ol.find_all("10")
        self.assertEqual(len(nodes), 0)
예제 #2
0
파일: tests.py 프로젝트: ingniq/algorithms
    def test_delete(self):
        ol = OrderedStringList(True)

        ol.add("12")
        ol.add("55")
        ol.add("12")
        self.assertEqual(ol.len(), 3)

        # удаление первого найденого элемента из нескольких найденных
        NODE_VALUE = "12"
        nodes = ol.find_all(NODE_VALUE)
        self.assertEqual(len(nodes), 2)

        ol.delete(NODE_VALUE)
        nodes = ol.find_all(NODE_VALUE)
        self.assertEqual(len(nodes), 1)
        self.assertEqual(ol.len(), 2)
        self.assertEqual(ol.head.value, "12")
        self.assertEqual(ol.tail.value, "55")

        # удаление всех найденных элементов
        ol.add(NODE_VALUE)
        nodes = ol.find_all(NODE_VALUE)
        self.assertEqual(len(nodes), 2)

        ol.delete(NODE_VALUE, True)
        nodes = ol.find_all(NODE_VALUE)
        self.assertEqual(len(nodes), 0)
        self.assertEqual(ol.len(), 1)
        self.assertEqual(ol.head.value, "55")
        self.assertEqual(ol.tail.value, "55")

        # удаление единственного элемента в списке
        ol.delete("55")
        self.assertEqual(ol.len(), 0)
        self.assertIsNone(ol.head)
        self.assertIsNone(ol.tail)

        # удаление элемента из пустого списка
        self.assertEqual(ol.len(), 0)
        ol.delete(55)
        self.assertEqual(ol.len(), 0)
        self.assertIsNone(ol.head)
        self.assertIsNone(ol.tail)

        # удаление элемента из списка
        # после чего остается только один элемент в списке
        ol.add(NODE_VALUE)
        ol.add("55")
        self.assertEqual(ol.len(), 2)

        ol.delete("55")
        self.assertEqual(ol.head.value, "12")
        self.assertEqual(ol.tail.value, "12")
        self.assertIsNone(ol.head.next)
        self.assertIsNone(ol.tail.next)
        self.assertEqual(ol.len(), 1)

        ol.add("55")
        self.assertEqual(ol.len(), 2)

        ol.delete(NODE_VALUE)
        self.assertEqual(ol.head.value, "55")
        self.assertEqual(ol.tail.value, "55")
        self.assertIsNone(ol.head.next)
        self.assertIsNone(ol.tail.next)
        self.assertEqual(ol.len(), 1)

        # проверка на удаление элементов с пустой строкой
        ol = OrderedStringList(True)
        ol.add("")
        ol.add("")
        ol.add("1")
        ol.add("1")
        ol.add("2")
        ol.add("2")
        self.assertEqual(ol.len(), 6)

        ol.delete("1", True)
        ol.delete("2", True)
        ol.delete("")

        self.assertEqual(ol.head.value, "")
        self.assertEqual(ol.tail.value, "")
        self.assertIsNone(ol.head.next)
        self.assertIsNone(ol.tail.next)
        self.assertEqual(ol.len(), 1)