@@ -699,6 +699,74 @@ func (ms *MySuite) TestJSONPrintNoTag(c *C) {
699699 c .Assert (errs ["B" ], HasError , validator .ErrLen )
700700}
701701
702+ func (ms * MySuite ) TestValidateSlice (c * C ) {
703+ type test2 struct {
704+ Num int `validate:"max=2"`
705+ String string `validate:"nonzero"`
706+ }
707+
708+ err := validator .Validate ([]test2 {
709+ {
710+ Num : 6 ,
711+ String : "foo" ,
712+ },
713+ {
714+ Num : 1 ,
715+ String : "foo" ,
716+ },
717+ })
718+ c .Assert (err , NotNil )
719+ errs , ok := err .(validator.ErrorMap )
720+ c .Assert (ok , Equals , true )
721+ c .Assert (errs ["[0].Num" ], HasError , validator .ErrMax )
722+ c .Assert (errs ["[0].String" ], IsNil ) // sanity check
723+ c .Assert (errs ["[1].Num" ], IsNil ) // sanity check
724+ c .Assert (errs ["[1].String" ], IsNil ) // sanity check
725+ }
726+
727+ func (ms * MySuite ) TestValidateMap (c * C ) {
728+ type test2 struct {
729+ Num int `validate:"max=2"`
730+ String string `validate:"nonzero"`
731+ }
732+
733+ err := validator .Validate (map [string ]test2 {
734+ "first" : {
735+ Num : 6 ,
736+ String : "foo" ,
737+ },
738+ "second" : {
739+ Num : 1 ,
740+ String : "foo" ,
741+ },
742+ })
743+ c .Assert (err , NotNil )
744+ errs , ok := err .(validator.ErrorMap )
745+ c .Assert (ok , Equals , true )
746+ c .Assert (errs ["[first](value).Num" ], HasError , validator .ErrMax )
747+ c .Assert (errs ["[first](value).String" ], IsNil ) // sanity check
748+ c .Assert (errs ["[second](value).Num" ], IsNil ) // sanity check
749+ c .Assert (errs ["[second](value).String" ], IsNil ) // sanity check
750+
751+ err = validator .Validate (map [test2 ]string {
752+ {
753+ Num : 6 ,
754+ String : "foo" ,
755+ }: "first" ,
756+ {
757+ Num : 1 ,
758+ String : "foo" ,
759+ }: "second" ,
760+ })
761+ c .Assert (err , NotNil )
762+ errs , ok = err .(validator.ErrorMap )
763+ c .Assert (ok , Equals , true )
764+ c .Assert (errs ["[{Num:6 String:foo}](key).Num" ], HasError , validator .ErrMax )
765+ c .Assert (errs ["[{Num:6 String:foo}](key).String" ], IsNil ) // sanity check
766+ c .Assert (errs ["[{Num:1 String:foo}](key).Num" ], IsNil ) // sanity check
767+ c .Assert (errs ["[{Num:1 String:foo}](key).String" ], IsNil ) // sanity check
768+ }
769+
702770type hasErrorChecker struct {
703771 * CheckerInfo
704772}
0 commit comments