Add gtime unit test

This commit is contained in:
hailaz
2019-04-06 22:48:47 +08:00
parent d34273abff
commit 2107061a46
4 changed files with 536 additions and 24 deletions

View File

@ -4,50 +4,70 @@
// If a copy of the MIT was not distributed with this file,
// You can obtain one at https://github.com/gogf/gf.
package gtime
package gtime_test
import (
"testing"
"testing"
"github.com/gogf/gf/g/os/gtime"
)
func Benchmark_Second(b *testing.B) {
for i := 0; i < b.N; i++ {
Second()
}
for i := 0; i < b.N; i++ {
gtime.Second()
}
}
func Benchmark_Millisecond(b *testing.B) {
for i := 0; i < b.N; i++ {
Millisecond()
}
for i := 0; i < b.N; i++ {
gtime.Millisecond()
}
}
func Benchmark_Microsecond(b *testing.B) {
for i := 0; i < b.N; i++ {
Microsecond()
}
for i := 0; i < b.N; i++ {
gtime.Microsecond()
}
}
func Benchmark_Nanosecond(b *testing.B) {
for i := 0; i < b.N; i++ {
Nanosecond()
}
for i := 0; i < b.N; i++ {
gtime.Nanosecond()
}
}
func Benchmark_StrToTime(b *testing.B) {
for i := 0; i < b.N; i++ {
StrToTime("2018-02-09T20:46:17.897Z")
}
for i := 0; i < b.N; i++ {
gtime.StrToTime("2018-02-09T20:46:17.897Z")
}
}
func Benchmark_ParseTimeFromContent(b *testing.B) {
for i := 0; i < b.N; i++ {
ParseTimeFromContent("2018-02-09T20:46:17.897Z")
}
for i := 0; i < b.N; i++ {
gtime.ParseTimeFromContent("2018-02-09T20:46:17.897Z")
}
}
func Benchmark_NewFromTimeStamp(b *testing.B) {
for i := 0; i < b.N; i++ {
NewFromTimeStamp(1542674930)
}
}
for i := 0; i < b.N; i++ {
gtime.NewFromTimeStamp(1542674930)
}
}
func Benchmark_Date(b *testing.B) {
for i := 0; i < b.N; i++ {
gtime.Date()
}
}
func Benchmark_Datetime(b *testing.B) {
for i := 0; i < b.N; i++ {
gtime.Datetime()
}
}
func Benchmark_SetTimeZone(b *testing.B) {
for i := 0; i < b.N; i++ {
gtime.SetTimeZone("Asia/Shanghai")
}
}

View File

