コード例 #1
0
ファイル: tests.py プロジェクト: ingniq/algorithms
    def test_len(self):
        ol = OrderedList(True)

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

        self.assertEqual(ol.len(), 3)

        ol.delete(12, True)
        self.assertEqual(ol.len(), 1)
コード例 #2
0
ファイル: tests.py プロジェクト: ingniq/algorithms
 def test_compare(self):
     ol = OrderedList(True)
     self.assertEqual(ol.compare(1, 2), -1)
     self.assertEqual(ol.compare(2, 2), 0)
     self.assertEqual(ol.compare(3, 2), 1)
     self.assertEqual(ol.compare(3, -1), 1)
     self.assertEqual(ol.compare(3, 0), 1)
     self.assertEqual(ol.compare(0, 0), 0)
     self.assertEqual(ol.compare(-1, 0), -1)
     self.assertEqual(ol.compare(-1, -1), 0)
     self.assertEqual(ol.compare(0, -1), 1)
     self.assertEqual(ol.compare(0.1, 0.05), 1)
コード例 #3
0
ファイル: tests.py プロジェクト: ingniq/algorithms
    def test_print_all_nodes(self):
        import io
        from contextlib import redirect_stdout

        ol = OrderedList(True)
        ol.add(12)
        ol.add(55)
        ol.add(12)
        ol.add(1)

        f = io.StringIO()
        with redirect_stdout(f):
            ol.print_all_nodes()

        actual = f.getvalue()
        expected = "1\n12\n12\n55\n"
        self.assertEqual(actual, expected)

        ol = OrderedList(False)
        ol.add(12)
        ol.add(55)
        ol.add(12)
        ol.add(1)

        f = io.StringIO()
        with redirect_stdout(f):
            ol.print_all_nodes()

        actual = f.getvalue()
        expected = "55\n12\n12\n1\n"
        self.assertEqual(actual, expected)
コード例 #4
0
ファイル: tests.py プロジェクト: ingniq/algorithms
    def test_add(self):
        ol = OrderedList(True)

        ol.add(128)
        self.assertEqual(ol.head.value, 128)
        self.assertEqual(ol.tail.value, 128)

        ol.add(10)
        self.assertEqual(ol.head.value, 10)
        self.assertEqual(ol.head.next.value, 128)
        self.assertEqual(ol.tail.prev.value, 10)
        self.assertEqual(ol.tail.value, 128)

        ol.add(1)
        self.assertEqual(ol.head.value, 1)
        self.assertEqual(ol.head.next.value, 10)
        self.assertEqual(ol.tail.value, 128)

        ol.add(130)
        self.assertEqual(ol.head.value, 1)
        self.assertEqual(ol.tail.prev.value, 128)
        self.assertEqual(ol.tail.value, 130)

        ol.add(0)
        self.assertEqual(ol.head.value, 0)
        self.assertEqual(ol.head.next.value, 1)
        self.assertEqual(ol.tail.value, 130)

        ol.add(-1)
        self.assertEqual(ol.head.value, -1)
        self.assertEqual(ol.head.next.value, 0)
        self.assertEqual(ol.tail.value, 130)

        ol = OrderedList(False)
        ol.add(128)
        self.assertEqual(ol.head.value, 128)
        self.assertEqual(ol.tail.value, 128)

        ol.add(10)
        self.assertEqual(ol.head.value, 128)
        self.assertEqual(ol.head.next.value, 10)
        self.assertEqual(ol.tail.prev.value, 128)
        self.assertEqual(ol.tail.value, 10)

        ol.add(1)
        self.assertEqual(ol.head.value, 128)
        self.assertEqual(ol.head.next.value, 10)
        self.assertEqual(ol.tail.prev.value, 10)
        self.assertEqual(ol.tail.value, 1)

        ol.add(130)
        self.assertEqual(ol.head.value, 130)
        self.assertEqual(ol.head.next.value, 128)
        self.assertEqual(ol.head.next.next.value, 10)
        self.assertEqual(ol.tail.value, 1)

        ol.add(0)
        self.assertEqual(ol.head.value, 130)
        self.assertEqual(ol.tail.prev.value, 1)
        self.assertEqual(ol.tail.value, 0)

        ol.add(-1)
        self.assertEqual(ol.head.value, 130)
        self.assertEqual(ol.tail.prev.value, 0)
        self.assertEqual(ol.tail.value, -1)

        ol.add(55)
        self.assertEqual(ol.head.value, 130)
        self.assertEqual(ol.head.next.value, 128)
        self.assertEqual(ol.head.next.next.value, 55)
        self.assertEqual(ol.tail.prev.value, 0)
        self.assertEqual(ol.tail.value, -1)
        ol.add(33)
        self.assertEqual(ol.head.value, 130)
        self.assertEqual(ol.head.next.value, 128)
        self.assertEqual(ol.head.next.next.value, 55)
        self.assertEqual(ol.head.next.next.next.value, 33)
        self.assertEqual(ol.tail.prev.value, 0)
        self.assertEqual(ol.tail.value, -1)
