Skip to content

Commit 7e65f4b

Browse files
elyssonmrNathan Parsons
authored and
Nathan Parsons
committed
circular-buffer: Update the tests following the canonical data (#1047)
* circular-buffer: Update the tests following the canonical data
1 parent f0dfd60 commit 7e65f4b

File tree

1 file changed

+56
-50
lines changed

1 file changed

+56
-50
lines changed

exercises/circular-buffer/circular_buffer_test.py

Lines changed: 56 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -7,43 +7,41 @@
77
)
88

99

10+
# Tests adapted from `problem-specifications//canonical-data.json` @ v1.0.1
11+
1012
class CircularBufferTest(unittest.TestCase):
1113
def test_read_empty_buffer(self):
1214
buf = CircularBuffer(1)
1315
with self.assertRaises(BufferEmptyException):
1416
buf.read()
1517

18+
def test_read_just_written_item(self):
19+
buf = CircularBuffer(1)
20+
buf.write('1')
21+
self.assertEqual(buf.read(), '1')
22+
1623
def test_write_and_read_back_one_item(self):
1724
buf = CircularBuffer(1)
1825
buf.write('1')
19-
self.assertEqual('1', buf.read())
26+
self.assertEqual(buf.read(), '1')
2027
with self.assertRaises(BufferEmptyException):
2128
buf.read()
2229

23-
def test_write_and_read_back_multiple_items(self):
30+
def test_write_and_read_back_multiple_items_ordered(self):
2431
buf = CircularBuffer(2)
2532
buf.write('1')
2633
buf.write('2')
2734
self.assertEqual(buf.read(), '1')
2835
self.assertEqual(buf.read(), '2')
29-
with self.assertRaises(BufferEmptyException):
30-
buf.read()
3136

32-
def test_clearing_buffer(self):
33-
buf = CircularBuffer(3)
34-
for c in '123':
35-
buf.write(c)
36-
buf.clear()
37-
with self.assertRaises(BufferEmptyException):
38-
buf.read()
37+
def test_full_buffer_cant_written(self):
38+
buf = CircularBuffer(1)
3939
buf.write('1')
40-
buf.write('2')
41-
self.assertEqual(buf.read(), '1')
42-
buf.write('3')
43-
self.assertEqual(buf.read(), '2')
40+
with self.assertRaises(BufferFullException):
41+
buf.write('2')
4442

4543
def test_alternate_write_and_read(self):
46-
buf = CircularBuffer(2)
44+
buf = CircularBuffer(1)
4745
buf.write('1')
4846
self.assertEqual(buf.read(), '1')
4947
buf.write('2')
@@ -53,56 +51,64 @@ def test_read_back_oldest_item(self):
5351
buf = CircularBuffer(3)
5452
buf.write('1')
5553
buf.write('2')
56-
buf.read()
54+
self.assertEqual(buf.read(), '1')
5755
buf.write('3')
58-
buf.read()
56+
self.assertEqual(buf.read(), '2')
5957
self.assertEqual(buf.read(), '3')
6058

61-
def test_write_full_buffer(self):
62-
buf = CircularBuffer(2)
59+
def test_clearing_buffer(self):
60+
buf = CircularBuffer(1)
6361
buf.write('1')
64-
buf.write('2')
65-
with self.assertRaises(BufferFullException):
66-
buf.write('A')
62+
buf.clear()
63+
with self.assertRaises(BufferEmptyException):
64+
buf.read()
6765

68-
def test_overwrite_full_buffer(self):
69-
buf = CircularBuffer(2)
66+
def test_clear_free_buffer_for_write(self):
67+
buf = CircularBuffer(1)
7068
buf.write('1')
69+
buf.clear()
7170
buf.write('2')
72-
buf.overwrite('A')
7371
self.assertEqual(buf.read(), '2')
74-
self.assertEqual(buf.read(), 'A')
75-
with self.assertRaises(BufferEmptyException):
76-
buf.read()
72+
73+
def test_clear_does_nothin_empty_buffer(self):
74+
buf = CircularBuffer(1)
75+
buf.clear()
76+
buf.write('1')
77+
self.assertEqual(buf.read(), '1')
7778

7879
def test_overwrite_non_full_buffer(self):
7980
buf = CircularBuffer(2)
80-
buf.overwrite('1')
81+
buf.write('1')
8182
buf.overwrite('2')
8283
self.assertEqual(buf.read(), '1')
8384
self.assertEqual(buf.read(), '2')
84-
with self.assertRaises(BufferEmptyException):
85-
buf.read()
8685

87-
def test_alternate_read_and_overwrite(self):
88-
buf = CircularBuffer(5)
89-
for c in '123':
90-
buf.write(c)
91-
buf.read()
92-
buf.read()
86+
def test_overwrite_replaces_oldest_item(self):
87+
buf = CircularBuffer(2)
88+
buf.write('1')
89+
buf.write('2')
90+
buf.overwrite('3')
91+
self.assertEqual(buf.read(), '2')
92+
self.assertEqual(buf.read(), '3')
93+
94+
def test_write_full_buffer(self):
95+
buf = CircularBuffer(2)
96+
buf.write('1')
97+
buf.write('2')
98+
with self.assertRaises(BufferFullException):
99+
buf.write('A')
100+
101+
def test_over_write_replaces_oldest_remaning_item(self):
102+
buf = CircularBuffer(3)
103+
buf.write('1')
104+
buf.write('2')
105+
buf.write('3')
106+
self.assertEqual(buf.read(), '1')
93107
buf.write('4')
94-
buf.read()
95-
for c in '5678':
96-
buf.write(c)
97-
buf.overwrite('A')
98-
buf.overwrite('B')
99-
self.assertEqual(buf.read(), '6')
100-
self.assertEqual(buf.read(), '7')
101-
self.assertEqual(buf.read(), '8')
102-
self.assertEqual(buf.read(), 'A')
103-
self.assertEqual(buf.read(), 'B')
104-
with self.assertRaises(BufferEmptyException):
105-
buf.read()
108+
buf.overwrite('5')
109+
self.assertEqual(buf.read(), '3')
110+
self.assertEqual(buf.read(), '4')
111+
self.assertEqual(buf.read(), '5')
106112

107113

108114
if __name__ == '__main__':

0 commit comments

Comments
 (0)