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
예제 #3
0
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)