@ -0,0 +1,238 @@
package gtime_test
import (
"testing"
"time"
"github.com/gogf/gf/g/os/gtime"
"github.com/gogf/gf/g/test/gtest"
)
func Test_SetTimeZone(t *testing.T) {
gtest.Case(t, func() {
gtime.SetTimeZone("Asia/Shanghai")
gtest.Assert(time.Local.String(), "Asia/Shanghai")
})
}
func Test_Nanosecond(t *testing.T) {
gtest.Case(t, func() {
nanos := gtime.Nanosecond()
timeTemp := time.Unix(0, nanos)
gtest.Assert(nanos, timeTemp.UnixNano())
})
}
func Test_Microsecond(t *testing.T) {
gtest.Case(t, func() {
micros := gtime.Microsecond()
timeTemp := time.Unix(0, micros*1e3)
gtest.Assert(micros, timeTemp.UnixNano()/1e3)
})
}
func Test_Millisecond(t *testing.T) {
gtest.Case(t, func() {
millis := gtime.Millisecond()
timeTemp := time.Unix(0, millis*1e6)
gtest.Assert(millis, timeTemp.UnixNano()/1e6)
})
}
func Test_Second(t *testing.T) {
gtest.Case(t, func() {
s := gtime.Second()
timeTemp := time.Unix(s, 0)
gtest.Assert(s, timeTemp.Unix())
})
}
func Test_Date(t *testing.T) {
gtest.Case(t, func() {
gtest.Assert(gtime.Date(), time.Now().Format("2006-01-02"))
})
}
func Test_Datetime(t *testing.T) {
gtest.Case(t, func() {
datetime := gtime.Datetime()
timeTemp, err := gtime.StrToTime(datetime, "Y-m-d H:i:s")
if err != nil {
t.Error("test fail")
}
gtest.Assert(datetime, timeTemp.Time.Format("2006-01-02 15:04:05"))
})
}
/*
func Test_parseDateStr(t *testing.T) {
gtest.Case(t, func() {
//正常日期列表
var testDates = []string{
"2006-01-02",
"2006/01/02",
"2006.01.02",
"06.01.02",
"02.jan.2006",
}
for _, item := range testDates {
year, month, day := parseDateStr(item)
gtest.Assert(year, 2006)
gtest.Assert(month, 1)
gtest.Assert(day, 2)
}
//异常日期列表
var testDatesFail = []string{
"2006.01",
"06..02",
}
for _, item := range testDatesFail {
year, month, day := parseDateStr(item)
gtest.Assert(year, 0)
gtest.Assert(month, 0)
gtest.Assert(day, 0)
}
})
}
*/
//
func Test_ConvertZone(t *testing.T) {
gtest.Case(t, func() {
//现行时间
nowUTC := time.Now().UTC()
testZone := "America/Los_Angeles"
//转换为洛杉矶时间
t1, err := gtime.ConvertZone(nowUTC.Format("2006-01-02 15:04:05"), testZone, "")
if err != nil {
t.Error("test fail")
}
//使用洛杉矶时区解析上面转换后的时间
laStr := t1.Time.Format("2006-01-02 15:04:05")
loc, err := time.LoadLocation(testZone)
t2, err := time.ParseInLocation("2006-01-02 15:04:05", laStr, loc)
//判断是否与现行时间匹配
gtest.Assert(t2.UTC().Unix(), nowUTC.Unix())
})
//test err
gtest.Case(t, func() {
//现行时间
nowUTC := time.Now().UTC()
//t.Log(nowUTC.Unix())
testZone := "errZone"
//错误时间输入
_, err := gtime.ConvertZone(nowUTC.Format("06..02 15:04:05"), testZone, "")
if err == nil {
t.Error("test fail")
}
//错误时区输入
_, err = gtime.ConvertZone(nowUTC.Format("2006-01-02 15:04:05"), testZone, "")
if err == nil {
t.Error("test fail")
}
//错误时区输入
_, err = gtime.ConvertZone(nowUTC.Format("2006-01-02 15:04:05"), testZone, testZone)
if err == nil {
t.Error("test fail")
}
})
}
func Test_StrToTime(t *testing.T) {
gtest.Case(t, func() {
//正常日期列表
var testDatetimes = []string{
"2006-01-02 15:04:05",
"2006/01/02 15:04:05",
"2006.01.02 15:04:05.000",
"2006.01.02 - 15:04:05",
"2006.01.02 15:04:05 +0800 CST",
"2006-01-02T20:05:06+05:01:01",
"2006-01-02T14:03:04Z01:01:01",
"2006-01-02T15:04:05Z",
"02-jan-2006 15:04:05",
"02/jan/2006 15:04:05",
"02.jan.2006 15:04:05",
"02.jan.2006:15:04:05",
}
for _, item := range testDatetimes {
timeTemp, err := gtime.StrToTime(item)
if err != nil {
t.Error("test fail")
}
gtest.Assert(timeTemp.Time.Format("2006-01-02 15:04:05"), "2006-01-02 15:04:05")
}
//正常日期列表时间00:00:00
var testDates = []string{
"2006.01.02",
"2006.01.02 00:00",
"2006.01.02 00:00:00.000",
}
for _, item := range testDates {
timeTemp, err := gtime.StrToTime(item)
if err != nil {
t.Error("test fail")
}
gtest.Assert(timeTemp.Time.Format("2006-01-02 15:04:05"), "2006-01-02 00:00:00")
}
//异常日期列表
var testDatesFail = []string{
"2006.01",
"06..02",
"20060102",
}
for _, item := range testDatesFail {
_, err := gtime.StrToTime(item)
if err == nil {
t.Error("test fail")
}
}
//test err
_, err := gtime.StrToTime("2006-01-02 15:04:05", "aabbccdd")
if err == nil {
t.Error("test fail")
}
})
}
func Test_ParseTimeFromContent(t *testing.T) {
gtest.Case(t, func() {
timeTemp := gtime.ParseTimeFromContent("我是中文2006-01-02 15:04:05我也是中文", "Y-m-d H:i:s")
gtest.Assert(timeTemp.Time.Format("2006-01-02 15:04:05"), "2006-01-02 15:04:05")
timeTemp1 := gtime.ParseTimeFromContent("我是中文2006-01-02 15:04:05我也是中文")
gtest.Assert(timeTemp1.Time.Format("2006-01-02 15:04:05"), "2006-01-02 15:04:05")
timeTemp2 := gtime.ParseTimeFromContent("我是中文02.jan.2006 15:04:05我也是中文")
gtest.Assert(timeTemp2.Time.Format("2006-01-02 15:04:05"), "2006-01-02 15:04:05")
//test err
timeTempErr := gtime.ParseTimeFromContent("我是中文", "Y-m-d H:i:s")
if timeTempErr != nil {
t.Error("test fail")
}
})
}
func Test_FuncCost(t *testing.T) {
gtest.Case(t, func() {
gtime.FuncCost(func() {
})
})
}

