Skip to content

Commit 45ee086

Browse files
authored
Merge pull request #4 from Alokzh/refactor-buffer-tests
Refactor current tests to super & subclasses architecture
2 parents c1893b1 + 85577bf commit 45ee086

7 files changed

Lines changed: 608 additions & 589 deletions

File tree

Lines changed: 237 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,237 @@
1+
"
2+
Abstract test class containing common tests for both FIFO and LIFO buffer implementations.
3+
Subclasses must implement setUp to create their specific buffer type.
4+
"
5+
Class {
6+
#name : 'CTAbstractBufferTest',
7+
#superclass : 'TestCase',
8+
#instVars : [
9+
'buffer'
10+
],
11+
#category : 'Containers-Buffer-Tests',
12+
#package : 'Containers-Buffer-Tests'
13+
}
14+
15+
{ #category : 'testing' }
16+
CTAbstractBufferTest class >> isAbstract [
17+
18+
^ self == CTAbstractBufferTest
19+
]
20+
21+
{ #category : 'tests' }
22+
CTAbstractBufferTest >> testAvailableSpace [
23+
24+
self assert: buffer availableSpace equals: 3.
25+
buffer push: 'a'.
26+
self assert: buffer availableSpace equals: 2.
27+
buffer push: 'b'; push: 'c'.
28+
self assert: buffer availableSpace equals: 0.
29+
buffer pop.
30+
self assert: buffer availableSpace equals: 1
31+
]
32+
33+
{ #category : 'tests' }
34+
CTAbstractBufferTest >> testBufferCreationWithCapacity [
35+
36+
| testBuffer |
37+
testBuffer := buffer class withCapacity: 5.
38+
39+
self assert: testBuffer capacity equals: 5.
40+
self assert: testBuffer size equals: 0.
41+
self assert: testBuffer isEmpty.
42+
self deny: testBuffer isFull.
43+
self assert: testBuffer availableSpace equals: 5
44+
]
45+
46+
{ #category : 'tests' }
47+
CTAbstractBufferTest >> testBufferCreationWithInvalidCapacity [
48+
49+
self should: [ buffer class withCapacity: 0 ] raise: Error.
50+
self should: [ buffer class withCapacity: -1 ] raise: Error
51+
]
52+
53+
{ #category : 'tests' }
54+
CTAbstractBufferTest >> testClearBuffer [
55+
56+
buffer push: 'a'; push: 'b'; push: 'c'.
57+
buffer clear.
58+
59+
self assert: buffer isEmpty.
60+
self assert: buffer size equals: 0.
61+
self assert: buffer readIndex equals: 1.
62+
self assert: buffer writeIndex equals: 1.
63+
self assert: buffer availableSpace equals: 3
64+
]
65+
66+
{ #category : 'tests' }
67+
CTAbstractBufferTest >> testCopyBufferContentsOrder [
68+
^ self subclassResponsibility
69+
]
70+
71+
{ #category : 'tests' }
72+
CTAbstractBufferTest >> testDefaultBufferCreation [
73+
74+
| testBuffer |
75+
testBuffer := buffer class new.
76+
77+
self assert: testBuffer capacity equals: 10.
78+
self assert: testBuffer isEmpty.
79+
self assert: testBuffer readIndex equals: 1.
80+
self assert: testBuffer writeIndex equals: 1
81+
]
82+
83+
{ #category : 'tests' }
84+
CTAbstractBufferTest >> testDoIteration [
85+
^ self subclassResponsibility
86+
]
87+
88+
{ #category : 'tests' }
89+
CTAbstractBufferTest >> testDoIterationAfterOverwrite [
90+
^ self subclassResponsibility
91+
]
92+
93+
{ #category : 'tests' }
94+
CTAbstractBufferTest >> testEmptyBufferErrors [
95+
96+
self should: [ buffer peek ] raise: Error.
97+
self should: [ buffer pop ] raise: Error
98+
]
99+
100+
{ #category : 'tests' }
101+
CTAbstractBufferTest >> testIndicesAfterClear [
102+
103+
buffer push: 'a'; push: 'b'; push: 'c'.
104+
buffer pop.
105+
buffer clear.
106+
107+
self assert: buffer readIndex equals: 1.
108+
self assert: buffer writeIndex equals: 1
109+
]
110+
111+
{ #category : 'tests' }
112+
CTAbstractBufferTest >> testIsEmpty [
113+
114+
self assert: buffer isEmpty.
115+
buffer push: 'test'.
116+
self deny: buffer isEmpty.
117+
buffer pop.
118+
self assert: buffer isEmpty
119+
]
120+
121+
{ #category : 'tests' }
122+
CTAbstractBufferTest >> testIsFull [
123+
124+
self deny: buffer isFull.
125+
buffer push: 'a'; push: 'b'; push: 'c'.
126+
self assert: buffer isFull.
127+
buffer pop.
128+
self deny: buffer isFull
129+
]
130+
131+
{ #category : 'tests' }
132+
CTAbstractBufferTest >> testOverwriteBehavior [
133+
^ self subclassResponsibility
134+
]
135+
136+
{ #category : 'tests' }
137+
CTAbstractBufferTest >> testOverwriteBehaviorWithAvailableSpace [
138+
139+
buffer push: 'a'; push: 'b'; push: 'c'.
140+
self assert: buffer availableSpace equals: 0.
141+
142+
buffer push: 'd'.
143+
self assert: buffer availableSpace equals: 0.
144+
self assert: buffer size equals: 3
145+
]
146+
147+
{ #category : 'tests' }
148+
CTAbstractBufferTest >> testPeekAndPop [
149+
^ self subclassResponsibility
150+
]
151+
152+
{ #category : 'tests' }
153+
CTAbstractBufferTest >> testPopAndPushSequence [
154+
155+
buffer
156+
push: 'a';
157+
push: 'b'.
158+
buffer pop.
159+
buffer push: 'c'.
160+
161+
self assert: buffer size equals: 2.
162+
self deny: buffer isEmpty
163+
]
164+
165+
{ #category : 'tests' }
166+
CTAbstractBufferTest >> testPushAllCollection [
167+
168+
| result |
169+
result := buffer pushAll: #('a' 'b' 'c').
170+
171+
self assert: buffer size equals: 3.
172+
self assert: result equals: 'c'.
173+
self assert: buffer isFull
174+
]
175+
176+
{ #category : 'tests' }
177+
CTAbstractBufferTest >> testPushMultipleElements [
178+
179+
buffer
180+
push: 'first';
181+
push: 'second';
182+
push: 'third'.
183+
184+
self assert: buffer size equals: 3.
185+
self assert: buffer isFull.
186+
self assert: buffer availableSpace equals: 0.
187+
]
188+
189+
{ #category : 'tests' }
190+
CTAbstractBufferTest >> testPushSingleElement [
191+
192+
buffer push: 'first'.
193+
194+
self assert: buffer size equals: 1.
195+
self deny: buffer isEmpty.
196+
self deny: buffer isFull.
197+
self assert: buffer availableSpace equals: 2.
198+
self assert: buffer writeIndex equals: 2.
199+
self assert: buffer readIndex equals: 1
200+
]
201+
202+
{ #category : 'tests' }
203+
CTAbstractBufferTest >> testReadIndexAfterPop [
204+
^ self subclassResponsibility
205+
]
206+
207+
{ #category : 'tests' }
208+
CTAbstractBufferTest >> testReadIndexBehaviorOnAdd [
209+
^ self subclassResponsibility
210+
]
211+
212+
{ #category : 'tests' }
213+
CTAbstractBufferTest >> testReadIndexBehaviorOnOverwrite [
214+
^ self subclassResponsibility
215+
]
216+
217+
{ #category : 'tests' }
218+
CTAbstractBufferTest >> testSize [
219+
220+
self assert: buffer size equals: 0.
221+
buffer push: 'a'.
222+
self assert: buffer size equals: 1.
223+
buffer push: 'b'; push: 'c'.
224+
self assert: buffer size equals: 3.
225+
buffer pop.
226+
self assert: buffer size equals: 2
227+
]
228+
229+
{ #category : 'tests' }
230+
CTAbstractBufferTest >> testWriteIndexAfterPopAndOverwrite [
231+
^ self subclassResponsibility
232+
]
233+
234+
{ #category : 'tests' }
235+
CTAbstractBufferTest >> testWriteIndexBehavior [
236+
^ self subclassResponsibility
237+
]

0 commit comments

Comments
 (0)