package test import ( "git.sxidc.com/go-framework/baize/framework/core/tag/check" "github.com/pkg/errors" "strings" "testing" "time" ) type CustomCheckTagStruct struct { Time time.Time `check:"timenotzero"` } type CustomCheckTagPointerStruct struct { Time *time.Time `check:"timenotzero"` } var fieldMap = map[string]string{ "Time": "测试时间", } func TestCustomCheckTag(t *testing.T) { now := time.Now().Local() customCheckTagStruct := CustomCheckTagStruct{ Time: now, } customCheckTagPointerStruct := CustomCheckTagPointerStruct{ Time: &now, } customCheckTagStructZero := CustomCheckTagStruct{} customCheckTagPointerStructZero := CustomCheckTagPointerStruct{} err := check.Struct(customCheckTagStruct, fieldMap). CheckFields("Time") if err != nil { t.Fatalf("%+v\n", err) } err = check.Struct(customCheckTagPointerStruct, fieldMap). CheckFields("Time") if err != nil { t.Fatalf("%+v\n", err) } err = check.Struct(&customCheckTagStruct, fieldMap). CheckFields("Time") if err != nil { t.Fatalf("%+v\n", err) } err = check.Struct(&customCheckTagPointerStruct, fieldMap). CheckFields("Time") if err != nil { t.Fatalf("%+v\n", err) } err = check.Struct(customCheckTagStructZero, fieldMap). CheckFields("Time") if err == nil || !strings.Contains(err.Error(), "使用了时间零值") { t.Fatalf("%+v\n", errors.New("没有检测出使用了时间零值")) } err = check.Struct(customCheckTagPointerStructZero, fieldMap). CheckFields("Time") if err == nil || !strings.Contains(err.Error(), "使用了时间零值") { t.Fatalf("%+v\n", errors.New("没有检测出使用了时间零值")) } err = check.Struct(&customCheckTagStructZero, fieldMap). CheckFields("Time") if err == nil || !strings.Contains(err.Error(), "使用了时间零值") { t.Fatalf("%+v\n", errors.Errorf(err.Error())) } err = check.Struct(&customCheckTagPointerStructZero, fieldMap). CheckFields("Time") if err == nil || !strings.Contains(err.Error(), "使用了时间零值") { t.Fatalf("%+v\n", errors.Errorf(err.Error())) } }