| package histogram |
| |
| import ( |
| "math/rand" |
| "testing" |
| ) |
| |
| func TestHistogram(t *testing.T) { |
| const numPoints = 1e6 |
| const maxBins = 3 |
| |
| h := New(maxBins) |
| for i := 0; i < numPoints; i++ { |
| f := rand.ExpFloat64() |
| h.Insert(f) |
| } |
| |
| bins := h.Bins() |
| if g := len(bins); g > maxBins { |
| t.Fatalf("got %d bins, wanted <= %d", g, maxBins) |
| } |
| |
| for _, b := range bins { |
| t.Logf("%+v", b) |
| } |
| |
| if g := count(h.Bins()); g != numPoints { |
| t.Fatalf("binned %d points, wanted %d", g, numPoints) |
| } |
| } |
| |
| func count(bins Bins) int { |
| binCounts := 0 |
| for _, b := range bins { |
| binCounts += b.Count |
| } |
| return binCounts |
| } |