View File

@ -0,0 +1,65 @@
package gtime_test
import (
"testing"
"github.com/gogf/gf/g/os/gtime"
"github.com/gogf/gf/g/test/gtest"
)
/*
func Test_formatToStdLayout(t *testing.T) {
gtest.Case(t, func() {
gtest.Assert(formatToStdLayout("Y-m-d H:i:s"), "2006-01-02 15:04:05")
gtest.Assert(formatToStdLayout("\\T\\i\\m\\e Y-m-d H:i:s"), "Time 2006-01-02 15:04:05")
gtest.Assert(formatToStdLayout("Y-m-d H:i:s\\"), "2006-01-02 15:04:05")
gtest.Assert(formatToStdLayout("Y-m-j G:i:s.u"), "2006-01-02 15:04:05.000")
gtest.Assert(formatToStdLayout("Y-m-j G:i:su"), "2006-01-02 15:04:05.000")
})
}
*/
func Test_Format(t *testing.T) {
gtest.Case(t, func() {
timeTemp, err := gtime.StrToTime("2006-01-11 15:04:05", "Y-m-d H:i:s")
timeTemp.ToZone("Asia/Shanghai")
if err != nil {
t.Error("test fail")
}
gtest.Assert(timeTemp.Format("\\T\\i\\m\\e中文Y-m-j G:i:s.u\\"), "Time中文2006-01-11 15:04:05.000")
gtest.Assert(timeTemp.Format("d D j l"), "11 Wed 11 Wednesday")
gtest.Assert(timeTemp.Format("F m M n"), "January 01 Jan 1")
gtest.Assert(timeTemp.Format("Y y"), "2006 06")
gtest.Assert(timeTemp.Format("a A g G h H i s u .u"), "pm PM 3 15 03 15 04 05 000 .000")
gtest.Assert(timeTemp.Format("O P T"), "+0800 +08:00 CST")
gtest.Assert(timeTemp.Format("r"), "Wed, 11 Jan 06 15:04 CST")
gtest.Assert(timeTemp.Format("c"), "2006-01-11T15:04:05+08:00")
//补零
timeTemp1, err := gtime.StrToTime("2006-01-02 03:04:05", "Y-m-d H:i:s")
if err != nil {
t.Error("test fail")
}
gtest.Assert(timeTemp1.Format("Y-m-d h:i:s"), "2006-01-02 03:04:05")
//不补零
timeTemp2, err := gtime.StrToTime("2006-01-02 03:04:05", "Y-m-d H:i:s")
if err != nil {
t.Error("test fail")
}
gtest.Assert(timeTemp2.Format("Y-n-j G:i:s"), "2006-1-2 3:04:05")
})
}
func Test_Layout(t *testing.T) {
gtest.Case(t, func() {
timeTemp := gtime.Now()
gtest.Assert(timeTemp.Layout("2006-01-02 15:04:05"), timeTemp.Time.Format("2006-01-02 15:04:05"))
})
}

View File

