Files
lneto/ntp/ntp_test.go
T
2025-01-07 11:34:35 -03:00

61 lines
1.2 KiB
Go

package ntp
import (
"encoding/binary"
"testing"
"time"
)
func TestTimestamp(t *testing.T) {
now := time.Now()
nowp1 := now.Add(time.Second)
t1, err := TimestampFromTime(now)
if err != nil {
t.Fatal(err)
}
t2, _ := TimestampFromTime(nowp1)
gotnow := t1.Time()
if gotnow.Sub(now) > time.Microsecond {
t.Fatalf("got %v, want %v", gotnow, now)
}
d := t2.Sub(t1)
if d != time.Second {
t.Fatalf("expected 1s, got %s", d)
}
d = t1.Sub(t2)
if d != -time.Second {
t.Fatalf("expected -1s, got %s", d)
}
var b [8]byte
t1.Put(b[:])
readback := binary.BigEndian.Uint64(b[:])
t1got := TimestampFromUint64(readback)
if t1got != t1 {
t.Fatalf("got %v, want %v", t1got, t1)
}
}
func TestTimestampOverflow(t *testing.T) {
const tol = time.Microsecond
var now = time.Now() // time.Date(2035, 2, 7, 6, 28, 16, 0, time.UTC)
told, err := TimestampFromTime(baseTime)
if err != nil {
t.Fatal(err)
}
tmodern, err := TimestampFromTime(now)
if err != nil {
t.Fatal(err)
}
diff := tmodern.Sub(told)
if diff < 0 {
t.Fatalf("got %v, want positive", diff)
}
diffwant := now.Sub(baseTime)
differr := (diff - diffwant).Abs()
if differr > tol {
t.Fatalf("got diff %v", differr)
}
}