heap_test.go 740 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. package ctn
  2. import (
  3. "testing"
  4. "sort"
  5. )
  6. func TestHeapBasic(t *testing.T) {
  7. var numbers = [] float64 { 7, 2, 3, 5, 4, 6, 1 }
  8. var h = MakeMutHeap[float64](func(x float64, y float64) bool { return x < y })
  9. for _, x := range numbers {
  10. h.Insert(x)
  11. }
  12. sort.Float64s(numbers)
  13. for _, x := range numbers[:(len(numbers) - 1)] {
  14. if value, ok := h.Shift(); ok {
  15. if value != x {
  16. t.Fatalf("wrong Shift result")
  17. }
  18. } else {
  19. t.Fatalf("wrong Shift/Insert behavior")
  20. }
  21. }
  22. if value, ok := h.First(); ok {
  23. if value != numbers[len(numbers) - 1] {
  24. t.Fatalf("wrong First result")
  25. }
  26. } else {
  27. t.Fatalf("wrong Shift/Insert behavior")
  28. }
  29. h.Shift()
  30. if _, ok := h.First(); ok {
  31. t.Fatalf("wrong Shift/Insert behavior")
  32. }
  33. }