summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/beorn7/perks/topk/topk_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/beorn7/perks/topk/topk_test.go')
-rw-r--r--vendor/github.com/beorn7/perks/topk/topk_test.go57
1 files changed, 57 insertions, 0 deletions
diff --git a/vendor/github.com/beorn7/perks/topk/topk_test.go b/vendor/github.com/beorn7/perks/topk/topk_test.go
new file mode 100644
index 000000000..c24f0f727
--- /dev/null
+++ b/vendor/github.com/beorn7/perks/topk/topk_test.go
@@ -0,0 +1,57 @@
+package topk
+
+import (
+ "fmt"
+ "math/rand"
+ "sort"
+ "testing"
+)
+
+func TestTopK(t *testing.T) {
+ stream := New(10)
+ ss := []*Stream{New(10), New(10), New(10)}
+ m := make(map[string]int)
+ for _, s := range ss {
+ for i := 0; i < 1e6; i++ {
+ v := fmt.Sprintf("%x", int8(rand.ExpFloat64()))
+ s.Insert(v)
+ m[v]++
+ }
+ stream.Merge(s.Query())
+ }
+
+ var sm Samples
+ for x, s := range m {
+ sm = append(sm, &Element{x, s})
+ }
+ sort.Sort(sort.Reverse(sm))
+
+ g := stream.Query()
+ if len(g) != 10 {
+ t.Fatalf("got %d, want 10", len(g))
+ }
+ for i, e := range g {
+ if sm[i].Value != e.Value {
+ t.Errorf("at %d: want %q, got %q", i, sm[i].Value, e.Value)
+ }
+ }
+}
+
+func TestQuery(t *testing.T) {
+ queryTests := []struct {
+ value string
+ expected int
+ }{
+ {"a", 1},
+ {"b", 2},
+ {"c", 2},
+ }
+
+ stream := New(2)
+ for _, tt := range queryTests {
+ stream.Insert(tt.value)
+ if n := len(stream.Query()); n != tt.expected {
+ t.Errorf("want %d, got %d", tt.expected, n)
+ }
+ }
+}