package test import ( "math" "sort" "testing" "git.wens.org.uk/heapqueue/pkg/heap" ) func TestHeap(t *testing.T) { input := []int{1,2,3,4,5,6,7,8,9} h := heap.BuildHeap(input, heap.MAXHEAP) if !heap.IsMaxHeap(h) { t.Errorf("Failed to build max heap. Heap object: %v\n", &h) } if heap.IsMinHeap(h) { t.Errorf("Max heap reporting as min heap. Heap object: %v\n", &h) } h = heap.BuildHeap(input, heap.MINHEAP) if !heap.IsMinHeap(h) { t.Errorf("Failed to build min heap. Heap object: %v\n", &h) } if heap.IsMaxHeap(h) { t.Errorf("Min heap reporting as max heap. Heap object: %v\n", &h) } } func TestSort(t *testing.T) { Ints := []int{1, 3, 5, 7, 9, 2, 4, 6, 8, 0} Floats := []float64{1.0, math.Pi, 1.00000001, 0.0, 3.9999999999, 4.0} Strings := []string{"zeppelin", "aardvark", "meat", "abacus", "academic", "ANTI", "自分", "かこいい"} IntsReverse := append([]int{}, Ints...) heap.HeapSort(Ints, heap.MAXHEAP) heap.HeapSort(IntsReverse, heap.MINHEAP) heap.HeapSort(Floats, heap.MAXHEAP) heap.HeapSort(Strings, heap.MAXHEAP) if !sort.IntsAreSorted(Ints) { t.Errorf("Failed to sort int slice. Order: %v\n", Ints) } if !sort.Float64sAreSorted(Floats) { t.Errorf("Failed to sort float64 slice. Order: %v\n", Floats) } if !sort.StringsAreSorted(Strings) { t.Errorf("Failed to sort strings slice. Order: %v\n", Strings) } for i := 0; i < len(IntsReverse) - 1; i++ { if IntsReverse[0] < IntsReverse[i + 1] { t.Errorf("Failed to sort int slice in reverse order. Order: %v\n", IntsReverse) break } } }