Exemplo n.º 1
0
class DoublyLinkedListTest(unittest.TestCase):
    def setUp(self):
        self.list = DoublyLinkedList()

    def test_addFirst(self):
        self.list.addFirst(1)
        self.list.addFirst(2)
        self.list.addFirst(3)
        self.list.addFirst(4)

        self.assertEqual('4,3,2,1', self.list.toString())

    def test_addLast(self):
        self.list.addLast(1)
        self.list.addLast(2)
        self.list.addLast(3)
        self.list.addLast(4)

        self.assertEqual('1,2,3,4', self.list.toString())

    def test_addFront(self):
        self.list.addFront(1, 0)
        self.list.addFront(2, 0)
        self.list.addFront(3, 1)
        self.list.addFront(4, 2)
        self.list.addFront(5, 2)
        self.list.addFront(6, 3)

        self.assertEqual('2,3,5,6,4,1', self.list.toString())

    def test_addBack(self):
        self.list.addBack(1, 0)
        self.list.addBack(2, 1)
        self.list.addBack(3, 1)
        self.list.addBack(4, 1)

        self.assertEqual('1,2,4,3', self.list.toString())

    def _getNodes(self):
        self.list.addLast(1)
        self.list.addLast(2)
        self.list.addLast(3)
        self.list.addLast(4)
        self.list.addLast(5)

    def test_removeFirst(self):
        self._getNodes()

        self.assertEqual(1, self.list.removeFirst())
        self.assertEqual(2, self.list.removeFirst())
        self.assertEqual(3, self.list.removeFirst())
        self.assertEqual(4, self.list.removeFirst())
        self.assertEqual(5, self.list.removeFirst())
        self.assertIsNone(self.list.removeFirst())

        self._getNodes()
        self.list.removeFirst()
        self.list.removeFirst()
        self.list.addFirst(6)
        self.list.addBack(7, 2)
        self.list.removeFirst()
        self.list.addFront(8, 3)
        self.list.addLast(9)
        self.assertEqual('3,4,7,8,5,9', self.list.toString())

    def test_remove(self):
        self._getNodes()

        self.assertIsNone(self.list.remove(5))
        self.assertIsNone(self.list.remove(-1))
        self.assertEqual(5, self.list.remove(4))
        self.assertEqual(1, self.list.remove(0))
        self.assertEqual(3, self.list.remove(1))
        self.assertEqual(4, self.list.remove(1))
        self.assertEqual(2, self.list.remove(0))

    def test_removeLast(self):
        self._getNodes()

        self.assertEqual(5, self.list.removeLast())
        self.assertEqual(4, self.list.removeLast())
        self.assertEqual(3, self.list.removeLast())
        self.assertEqual(2, self.list.removeLast())
        self.assertEqual(1, self.list.removeLast())
        self.assertIsNone(self.list.removeLast())

    def test_empty(self):
        self.assertEqual(True, self.list.empty())

        self.list.addFirst(1)
        self.assertEqual(False, self.list.empty())

    def test_size(self):
        self.assertEqual(0, self.list.size())

        self.list.addBack(1, 1)
        self.list.addFirst(2)
        self.list.addLast(3)
        self.list.removeFirst()
        self.list.addFront(4, 2)
        self.list.addFirst(5)
        self.list.removeLast()
        self.list.addLast(6)
        self.list.addLast(7)
        self.list.addLast(8)
        self.list.remove(3)

        self.assertEqual('5,1,3,7,8', self.list.toString())
        self.assertEqual(5, self.list.size())

    def test_get(self):
        self._getNodes()

        self.assertIsNone(self.list.get(-1))
        self.assertEqual(1, self.list.get(0))
        self.assertEqual(2, self.list.get(1))
        self.assertEqual(3, self.list.get(2))
        self.assertEqual(4, self.list.get(3))
        self.assertEqual(5, self.list.get(4))
        self.assertIsNone(self.list.get(5))

    def test_indexOf(self):
        self._getNodes()

        self.assertEqual(0, self.list.indexOf(1))
        self.assertEqual(1, self.list.indexOf(2))
        self.assertEqual(2, self.list.indexOf(3))
        self.assertEqual(3, self.list.indexOf(4))
        self.assertEqual(4, self.list.indexOf(5))
        self.assertEqual(-1, self.list.indexOf(6))