Skip to content

Commit 05e9c5e

Browse files
committed
test for purge, copy, extract added
1 parent 5b1635d commit 05e9c5e

File tree

2 files changed

+50
-1
lines changed

2 files changed

+50
-1
lines changed

unit3/doublyLinkedList.py

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,4 +87,32 @@ def purge(self):
8787
self._head = None
8888
self._tail = None
8989

90-
90+
def extract(self, obj):
91+
tmp = self._head
92+
prev = tmp
93+
while tmp != None:
94+
if tmp._value == obj:
95+
if tmp == self._head:
96+
tmp._next._prev = None
97+
self._head = tmp._next
98+
elif tmp == self._tail:
99+
tmp._prev = None
100+
prev._next = None
101+
self._tail = prev
102+
else:
103+
prev._next = tmp._next
104+
tmp._prev = None
105+
tmp._next._prev = prev
106+
tmp._next = None
107+
return obj
108+
prev = tmp
109+
tmp = tmp._next
110+
return None
111+
112+
def __copy__(self):
113+
tmp = DoublyLinkedList()
114+
current = self._head
115+
while current != None:
116+
tmp.append(current.value)
117+
current = current._next
118+
return tmp

unit3/test.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import unittest
22
from doublyLinkedList import DoublyLinkedList
33
from opus7.exception import *
4+
from copy import copy
45

56
class TestList(unittest.TestCase):
67
def setUp(self):
@@ -41,6 +42,26 @@ def test_purge(self):
4142
self.assertEqual(self.l.head, None)
4243
self.assertEqual(self.l.tail, None)
4344

45+
def test_extract(self):
46+
self.l.append(1)
47+
self.l.append(2)
48+
self.l.append(3)
49+
self.l.append(4)
50+
self.l.append(5)
51+
self.assertEqual(self.l.extract(1), 1)
52+
self.assertEqual(self.l.head.value, 2)
53+
self.assertEqual(self.l.extract(10), None)
54+
self.assertEqual(self.l.extract(5), 5)
55+
self.assertEqual(self.l.tail.value, 4)
56+
57+
def test_copy(self):
58+
self.l.append(1)
59+
self.l.append(2)
60+
self.l.append(3)
61+
a = copy(self.l)
62+
self.assertEqual(a.head.value, 1)
63+
self.assertEqual(a.tail.value, 3)
64+
4465

4566
if __name__ == "__main__":
4667
unittest.main()

0 commit comments

Comments
 (0)