summaryrefslogtreecommitdiff
path: root/queue/pq_test.go
diff options
context:
space:
mode:
authorPaul Buetow <pbuetow@mimecast.com>2020-08-24 17:22:58 +0100
committerPaul Buetow <pbuetow@mimecast.com>2020-08-24 17:22:58 +0100
commitb6329c9c286b09d2f974fd134cbe3029b1e4e11f (patch)
tree41df28665fabb6c661bc9b92512b931fc4f7ca19 /queue/pq_test.go
parent24996416c11942abe22b1e3c1dee29243fd55fd1 (diff)
fix elementary pq
Diffstat (limited to 'queue/pq_test.go')
-rw-r--r--queue/pq_test.go15
1 files changed, 9 insertions, 6 deletions
diff --git a/queue/pq_test.go b/queue/pq_test.go
index 0b13144..76ad187 100644
--- a/queue/pq_test.go
+++ b/queue/pq_test.go
@@ -10,6 +10,9 @@ const minLength int = 1
const maxLength int = 10000
const factor int = 100
+// Store results here to avoid compiler optimizations
+var benchResult ds.ArrayList
+
func TestElementaryPQ(t *testing.T) {
q := NewElementaryPQ(1)
for i := minLength; i <= maxLength; i *= factor {
@@ -24,10 +27,11 @@ func test(q PQ, l int, t *testing.T) {
q.Insert(a)
}
prev, started := 0, false
+ t.Log("Size", q.Size(), q.Empty())
for !q.Empty() {
next := q.DeleteMax()
if started {
- if next < prev {
+ if next > prev {
t.Errorf("Expected element '%v' to be lower than previous '%v': %v",
next, prev, q)
}
@@ -49,13 +53,12 @@ func BenchmarkElementaryPQ(b *testing.B) {
}
func benchmark(q PQ, l int, b *testing.B) {
- r := ds.NewRandomArrayList(l, -1)
- aux := ds.NewArrayList(l)
+ benchResult = ds.NewRandomArrayList(l, -1)
b.Run(fmt.Sprintf("randomInsert(%d)", l), func(b *testing.B) {
for i := 0; i < b.N; i++ {
q.Clear()
- for _, a := range r {
+ for _, a := range benchResult {
q.Insert(a)
}
}
@@ -64,11 +67,11 @@ func benchmark(q PQ, l int, b *testing.B) {
b.Run(fmt.Sprintf("randomInsertAndDeleteMax(%d)", l), func(b *testing.B) {
for i := 0; i < b.N; i++ {
q.Clear()
- for _, a := range r {
+ for _, a := range benchResult {
q.Insert(a)
}
for i := 0; !q.Empty(); i++ {
- aux[i] = q.DeleteMax()
+ benchResult[i] = q.DeleteMax()
}
}
})