From 09089ab65eb812b87ef9b5e5ff36f1eb54d0f41e Mon Sep 17 00:00:00 2001 From: Evan Huus Date: Fri, 20 Mar 2015 23:26:14 -0400 Subject: [PATCH 1/5] Trivial formatting --- queue.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/queue.go b/queue.go index f6126ba..619dcea 100644 --- a/queue.go +++ b/queue.go @@ -17,7 +17,9 @@ type Queue struct { // New constructs and returns a new Queue. func New() *Queue { - return &Queue{buf: make([]interface{}, minQueueLen)} + return &Queue{ + buf: make([]interface{}, minQueueLen), + } } // Length returns the number of elements currently stored in the queue. From c97964547fdded6e473aeea81e62401f4b5760e5 Mon Sep 17 00:00:00 2001 From: Evan Huus Date: Fri, 20 Mar 2015 23:27:12 -0400 Subject: [PATCH 2/5] Run CI on containers --- .travis.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 652a7e3..235a40a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,7 @@ language: go +sudo: false go: - - 1.2 - - 1.3 - - 1.4 + - 1.2 + - 1.3 + - 1.4 From 4cf52fc23a11012f571bed7dc1a8dfd3cacfb0cd Mon Sep 17 00:00:00 2001 From: Evan Huus Date: Fri, 20 Mar 2015 23:29:53 -0400 Subject: [PATCH 3/5] Add a comment, switch a conditional for readability --- queue.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/queue.go b/queue.go index 619dcea..2c33407 100644 --- a/queue.go +++ b/queue.go @@ -27,6 +27,8 @@ func (q *Queue) Length() int { return q.count } +// resizes the queue to fit exactly twice its current contents +// this can result in shrinking if the queue is less than half-full func (q *Queue) resize() { newBuf := make([]interface{}, q.count*2) @@ -65,7 +67,7 @@ func (q *Queue) Peek() interface{} { // Get returns the element at index i in the queue. If the index is // invalid, the call will panic. func (q *Queue) Get(i int) interface{} { - if i >= q.count || i < 0 { + if i < 0 || i >= q.count { panic("queue: Get() called with index out of range") } return q.buf[(q.head+i)%len(q.buf)] From 6ae9163a4f9e6b5243da563af6af1cdb5f72bfb5 Mon Sep 17 00:00:00 2001 From: Evan Huus Date: Fri, 20 Mar 2015 23:30:56 -0400 Subject: [PATCH 4/5] Remove useless log in tests --- queue_test.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/queue_test.go b/queue_test.go index ccab3ee..f2765c1 100644 --- a/queue_test.go +++ b/queue_test.go @@ -119,8 +119,6 @@ func assertPanics(t *testing.T, name string, f func()) { defer func() { if r := recover(); r == nil { t.Errorf("%s: didn't panic as expected", name) - } else { - t.Logf("%s: got panic as expected: %v", name, r) } }() From f4e18e921eb877d9d30ffe75b537d07ad8f46370 Mon Sep 17 00:00:00 2001 From: Evan Huus Date: Fri, 20 Mar 2015 23:38:24 -0400 Subject: [PATCH 5/5] Replace <= with == to make it clearer the size is always a power of two --- queue.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/queue.go b/queue.go index 2c33407..1b3e168 100644 --- a/queue.go +++ b/queue.go @@ -82,7 +82,7 @@ func (q *Queue) Remove() { q.buf[q.head] = nil q.head = (q.head + 1) % len(q.buf) q.count-- - if len(q.buf) > minQueueLen && q.count*4 <= len(q.buf) { + if len(q.buf) > minQueueLen && q.count*4 == len(q.buf) { q.resize() } }