@ -0,0 +1,189 @@
package gtime_test
import (
"testing"
"time"
"github.com/gogf/gf/g/os/gtime"
"github.com/gogf/gf/g/test/gtest"
)
func Test_New(t *testing.T) {
gtest.Case(t, func() {
timeNow := time.Now()
timeTemp := gtime.New(timeNow)
gtest.Assert(timeTemp.Time.UnixNano(), timeNow.UnixNano())
timeTemp1 := gtime.New()
gtest.Assert(timeTemp1.Time, time.Time{})
})
}
func Test_NewFromStr(t *testing.T) {
gtest.Case(t, func() {
timeTemp := gtime.NewFromStr("2006-01-02 15:04:05")
gtest.Assert(timeTemp.Format("Y-m-d H:i:s"), "2006-01-02 15:04:05")
timeTemp1 := gtime.NewFromStr("20060102")
if timeTemp1 != nil {
t.Error("test fail")
}
})
}
func Test_NewFromStrFormat(t *testing.T) {
gtest.Case(t, func() {
timeTemp := gtime.NewFromStrFormat("2006-01-02 15:04:05", "Y-m-d H:i:s")
gtest.Assert(timeTemp.Format("Y-m-d H:i:s"), "2006-01-02 15:04:05")
timeTemp1 := gtime.NewFromStrFormat("2006-01-02 15:04:05", "aabbcc")
if timeTemp1 != nil {
t.Error("test fail")
}
})
}
func Test_NewFromStrLayout(t *testing.T) {
gtest.Case(t, func() {
timeTemp := gtime.NewFromStrLayout("2006-01-02 15:04:05", "2006-01-02 15:04:05")
gtest.Assert(timeTemp.Format("Y-m-d H:i:s"), "2006-01-02 15:04:05")
timeTemp1 := gtime.NewFromStrLayout("2006-01-02 15:04:05", "aabbcc")
if timeTemp1 != nil {
t.Error("test fail")
}
})
}
func Test_NewFromTimeStamp(t *testing.T) {
gtest.Case(t, func() {
timeTemp := gtime.NewFromTimeStamp(1554459846000)
gtest.Assert(timeTemp.Format("Y-m-d H:i:s"), "2019-04-05 18:24:06")
timeTemp1 := gtime.NewFromTimeStamp(0)
gtest.Assert(timeTemp1.Format("Y-m-d H:i:s"), "0001-01-01 00:00:00")
})
}
func Test_tSecond(t *testing.T) {
gtest.Case(t, func() {
timeTemp := gtime.Now()
gtest.Assert(timeTemp.Second(), timeTemp.Time.Unix())
})
}
func Test_tNanosecond(t *testing.T) {
gtest.Case(t, func() {
timeTemp := gtime.Now()
gtest.Assert(timeTemp.Nanosecond(), timeTemp.Time.UnixNano())
})
}
func Test_tMicrosecond(t *testing.T) {
gtest.Case(t, func() {
timeTemp := gtime.Now()
gtest.Assert(timeTemp.Microsecond(), timeTemp.Time.UnixNano()/1e3)
})
}
func Test_tMillisecond(t *testing.T) {
gtest.Case(t, func() {
timeTemp := gtime.Now()
gtest.Assert(timeTemp.Millisecond(), timeTemp.Time.UnixNano()/1e6)
})
}
func Test_String(t *testing.T) {
gtest.Case(t, func() {
timeTemp := gtime.Now()
gtest.Assert(timeTemp.String(), timeTemp.Time.Format("2006-01-02 15:04:05"))
})
}
func Test_Clone(t *testing.T) {
gtest.Case(t, func() {
timeTemp := gtime.Now()
timeTemp1 := timeTemp.Clone()
gtest.Assert(timeTemp.Time.Unix(), timeTemp1.Time.Unix())
})
}
func Test_ToTime(t *testing.T) {
gtest.Case(t, func() {
timeTemp := gtime.Now()
timeTemp1 := timeTemp.Time
gtest.Assert(timeTemp.ToTime().UnixNano(), timeTemp1.UnixNano())
})
}
func Test_Add(t *testing.T) {
gtest.Case(t, func() {
timeTemp := gtime.NewFromStr("2006-01-02 15:04:05")
timeTemp.Add(time.Second)
gtest.Assert(timeTemp.Format("Y-m-d H:i:s"), "2006-01-02 15:04:06")
})
}
func Test_ToZone(t *testing.T) {
gtest.Case(t, func() {
timeTemp := gtime.Now()
//
timeTemp.ToZone("America/Los_Angeles")
gtest.Assert(timeTemp.Time.Location().String(), "America/Los_Angeles")
loc, err := time.LoadLocation("Asia/Shanghai")
if err != nil {
t.Error("test fail")
}
timeTemp.ToLocation(loc)
gtest.Assert(timeTemp.Time.Location().String(), "Asia/Shanghai")
timeTemp1 := timeTemp.ToZone("errZone")
if timeTemp1 != nil {
t.Error("test fail")
}
})
}
func Test_AddDate(t *testing.T) {
gtest.Case(t, func() {
timeTemp := gtime.NewFromStr("2006-01-02 15:04:05")
timeTemp.AddDate(1, 2, 3)
gtest.Assert(timeTemp.Format("Y-m-d H:i:s"), "2007-03-05 15:04:05")
})
}
func Test_UTC(t *testing.T) {
gtest.Case(t, func() {
timeTemp := gtime.Now()
timeTemp1 := timeTemp.Time
timeTemp.UTC()
gtest.Assert(timeTemp.UnixNano(), timeTemp1.UTC().UnixNano())
})
}
func Test_Local(t *testing.T) {
gtest.Case(t, func() {
timeTemp := gtime.Now()
timeTemp1 := timeTemp.Time
timeTemp.Local()
gtest.Assert(timeTemp.UnixNano(), timeTemp1.Local().UnixNano())
})
}
func Test_Round(t *testing.T) {
gtest.Case(t, func() {
timeTemp := gtime.Now()
timeTemp1 := timeTemp.Time
timeTemp.Round(time.Hour)
gtest.Assert(timeTemp.UnixNano(), timeTemp1.Round(time.Hour).UnixNano())
})
}
func Test_Truncate(t *testing.T) {
gtest.Case(t, func() {
timeTemp := gtime.Now()
timeTemp1 := timeTemp.Time
timeTemp.Truncate(time.Hour)
gtest.Assert(timeTemp.UnixNano(), timeTemp1.Truncate(time.Hour).UnixNano())
})
}