-
Notifications
You must be signed in to change notification settings - Fork 0
/
test_memoStack.py
120 lines (84 loc) · 3.64 KB
/
test_memoStack.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
from unittest import TestCase
from PyMemo import MemoStack
from PyMemo import MemoNotCompleted
from PyMemo import Memo
from PyMemo import MemoStackIsEmpty
from PyMemo import Task
class TestMemoStack(TestCase):
def setUp(self):
self.memo_stack = MemoStack()
def test_fail(self):
self.assertEqual(1,0)
def test_push_on_empty_stack(self):
memo = Memo("Test Memo")
stack_count_before = len(self.memo_stack.memos)
self.memo_stack.push(memo)
stack_count_after = len(self.memo_stack.memos)
self.assertEqual(stack_count_after, 1)
self.assertEqual(stack_count_after, stack_count_before + 1)
def test_push_on_non_empty_stack(self):
for memo_count in range(1, 6):
memo = Memo("Existing Test Memo" + str(memo_count))
self.memo_stack.push(memo)
memo = Memo("New Test Memo")
stack_count_before = len(self.memo_stack.memos)
self.memo_stack.push(memo)
stack_count_after = len(self.memo_stack.memos)
self.assertEqual(stack_count_after, stack_count_before + 1)
def test_pop_from_empty_stack(self):
with self.assertRaises(MemoStackIsEmpty):
self.memo_stack.pop()
def test_pop_results_in_decreased_size(self):
for memo_count in range(1, 5):
memo = Memo("Test Memo" + str(memo_count))
self.memo_stack.push(memo)
top_memo = Memo("Top Test Memo")
self.memo_stack.push(top_memo)
memo_count_before = len(self.memo_stack.memos)
popped_memo = self.memo_stack.pop()
memo_count_after = len(self.memo_stack.memos)
self.assertEqual(memo_count_after, memo_count_before - 1)
def test_pop_returns_top_memo(self):
for memo_count in range(1, 5):
memo = Memo("Test Memo" + str(memo_count))
self.memo_stack.push(memo)
top_memo = Memo("Top Test Memo")
self.memo_stack.push(top_memo)
popped_memo = self.memo_stack.pop()
self.assertIs(top_memo, popped_memo)
def test_pop_with_the_top_memo_not_completed(self):
for memo_count in range(1, 5):
memo = Memo("Test Memo" + str(memo_count))
self.memo_stack.push(memo)
top_memo = Memo("Top Test Memo")
top_memo.add_task(Task("Incomplete Task"))
self.memo_stack.push(top_memo)
with self.assertRaises(MemoNotCompleted):
popped_memo = self.memo_stack.pop()
def test_peek_from_empty_stack(self):
with self.assertRaises(MemoStackIsEmpty):
self.memo_stack.peek()
def test_peek_does_not_change_stack_size(self):
for memo_count in range(1, 5):
memo = Memo("Test Memo" + str(memo_count))
self.memo_stack.push(memo)
top_memo = Memo("Top Test Memo")
self.memo_stack.push(top_memo)
memo_count_before = len(self.memo_stack.memos)
peeked_memo = self.memo_stack.peek()
memo_count_after = len(self.memo_stack.memos)
self.assertEqual(memo_count_after, memo_count_before)
def test_peek_returns_top_memo(self):
for memo_count in range(1, 5):
memo = Memo("Test Memo" + str(memo_count))
self.memo_stack.push(memo)
top_memo = Memo("Top Test Memo")
self.memo_stack.push(top_memo)
peeked_memo = self.memo_stack.peek()
self.assertIs(top_memo, peeked_memo)
def test_is_empty_on_non_empty_stack(self):
memo = Memo("Test Memo")
self.memo_stack.push(memo)
self.assertFalse(self.memo_stack.is_empty())
def test_is_empty_on_empty_stack(self):
self.assertTrue(self.memo_stack.is_empty())