コード例 #5
0
ファイル: tests.py プロジェクト: ingniq/algorithms
    def test_validate_node(self):
        ol = OrderedList(True)

        self.assertTrue(ol._validate_node(Node(123)))
        self.assertFalse(ol._validate_node(123))
        self.assertFalse(ol._validate_node('test'))
コード例 #6
0
ファイル: tests.py プロジェクト: ingniq/algorithms
    def test_clean(self):
        ol = OrderedList(False)

        ol.add(1)
        ol.add(2)
        ol.add(3)

        ol.clean(True)
        self.assertIsNone(ol.head)
        self.assertIsNone(ol.tail)
        self.assertEqual(ol.len(), 0)

        ol.add(1)
        ol.add(2)
        ol.add(3)

        ol.clean(False)
        self.assertIsNone(ol.head)
        self.assertIsNone(ol.tail)
        self.assertEqual(ol.len(), 0)
コード例 #7
0
ファイル: tests.py プロジェクト: ingniq/algorithms
    def test_delete(self):
        ol = OrderedList(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)

        # проверка на удаление элементов со значением 0
        ol = OrderedList(True)
        ol.add(0)
        ol.add(0)
        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(0)

        self.assertEqual(ol.head.value, 0)
        self.assertEqual(ol.tail.value, 0)
        self.assertIsNone(ol.head.next)
        self.assertIsNone(ol.tail.next)
        self.assertEqual(ol.len(), 1)
コード例 #8
0
ファイル: tests.py プロジェクト: ingniq/algorithms
    def test_find_all(self):
        ol = OrderedList(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(0)
        nodes = ol.find_all(0)
        self.assertEqual(len(nodes), 1)

        # поиск в пустом списке
        ol = OrderedList(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)
コード例 #9
0
ファイル: tests.py プロジェクト: ingniq/algorithms
    def test_find(self):
        # asc
        ol = OrderedList(True)

        ol.add(1)
        ol.add(1)
        ol.add(33)
        ol.add(55)
        ol.add(33)

        # поиск по значению, первое совпадение
        node = ol.find(1)
        self.assertEqual(node.value, 1)
        self.assertEqual(node.next.value, 1)

        # поиск по значению, первое совпадение
        node = ol.find(33)
        self.assertEqual(node.value, 33)
        self.assertEqual(node.next.value, 33)
        self.assertEqual(node.prev.value, 1)

        # поиск несуществующего значения
        node = ol.find(128)
        self.assertIsNone(node)

        # поиск по нулевому значению
        ol.add(0)
        node = ol.find(0)
        self.assertEqual(node.value, 0)

        # поиск в пустом списке
        ol = OrderedList(True)
        node = ol.find(12)
        self.assertIsNone(node)

        # поиск в списке из одного узла
        ol.add(12)
        node = ol.find(12)
        self.assertEqual(node.value, 12)

        # поиск в списке из одного узла несуществующего элемента
        node = ol.find(10)
        self.assertIsNone(node)

        # desc
        ol = OrderedList(False)

        ol.add(1)
        ol.add(1)
        ol.add(33)
        ol.add(55)
        ol.add(33)

        node = ol.find(55)
        self.assertEqual(node.value, 55)
        self.assertEqual(node.next.value, 33)

        # поиск по значению, первое совпадение
        node = ol.find(1)
        self.assertEqual(node.value, 1)
        self.assertEqual(node.next.value, 1)
        self.assertEqual(node.prev.value, 33)

        # поиск по значению, первое совпадение
        ol.print_all_nodes()
        node = ol.find(33)
        self.assertEqual(node.value, 33)
        self.assertEqual(node.next.value, 33)
        self.assertEqual(node.prev.value, 55)