class Deque(Container): def __init__(self): self._list = DoublyLinkedList() def getHead(self): return self._list.head def getTail(self): return self._list.tail head = property( fget = lambda self: self.getHead()) tail = property( fget = lambda self: self.getTail()) def enqueueHead(self, obj): self._list.prepend(obj) def dequeueHead(self): assert not self._list.isEmpty return self._list.extract(self._list.head.value) def enqueueTail(self, obj): self._list.append(obj) def dequeueTail(self): assert not self._list.isEmpty return self._list.extract(self._list.tail.value) def __iter__(self): pass def _compareTo(self, obj): pass def purge(self): self._list.purge() #override def getIsEmpty(self): return self._list.isEmpty
class Deque(Container): def __init__(self): self._list = DoublyLinkedList() def getHead(self): return self._list.head def getTail(self): return self._list.tail head = property(fget=lambda self: self.getHead()) tail = property(fget=lambda self: self.getTail()) def enqueueHead(self, obj): self._list.prepend(obj) def dequeueHead(self): assert not self._list.isEmpty return self._list.extract(self._list.head.value) def enqueueTail(self, obj): self._list.append(obj) def dequeueTail(self): assert not self._list.isEmpty return self._list.extract(self._list.tail.value) def __iter__(self): pass def _compareTo(self, obj): pass def purge(self): self._list.purge() #override def getIsEmpty(self): return self._list.isEmpty
class TestList(unittest.TestCase): def setUp(self): self.l = DoublyLinkedList() def test_init(self): self.assertEqual(self.l.head, None) self.assertEqual(self.l.tail, None) def test_append(self): self.l.append(1) self.assertEqual(self.l.head.value, 1) self.assertEqual(self.l.tail.value, 1) self.l.append(2) self.assertEqual(self.l.head.value, 1) self.assertEqual(self.l.tail.value, 2) self.assertEqual(self.l.first.value, 1) self.assertEqual(self.l.last.value, 2) def test_prepend(self): self.l.prepend(1) self.assertEqual(self.l.head.value, 1) self.assertEqual(self.l.tail.value, 1) self.l.prepend(2) self.assertEqual(self.l.head.value, 2) self.assertEqual(self.l.tail.value, 1) self.l.prepend(3) self.assertEqual(self.l.head.value, 3) self.assertEqual(self.l.tail.value, 1) def test_purge(self): self.l.append(1) self.l.append(2) self.l.append(3) self.assertEqual(self.l.head.value, 1) self.assertEqual(self.l.tail.value, 3) self.l.purge() self.assertEqual(self.l.head, None) self.assertEqual(self.l.tail, None) def test_extract(self): self.l.append(1) self.l.append(2) self.l.append(3) self.l.append(4) self.l.append(5) self.assertEqual(self.l.extract(1), 1) self.assertEqual(self.l.head.value, 2) self.assertEqual(self.l.extract(10), None) self.assertEqual(self.l.extract(5), 5) self.assertEqual(self.l.tail.value, 4) def test_copy(self): self.l.append(1) self.l.append(2) self.l.append(3) a = copy(self.l) self.assertEqual(a.head.value, 1) self.assertEqual(a.tail.value, 3) def test_empty(self): self.assertTrue(self.l.isEmpty) self.l.append(1) self.assertFalse(self.l.isEmpty) self.l.extract(1) self.assertTrue(self.l.isEmpty)