@@ -14022,6 +14022,57 @@ func TestOmitNilAndRequired(t *testing.T) {
14022
14022
})
14023
14023
}
14024
14024
14025
+ func TestOmitZero (t * testing.T ) {
14026
+ type (
14027
+ OmitEmpty struct {
14028
+ Str string `validate:"omitempty,min=10"`
14029
+ StrPtr * string `validate:"omitempty,min=10"`
14030
+ }
14031
+ OmitZero struct {
14032
+ Str string `validate:"omitzero,min=10"`
14033
+ StrPtr * string `validate:"omitzero,min=10"`
14034
+ }
14035
+ )
14036
+
14037
+ var (
14038
+ validate = New ()
14039
+ valid = "this is the long string to pass the validation rule"
14040
+ empty = ""
14041
+ )
14042
+
14043
+ t .Run ("compare using valid data" , func (t * testing.T ) {
14044
+ err1 := validate .Struct (OmitEmpty {Str : valid , StrPtr : & valid })
14045
+ err2 := validate .Struct (OmitZero {Str : valid , StrPtr : & valid })
14046
+
14047
+ Equal (t , err1 , nil )
14048
+ Equal (t , err2 , nil )
14049
+ })
14050
+
14051
+ t .Run ("compare fully empty omitempty and omitzero" , func (t * testing.T ) {
14052
+ err1 := validate .Struct (OmitEmpty {})
14053
+ err2 := validate .Struct (OmitZero {})
14054
+
14055
+ Equal (t , err1 , nil )
14056
+ Equal (t , err2 , nil )
14057
+ })
14058
+
14059
+ t .Run ("compare with zero value" , func (t * testing.T ) {
14060
+ err1 := validate .Struct (OmitEmpty {Str : "" , StrPtr : nil })
14061
+ err2 := validate .Struct (OmitZero {Str : "" , StrPtr : nil })
14062
+
14063
+ Equal (t , err1 , nil )
14064
+ Equal (t , err2 , nil )
14065
+ })
14066
+
14067
+ t .Run ("compare with empty value" , func (t * testing.T ) {
14068
+ err1 := validate .Struct (OmitEmpty {Str : empty , StrPtr : & empty })
14069
+ err2 := validate .Struct (OmitZero {Str : empty , StrPtr : & empty })
14070
+
14071
+ AssertError (t , err1 , "OmitEmpty.StrPtr" , "OmitEmpty.StrPtr" , "StrPtr" , "StrPtr" , "min" )
14072
+ Equal (t , err2 , nil )
14073
+ })
14074
+ }
14075
+
14025
14076
func TestPrivateFieldsStruct (t * testing.T ) {
14026
14077
type tc struct {
14027
14078
stct interface {}
0 commit comments