package main

import (
	"math"
	"reflect"
	"testing"
)

func TestBuckets(t *testing.T) {
	got, err := cumulativeBuckets([]float64{.1, .3, 1}, []float64{.05, .1, .2, .4, .8, 1.2})
	if err != nil || !reflect.DeepEqual(got, []int{2, 3, 5, 6}) {
		t.Fatalf("%v %v", got, err)
	}
	for _, bad := range [][]float64{{-.1}, {math.NaN()}, {math.Inf(1)}} {
		if _, err := cumulativeBuckets([]float64{.1}, bad); err == nil {
			t.Fatal("accepted invalid duration")
		}
	}
	if _, err := cumulativeBuckets([]float64{.3, .1}, nil); err == nil {
		t.Fatal("accepted unordered buckets")
	}
	if _, err := merge([]int{1}, []int{1, 2}); err == nil {
		t.Fatal("accepted mismatched counts")
	}
}
func TestCounterexample(t *testing.T) {
	if quantile([]float64{1, 1, 1, 1, 1, 100}, .5) != 1 {
		t.Fatal("wrong global median")
	}
	_, found, err := logs()
	if err != nil || !found {
		t.Fatalf("%v %v", found, err)
	}
}
