TestDequeueEmpty validates the Dequeue functionality when empty.
(t *testing.T)
| 221 | |
| 222 | // TestDequeueEmpty validates the Dequeue functionality when empty. |
| 223 | func 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) |