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

Function TestDequeueEmpty

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

TestDequeueEmpty validates the Dequeue functionality when empty.

(t *testing.T)

Source from the content-addressed store, hash-verified

221
222// TestDequeueEmpty validates the Dequeue functionality when empty.
223func TestDequeueEmpty(t *testing.T) {
224 t.Log("Given the need to test Dequeue functionality for being empty.")
225 {
226 const items = 5
227 t.Logf("\tTest 0:\tWhen enqueuing %d items", items)
228 {
229 q, err := queue.New(items)
230 if err != nil {
231 t.Fatalf("\t%s\tTest 0:\tShould be able to create a queue for %d items : %v", failed, items, err)
232 }
233 t.Logf("\t%s\tTest 0:\tShould be able to create a queue for %d items.", succeed, items)
234
235 for i := 0; i < items; i++ {
236 if err := q.Enqueue(&queue.Data{Name: "test"}); err != nil {
237 t.Fatalf("\t%s\tTest 0:\tShould be able to enqueue item %d in the queue : %v", failed, i+1, err)
238 }
239 }
240 t.Logf("\t%s\tTest 0:\tShould be able to enqueue %d items in the queue.", succeed, items)
241
242 if q.Count != items {
243 t.Logf("\t%s\tTest 0:\tShould be able to see queue is full.", failed)
244 t.Fatalf("\t\tTest 0:\tGot %d, Expected %d.", q.Count, items)
245 }
246 t.Logf("\t%s\tTest 0:\tShould be able to see queue is full.", succeed)
247
248 for i := 0; i < items-1; i++ {
249 if _, err := q.Dequeue(); err != nil {
250 t.Fatalf("\t%s\tTest 0:\tShould be able to dequeue item %d from the queue : %v", failed, i+1, err)
251 }
252 }
253 t.Logf("\t%s\tTest 0:\tShould be able to dequeue %d items from the queue.", succeed, items-1)
254
255 if q.Count != 1 {
256 t.Logf("\t%s\tTest 0:\tShould be able to see queue has 1 item.", failed)
257 t.Fatalf("\t\tTest 0:\tGot %d, Expected %d.", q.Count, 1)
258 }
259 t.Logf("\t%s\tTest 0:\tShould be able to see queue has 1 item.", succeed)
260
261 if err := q.Enqueue(&queue.Data{Name: "test"}); err != nil {
262 t.Fatalf("\t%s\tTest 0:\tShould be able to enqueue another item in the queue.", failed)
263 }
264 t.Logf("\t%s\tTest 0:\tShould be able to enqueue another item in the queue.", succeed)
265
266 for i := 0; i < items-3; i++ {
267 if _, err := q.Dequeue(); err != nil {
268 t.Fatalf("\t%s\tTest 0:\tShould be able to dequeue item %d from in the queue : %v", failed, i+1, err)
269 }
270 }
271 t.Logf("\t%s\tTest 0:\tShould be able to dequeue %d items from the queue.", succeed, items-3)
272
273 if q.Count != 0 {
274 t.Logf("\t%s\tTest 0:\tShould be able to see queue is empty.", failed)
275 t.Fatalf("\t\tTest 0:\tGot %d, Expected %d.", q.Count, 0)
276 }
277 t.Logf("\t%s\tTest 0:\tShould be able to see queue is empty.", succeed)
278
279 if _, err := q.Dequeue(); err == nil {
280 t.Fatalf("\t%s\tTest 0:\tShould not be able to dequeue another item from the queue.", failed)

Callers

nothing calls this directly

Calls 3

NewFunction · 0.92
EnqueueMethod · 0.45
DequeueMethod · 0.45

Tested by

no test coverage detected