From 0e620cf3cab45689f70f22e93f0a482d3efd3f2b Mon Sep 17 00:00:00 2001 From: Jakub Sobon Date: Mon, 18 Jun 2018 20:02:17 +0100 Subject: [PATCH] The event queue can now report if it is empty. --- eventqueue/eventqueue.go | 7 +++++++ eventqueue/eventqueue_test.go | 16 ++++++++++++---- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/eventqueue/eventqueue.go b/eventqueue/eventqueue.go index da7d320..6735255 100644 --- a/eventqueue/eventqueue.go +++ b/eventqueue/eventqueue.go @@ -75,6 +75,13 @@ func (u *Unbound) wake() { } } +// Empty determines if the queue is empty. +func (u *Unbound) Empty() bool { + u.mu.Lock() + defer u.mu.Unlock() + return u.empty() +} + // empty determines if the queue is empty. func (u *Unbound) empty() bool { return u.first == nil diff --git a/eventqueue/eventqueue_test.go b/eventqueue/eventqueue_test.go index 2b7dc42..53828c4 100644 --- a/eventqueue/eventqueue_test.go +++ b/eventqueue/eventqueue_test.go @@ -25,12 +25,14 @@ import ( func TestQueue(t *testing.T) { tests := []struct { - desc string - pushes []terminalapi.Event - wantPops []terminalapi.Event + desc string + pushes []terminalapi.Event + wantEmpty bool // Checked after pushes and before pops. + wantPops []terminalapi.Event }{ { - desc: "empty queue returns nil", + desc: "empty queue returns nil", + wantEmpty: true, wantPops: []terminalapi.Event{ nil, }, @@ -42,6 +44,7 @@ func TestQueue(t *testing.T) { terminalapi.NewError("error2"), terminalapi.NewError("error3"), }, + wantEmpty: false, wantPops: []terminalapi.Event{ terminalapi.NewError("error1"), terminalapi.NewError("error2"), @@ -59,6 +62,11 @@ func TestQueue(t *testing.T) { q.Push(ev) } + gotEmpty := q.Empty() + if gotEmpty != tc.wantEmpty { + t.Errorf("Empty => got %v, want %v", gotEmpty, tc.wantEmpty) + } + for i, want := range tc.wantPops { got := q.Pop() if diff := pretty.Compare(want, got); diff != "" {