Skip to content

Commit fbbd987

Browse files
Tests for queue and stack updated (#163)
1 parent 34a2eaf commit fbbd987

File tree

3 files changed

+36
-18
lines changed

3 files changed

+36
-18
lines changed

pydatastructs/miscellaneous_data_structures/stack.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -150,10 +150,6 @@ def is_empty(self):
150150

151151
@property
152152
def peek(self):
153-
return self.top.data
154-
155-
@property
156-
def top(self):
157153
return self.stack.head
158154

159155
@property
@@ -164,4 +160,9 @@ def __len__(self):
164160
return self.stack.size
165161

166162
def __str__(self):
167-
return str(self.stack)
163+
elements = []
164+
current_node = self.peek
165+
while current_node is not None:
166+
elements.append(current_node.data)
167+
current_node = current_node.next
168+
return str(elements[::-1])

pydatastructs/miscellaneous_data_structures/tests/test_queue.py

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,20 @@
11
from pydatastructs.miscellaneous_data_structures import Queue
2+
from pydatastructs.miscellaneous_data_structures.queue import ArrayQueue, LinkedListQueue
23
from pydatastructs.utils.raises_util import raises
4+
from pydatastructs.utils.misc_util import _check_type
35

46
def test_Queue():
7+
q = Queue(implementation='array')
8+
q1 = Queue()
9+
assert _check_type(q, ArrayQueue) is True
10+
assert _check_type(q1, ArrayQueue) is True
11+
q2 = Queue(implementation='linked_list')
12+
assert _check_type(q2, LinkedListQueue) is True
13+
assert raises(NotImplementedError, lambda: Queue(implementation=''))
514

15+
def test_ArrayQueue():
16+
q1 = Queue()
17+
raises(IndexError, lambda: q1.popleft())
618
q1 = Queue(implementation='array', items=[0])
719
q1.append(1)
820
q1.append(2)
@@ -16,9 +28,7 @@ def test_Queue():
1628
assert q1.popleft() == 3
1729
assert len(q1) == 0
1830

19-
q1 = Queue()
20-
raises(IndexError, lambda: q1.popleft())
21-
31+
def test_LinkedListQueue():
2232
q1 = Queue(implementation='linked_list')
2333
q1.append(1)
2434
assert raises(TypeError, lambda: Queue(implementation='linked_list', items={0, 1}))
Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,19 @@
11
from pydatastructs.miscellaneous_data_structures import Stack
2-
from pydatastructs.linear_data_structures import OneDimensionalArray
2+
from pydatastructs.miscellaneous_data_structures.stack import ArrayStack, LinkedListStack
33
from pydatastructs.utils.raises_util import raises
4+
from pydatastructs.utils.misc_util import _check_type
45

56
def test_Stack():
7+
s = Stack(implementation='array')
8+
s1 = Stack()
9+
assert _check_type(s, ArrayStack) is True
10+
assert _check_type(s1, ArrayStack) is True
11+
s2 = Stack(implementation='linked_list')
12+
assert _check_type(s2, LinkedListStack) is True
13+
assert raises(NotImplementedError, lambda: Stack(implementation=''))
614

7-
s = Stack()
15+
def test_ArrayStack():
16+
s = Stack(implementation='array')
817
s.push(1)
918
s.push(2)
1019
s.push(3)
@@ -18,30 +27,28 @@ def test_Stack():
1827
_s = Stack(items=[1, 2, 3])
1928
assert str(_s) == '[1, 2, 3]'
2029
assert len(_s) == 3
21-
assert raises(NotImplementedError, lambda: Stack(implementation=''))
2230

31+
def test_LinkedListStack():
2332
s = Stack(implementation='linked_list')
2433
s.push(1)
2534
s.push(2)
2635
s.push(3)
27-
assert s.peek == 3
28-
assert str(s) == '[3, 2, 1]'
36+
assert s.peek.data == 3
37+
assert str(s) == '[1, 2, 3]'
2938
assert s.pop().data == 3
3039
assert s.pop().data == 2
3140
assert s.pop().data == 1
3241
assert s.is_empty is True
3342
assert raises(IndexError, lambda : s.pop())
43+
assert str(s) == '[]'
3444
_s = Stack(implementation='linked_list',items=[1, 2, 3])
35-
assert str(_s) == '[3, 2, 1]'
45+
assert str(_s) == '[1, 2, 3]'
3646
assert len(_s) == 3
3747

3848
s = Stack(implementation='linked_list',items=['a',None,type,{}])
3949
assert len(s) == 4
4050
assert s.size == 4
4151

42-
top = s.top
43-
assert top.data == s.pop().data
44-
4552
peek = s.peek
46-
assert peek == s.pop().data
53+
assert peek.data == s.pop().data
4754
assert raises(TypeError, lambda: Stack(implementation='linked_list', items={0, 1}))

0 commit comments

Comments
 (0)