Compare FloatHistogram.[Zero]Count float values as binary
Signed-off-by: Linas Medziunas <linas.medziunas@gmail.com>
This commit is contained in:
parent
cbd01fc296
commit
dfb6292600
|
@ -313,7 +313,8 @@ func (h *FloatHistogram) Equals(h2 *FloatHistogram) bool {
|
|||
}
|
||||
|
||||
if h.Schema != h2.Schema || h.ZeroThreshold != h2.ZeroThreshold ||
|
||||
h.ZeroCount != h2.ZeroCount || h.Count != h2.Count ||
|
||||
math.Float64bits(h.ZeroCount) != math.Float64bits(h2.ZeroCount) ||
|
||||
math.Float64bits(h.Count) != math.Float64bits(h2.Count) ||
|
||||
math.Float64bits(h.Sum) != math.Float64bits(h2.Sum) {
|
||||
return false
|
||||
}
|
||||
|
|
|
@ -2291,3 +2291,39 @@ func TestFloatBucketIteratorTargetSchema(t *testing.T) {
|
|||
}
|
||||
require.False(t, it.Next(), "negative iterator not exhausted")
|
||||
}
|
||||
|
||||
// TestFloatHistogramEquals tests FloatHistogram with float-specific cases that
|
||||
// cannot be covered by TestHistogramEquals.
|
||||
func TestFloatHistogramEquals(t *testing.T) {
|
||||
h1 := FloatHistogram{
|
||||
Schema: 3,
|
||||
Count: 2.2,
|
||||
Sum: 9.7,
|
||||
ZeroThreshold: 0.1,
|
||||
ZeroCount: 1.1,
|
||||
}
|
||||
|
||||
equals := func(h1, h2 FloatHistogram) {
|
||||
require.True(t, h1.Equals(&h2))
|
||||
require.True(t, h2.Equals(&h1))
|
||||
}
|
||||
notEquals := func(h1, h2 FloatHistogram) {
|
||||
require.False(t, h1.Equals(&h2))
|
||||
require.False(t, h2.Equals(&h1))
|
||||
}
|
||||
|
||||
h2 := h1.Copy()
|
||||
equals(h1, *h2)
|
||||
|
||||
// Count is NaN (but not a StaleNaN).
|
||||
hCountNaN := h1.Copy()
|
||||
hCountNaN.Count = math.NaN()
|
||||
notEquals(h1, *hCountNaN)
|
||||
equals(*hCountNaN, *hCountNaN)
|
||||
|
||||
// ZeroCount is NaN (but not a StaleNaN).
|
||||
hZeroCountNaN := h1.Copy()
|
||||
hZeroCountNaN.ZeroCount = math.NaN()
|
||||
notEquals(h1, *hZeroCountNaN)
|
||||
equals(*hZeroCountNaN, *hZeroCountNaN)
|
||||
}
|
||||
|
|
|
@ -540,11 +540,20 @@ func TestHistogramEquals(t *testing.T) {
|
|||
h2.NegativeBuckets = append(h2.NegativeBuckets, 1)
|
||||
notEquals(h1, *h2)
|
||||
|
||||
// StaleNaN.
|
||||
h2 = h1.Copy()
|
||||
h2.Sum = math.Float64frombits(value.StaleNaN)
|
||||
notEquals(h1, *h2)
|
||||
equals(*h2, *h2)
|
||||
// Sum is StaleNaN.
|
||||
hStale := h1.Copy()
|
||||
hStale.Sum = math.Float64frombits(value.StaleNaN)
|
||||
notEquals(h1, *hStale)
|
||||
equals(*hStale, *hStale)
|
||||
|
||||
// Sum is NaN (but not a StaleNaN).
|
||||
hNaN := h1.Copy()
|
||||
hNaN.Sum = math.NaN()
|
||||
notEquals(h1, *hNaN)
|
||||
equals(*hNaN, *hNaN)
|
||||
|
||||
// Sum StaleNaN vs regular NaN.
|
||||
notEquals(*hStale, *hNaN)
|
||||
}
|
||||
|
||||
func TestHistogramCompact(t *testing.T) {
|
||||
|
|
Loading…
Reference in New Issue