fox/xtime/timex_test.go

153 lines
3.5 KiB
Go

package xtime
import (
"github.com/golang-module/carbon/v2"
"github.com/stretchr/testify/assert"
"testing"
"time"
)
func TestSetTimeOffset(t *testing.T) {
loc, err := time.LoadLocation("Asia/Shanghai")
assert.NoError(t, err)
loc2, err := time.LoadLocation("America/New_York")
assert.NoError(t, err)
a := time.Now().In(loc)
b := time.Now().In(loc2)
t.Log(a.String())
t.Log(b.String())
Now()
t.Log(a.Sub(b))
}
func TestFormatDayNum(t *testing.T) {
t1 := Parse("2023-01-01 00:00:00", 0)
assert.Equal(t, FormatDateNum(t1), 20221231)
t2 := Parse("2023-01-01 04:00:00", 0)
assert.Equal(t, FormatDateNum(t2), 20230101)
}
func TestNow(t *testing.T) {
now := Now()
sc := carbon.Now(carbon.SaoPaulo)
b := func(args ...int) []int { return args }
assert.Equal(t, b(now.Time()), b(sc.Time()))
}
func TestIsToday(t *testing.T) {
now := time.Now()
assert.True(t, IsToday(now))
assert.False(t, IsToday(now.Add(24*time.Hour)))
assert.False(t, IsToday(now.Add(-24*time.Hour)))
}
func TestIsTodayTimestamp(t *testing.T) {
now := Now()
st := now.Timestamp()
assert.True(t, IsTodayTimestamp(st))
//assert.False(t, IsTodayTimestamp(now.Yesterday().Timestamp()))
assert.False(t, IsTodayTimestamp(now.AddDay().Timestamp()))
}
func TestIsAfterNow(t *testing.T) {
t.Run("std Time", func(t *testing.T) {
now := time.Now()
after := now.Add(time.Hour)
assert.True(t, IsAfterNow(after))
now = time.Now()
before := now.Add(-time.Hour)
assert.False(t, IsAfterNow(before))
})
t.Run("carbon", func(t *testing.T) {
now := Now()
after := now.AddHour()
assert.True(t, IsAfterNow(after))
now = Now()
before := now.SubHour()
assert.False(t, IsAfterNow(before))
})
t.Run("timestamp", func(t *testing.T) {
now := time.Now().Unix()
after := now + 3600
assert.True(t, IsAfterNow(after))
now = time.Now().Unix()
before := now - 3600
assert.False(t, IsAfterNow(before))
})
}
func TestIsBeforeNow(t *testing.T) {
t.Run("std Time", func(t *testing.T) {
now := time.Now()
before := now.Add(-time.Hour)
assert.True(t, IsBeforeNow(before))
now = time.Now()
after := now.Add(time.Hour)
assert.False(t, IsBeforeNow(after))
})
t.Run("carbon", func(t *testing.T) {
now := Now()
before := now.SubHour()
assert.True(t, IsBeforeNow(before))
now = Now()
after := now.AddHour()
assert.False(t, IsBeforeNow(after))
})
t.Run("timestamp", func(t *testing.T) {
now := time.Now().Unix()
before := now - 3600
assert.True(t, IsBeforeNow(before))
now = time.Now().Unix()
after := now + 3600
assert.False(t, IsBeforeNow(after))
})
}
func TestIsInDuration(t *testing.T) {
t.Run("std Time", func(t *testing.T) {
now := time.Now()
start := now.Add(-time.Hour)
end := now.Add(time.Hour)
assert.True(t, IsInDuration(now, start, end))
assert.False(t, IsInDuration(now.Add(10*time.Hour), start, end))
assert.False(t, IsInDuration(now.Add(-10*time.Hour), start, end))
})
t.Run("carbon", func(t *testing.T) {
now := Now()
start := now.SubHour()
end := now.AddHour()
assert.True(t, IsInDuration(now, start, end))
assert.False(t, IsInDuration(now.AddHours(10), start, end))
assert.False(t, IsInDuration(now.SubHours(10), start, end))
})
t.Run("timestamp", func(t *testing.T) {
now := time.Now().Unix()
start := now - 3600
end := now + 3600
assert.True(t, IsInDuration(now, start, end))
assert.False(t, IsInDuration(now+3600*10, start, end))
assert.False(t, IsInDuration(now-3600*10, start, end))
})
}
func TestClean(t *testing.T) {
_ = t
_ = TimestampToTime[int]
_ = FormatDuration[int64]
}