blob: 1fbf4b8d6c6c04e0c38d90a68309a43f8c818b5a [file] [log] [blame]
// Copyright 2020 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package metrics
import (
"sort"
"testing"
"slices"
)
type S struct{ a, b, c string }
func TestMetrics(t *testing.T) {
m1 := Metric1[string]{}
if got := m1.Count("a"); got != 0 {
t.Errorf("Count(%q) = %d, want 0", "a", got)
}
m1.Add("a")
m1.Add("a")
if got := m1.Count("a"); got != 2 {
t.Errorf("Count(%q) = %d, want 2", "a", got)
}
if got, want := m1.Metrics(), []string{"a"}; !slices.Equal(got, want) {
t.Errorf("Metrics = %v, want %v", got, want)
}
m2 := Metric2[int, float64]{}
m2.Add(1, 1)
m2.Add(2, 2)
m2.Add(3, 3)
m2.Add(3, 3)
k1, k2 := m2.Metrics()
sort.Ints(k1)
w1 := []int{1, 2, 3}
if !slices.Equal(k1, w1) {
t.Errorf("Metric2.Metrics first slice = %v, want %v", k1, w1)
}
sort.Float64s(k2)
w2 := []float64{1, 2, 3}
if !slices.Equal(k2, w2) {
t.Errorf("Metric2.Metrics first slice = %v, want %v", k2, w2)
}
m3 := Metric3[string, S, S]{}
m3.Add("a", S{"d", "e", "f"}, S{"g", "h", "i"})
m3.Add("a", S{"d", "e", "f"}, S{"g", "h", "i"})
m3.Add("a", S{"d", "e", "f"}, S{"g", "h", "i"})
m3.Add("b", S{"d", "e", "f"}, S{"g", "h", "i"})
if got := m3.Count("a", S{"d", "e", "f"}, S{"g", "h", "i"}); got != 3 {
t.Errorf("Count(%v, %v, %v) = %d, want 3", "a", S{"d", "e", "f"}, S{"g", "h", "i"}, got)
}
}