@@ -9201,3 +9201,44 @@ func TestDatetimeValidation(t *testing.T) {
92019201 _ = validate .Var (2 , "datetime" )
92029202 }, "Bad field type int" )
92039203}
9204+
9205+ func TestTimeZoneValidation (t * testing.T ) {
9206+ tests := []struct {
9207+ value string `validate:"timeZone"`
9208+ tag string
9209+ expected bool
9210+ }{
9211+ // systems may have different time zone database, some systems time zone are case insensitive
9212+ {"America/New_York" , `timeZone` , true },
9213+ {"UTC" , `timeZone` , true },
9214+ {"" , `timeZone` , false },
9215+ {"Local" , `timeZone` , false },
9216+ {"Unknown" , `timeZone` , false },
9217+ }
9218+
9219+ validate := New ()
9220+
9221+ for i , test := range tests {
9222+
9223+ errs := validate .Var (test .value , test .tag )
9224+
9225+ if test .expected {
9226+ if ! IsEqual (errs , nil ) {
9227+ t .Fatalf ("Index: %d time zone failed Error: %s" , i , errs )
9228+ }
9229+ } else {
9230+ if IsEqual (errs , nil ) {
9231+ t .Fatalf ("Index: %d time zone failed Error: %s" , i , errs )
9232+ } else {
9233+ val := getError (errs , "" , "" )
9234+ if val .Tag () != "timeZone" {
9235+ t .Fatalf ("Index: %d time zone failed Error: %s" , i , errs )
9236+ }
9237+ }
9238+ }
9239+ }
9240+
9241+ PanicMatches (t , func () {
9242+ _ = validate .Var (2 , "timeZone" )
9243+ }, "Bad field type int" )
9244+ }
0 commit comments