1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
|
package monotime
import (
"testing"
"time"
"github.com/quic-go/quic-go/internal/synctest"
"github.com/stretchr/testify/require"
)
func TestTimeRelations(t *testing.T) {
t1 := Now()
require.Equal(t, t1, t1)
require.False(t, t1.IsZero())
t2 := t1.Add(time.Second)
require.False(t, t1.Equal(t2))
require.False(t, t2.Equal(t1))
require.True(t, t2.After(t1))
require.False(t, t1.After(t2))
require.False(t, t2.Before(t1))
require.Equal(t, t2.Sub(t1), time.Second)
require.Equal(t, t1.Sub(t2), -time.Second)
}
func TestSince(t *testing.T) {
synctest.Test(t, func(t *testing.T) {
t1 := Now()
time.Sleep(time.Second)
require.Equal(t, Since(t1), time.Second)
require.Equal(t, Now().Sub(t1), time.Second)
time.Sleep(time.Minute)
require.Equal(t, Since(t1), time.Minute+time.Second)
require.Equal(t, Now().Sub(t1), time.Minute+time.Second)
})
}
func TestUntil(t *testing.T) {
synctest.Test(t, func(t *testing.T) {
t1 := Now().Add(time.Minute)
require.Equal(t, Until(t1), time.Minute)
require.Equal(t, t1.Sub(Now()), time.Minute)
time.Sleep(15 * time.Second)
require.Equal(t, Until(t1), 45*time.Second)
require.Equal(t, t1.Sub(Now()), 45*time.Second)
})
}
func TestConversions(t *testing.T) {
t1 := Now()
t1Time := t1.ToTime()
require.Equal(t, FromTime(t1Time), t1)
require.Zero(t, t1Time.Sub(t1.ToTime()))
var zeroTime time.Time
require.Zero(t, FromTime(zeroTime))
require.Zero(t, FromTime(zeroTime))
var zero Time
require.True(t, zero.ToTime().IsZero())
}
func BenchmarkNow(b *testing.B) {
b.Run("Now", func(b *testing.B) {
for b.Loop() {
_ = Now()
}
})
b.Run("time.Now", func(b *testing.B) {
for b.Loop() {
_ = time.Now()
}
})
}
|