MCPcopy Create free account
hub / github.com/ardanlabs/gotraining / TestEnqueueFull

Function TestEnqueueFull

topics/go/algorithms/data/queue/queue_test.go:164–220  ·  view source on GitHub ↗

TestEnqueueFull validates the Enqueue functionality when full.

(t *testing.T)

Source from the content-addressed store, hash-verified

162
163// TestEnqueueFull validates the Enqueue functionality when full.
164func TestEnqueueFull(t *testing.T) {
165 t.Log("Given the need to test Enqueue functionality for being full.")
166 {
167 const items = 5
168 t.Logf("\tTest 0:\tWhen enqueuing %d items", items)
169 {
170 q, err := queue.New(items)
171 if err != nil {
172 t.Fatalf("\t%s\tTest 0:\tShould be able to create a queue for %d items : %v", failed, items, err)
173 }
174 t.Logf("\t%s\tTest 0:\tShould be able to create a queue for %d items.", succeed, items)
175
176 for i := 0; i < items; i++ {
177 if err := q.Enqueue(&queue.Data{Name: "test"}); err != nil {
178 t.Fatalf("\t%s\tTest 0:\tShould be able to enqueue item %d in the queue : %v", failed, i+1, err)
179 }
180 }
181 t.Logf("\t%s\tShould be able to enqueue %d items in the queue.", succeed, items)
182
183 if q.Count != items {
184 t.Logf("\t%s\tTest 0:\tShould be able to see queue is full.", failed)
185 t.Fatalf("\t\tTest 0:\tGot %d, Expected %d.", q.Count, items)
186 }
187 t.Logf("\t%s\tTest 0:\tShould be able to see queue is full.", succeed)
188
189 if err := q.Enqueue(&queue.Data{Name: "test"}); err == nil {
190 t.Fatalf("\t%s\tTest 0:\tShould not be able to enqueue another item in the queue.", failed)
191 }
192 t.Logf("\t%s\tTest 0:\tShould not be able to enqueue another item in the queue.", succeed)
193
194 for i := 0; i < items-1; i++ {
195 if _, err := q.Dequeue(); err != nil {
196 t.Fatalf("\t%s\tTest 0:\tShould be able to dequeue item %d from the queue : %v", failed, i+1, err)
197 }
198 }
199 t.Logf("\t%s\tTest 0:\tShould be able to dequeue %d items from the queue.", succeed, items-1)
200
201 for i := 0; i < items-1; i++ {
202 if err := q.Enqueue(&queue.Data{Name: "test"}); err != nil {
203 t.Fatalf("\t%s\tTest 0:\tShould be able to enqueue item %d back in the queue : %v", failed, i+1, err)
204 }
205 }
206 t.Logf("\t%s\tTest 0:\tShould be able to enqueue %d items back in the queue.", succeed, items-1)
207
208 if q.Count != items {
209 t.Logf("\t%s\tTest 0:\tShould be able to see queue is full.", failed)
210 t.Fatalf("\t\tTest 0:\tGot %d, Expected %d.", q.Count, items)
211 }
212 t.Logf("\t%s\tTest 0:\tShould be able to see queue is full.", succeed)
213
214 if err := q.Enqueue(&queue.Data{Name: "test"}); err == nil {
215 t.Fatalf("\t%s\tTest 0:\tShould not be able to enqueue another item in the queue.", failed)
216 }
217 t.Logf("\t%s\tTest 0:\tShould not be able to enqueue another item in the queue.", succeed)
218 }
219 }
220}
221

Callers

nothing calls this directly

Calls 3

NewFunction · 0.92
EnqueueMethod · 0.45
DequeueMethod · 0.45

Tested by

no test coverage detected