mirror of
https://github.com/golang/go
synced 2024-11-22 04:34:39 -07:00
container/heap/heap_test.go: remove container/vector
R=golang-dev, dsymonds CC=golang-dev https://golang.org/cl/4919044
This commit is contained in:
parent
97eb06233f
commit
ab1c164ecd
@ -6,32 +6,46 @@ package heap_test
|
||||
|
||||
import (
|
||||
"testing"
|
||||
"container/vector"
|
||||
. "container/heap"
|
||||
)
|
||||
|
||||
type myHeap struct {
|
||||
// A vector.Vector implements sort.Interface except for Less,
|
||||
// and it implements Push and Pop as required for heap.Interface.
|
||||
vector.Vector
|
||||
type myHeap []int
|
||||
|
||||
func (h *myHeap) Less(i, j int) bool {
|
||||
return (*h)[i] < (*h)[j]
|
||||
}
|
||||
|
||||
func (h *myHeap) Less(i, j int) bool { return h.At(i).(int) < h.At(j).(int) }
|
||||
func (h *myHeap) Swap(i, j int) {
|
||||
(*h)[i], (*h)[j] = (*h)[j], (*h)[i]
|
||||
}
|
||||
|
||||
func (h *myHeap) verify(t *testing.T, i int) {
|
||||
func (h *myHeap) Len() int {
|
||||
return len(*h)
|
||||
}
|
||||
|
||||
func (h *myHeap) Pop() (v interface{}) {
|
||||
*h, v = (*h)[:h.Len()-1], (*h)[h.Len()-1]
|
||||
return
|
||||
}
|
||||
|
||||
func (h *myHeap) Push(v interface{}) {
|
||||
*h = append(*h, v.(int))
|
||||
}
|
||||
|
||||
func (h myHeap) verify(t *testing.T, i int) {
|
||||
n := h.Len()
|
||||
j1 := 2*i + 1
|
||||
j2 := 2*i + 2
|
||||
if j1 < n {
|
||||
if h.Less(j1, i) {
|
||||
t.Errorf("heap invariant invalidated [%d] = %d > [%d] = %d", i, h.At(i), j1, h.At(j1))
|
||||
t.Errorf("heap invariant invalidated [%d] = %d > [%d] = %d", i, h[i], j1, h[j1])
|
||||
return
|
||||
}
|
||||
h.verify(t, j1)
|
||||
}
|
||||
if j2 < n {
|
||||
if h.Less(j2, i) {
|
||||
t.Errorf("heap invariant invalidated [%d] = %d > [%d] = %d", i, h.At(i), j1, h.At(j2))
|
||||
t.Errorf("heap invariant invalidated [%d] = %d > [%d] = %d", i, h[i], j1, h[j2])
|
||||
return
|
||||
}
|
||||
h.verify(t, j2)
|
||||
|
Loading…
Reference in New Issue
Block a user