route/vendor/github.com/aclements/go-moremath/scale/ticks_test.go

60 lines
1.5 KiB
Go

// Copyright 2016 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 scale
import "testing"
type testTicker struct{}
func (testTicker) CountTicks(level int) int {
c := 10 - level
if c < 1 {
c = 1
}
return c
}
func (t testTicker) TicksAtLevel(level int) interface{} {
m := make([]float64, t.CountTicks(level))
for i := 0; i < len(m); i++ {
m[i] = float64(i)
}
return m
}
func TestTicks(t *testing.T) {
check := func(o TickOptions, want int) {
wantL, wantOK := want, true
if want == -999 {
wantL, wantOK = 0, false
}
for _, guess := range []int{0, -50, 50} {
l, ok := o.FindLevel(testTicker{}, guess)
if l != wantL || ok != wantOK {
t.Errorf("%+v.FindLevel with guess %v returned %v, %v; wanted %v, %v", o, guess, l, ok, wantL, wantOK)
}
}
}
// Argument sanity checking.
check(TickOptions{}, -999)
check(TickOptions{MinLevel: 10, MaxLevel: 9}, -999)
// Just max constraint.
check(TickOptions{Max: 1}, 9)
check(TickOptions{Max: 6}, 4)
check(TickOptions{Max: 20}, -10)
// Max and level constraints.
check(TickOptions{Max: 1, MaxLevel: 9}, 9)
check(TickOptions{Max: 1, MaxLevel: 8}, -999)
check(TickOptions{Max: 1, MinLevel: 9, MaxLevel: 1000}, 9)
check(TickOptions{Max: 1, MinLevel: 10, MaxLevel: 1000}, 10)
check(TickOptions{Max: 6, MaxLevel: 9}, 4)
check(TickOptions{Max: 6, MaxLevel: 3}, -999)
check(TickOptions{Max: 6, MinLevel: 10, MaxLevel: 11}, 10)
}