61 lines
1.4 KiB
Go
61 lines
1.4 KiB
Go
|
package timescale
|
||
|
|
||
|
import (
|
||
|
"testing"
|
||
|
"time"
|
||
|
)
|
||
|
|
||
|
func TestToScale(t *testing.T) {
|
||
|
const scale uint32 = 90000
|
||
|
values := []struct {
|
||
|
T time.Duration
|
||
|
V uint64
|
||
|
}{
|
||
|
{0, 0},
|
||
|
{time.Second/60 - 1, 1500},
|
||
|
{time.Second/60 + 0, 1500},
|
||
|
{time.Second/60 + 1, 1500},
|
||
|
{(time.Second/60)*60 - 1, 90000},
|
||
|
{(time.Second/60)*60 + 0, 90000},
|
||
|
{(time.Second/60)*60 + 1, 90000},
|
||
|
{time.Second * (1 << 32), 90000 * (1 << 32)},
|
||
|
{time.Second*(1<<32) + time.Second/60 - 1, 90000*(1<<32) + 1500},
|
||
|
{time.Second*(1<<32) + time.Second/60 + 0, 90000*(1<<32) + 1500},
|
||
|
{time.Second*(1<<32) + time.Second/60 + 1, 90000*(1<<32) + 1500},
|
||
|
}
|
||
|
for _, ex := range values {
|
||
|
n := ToScale(ex.T, scale)
|
||
|
if n != ex.V {
|
||
|
t.Errorf("%d (%s): expected %d, got %d", ex.T, ex.T, ex.V, n)
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestRelative(t *testing.T) {
|
||
|
const scale uint32 = 90000
|
||
|
values := []struct {
|
||
|
T time.Duration
|
||
|
V int32
|
||
|
}{
|
||
|
{0, 0},
|
||
|
{time.Second/60 - 1, 1500},
|
||
|
{time.Second/60 + 0, 1500},
|
||
|
{time.Second/60 + 1, 1500},
|
||
|
{(time.Second/60)*5 - 1, 7500},
|
||
|
{(time.Second/60)*5 + 0, 7500},
|
||
|
{(time.Second/60)*5 + 1, 7500},
|
||
|
{-time.Second/60 - 1, -1500},
|
||
|
{-time.Second/60 + 0, -1500},
|
||
|
{-time.Second/60 + 1, -1500},
|
||
|
{(-time.Second/60)*5 - 1, -7500},
|
||
|
{(-time.Second/60)*5 + 0, -7500},
|
||
|
{(-time.Second/60)*5 + 1, -7500},
|
||
|
}
|
||
|
for _, ex := range values {
|
||
|
n := Relative(ex.T, scale)
|
||
|
if n != ex.V {
|
||
|
t.Errorf("%d (%s): expected %d, got %d", ex.T, ex.T, ex.V, n)
|
||
|
}
|
||
|
}
|
||
|
}
|