@@ -4314,6 +4314,66 @@ func TestIsEqValidation(t *testing.T) {
43144314 PanicMatches (t , func () { validate .Var (now , "eq=now" ) }, "Bad field type time.Time" )
43154315}
43164316
4317+ func TestOneOfValidation (t * testing.T ) {
4318+ validate := New ()
4319+
4320+ passSpecs := []struct {
4321+ f interface {}
4322+ t string
4323+ }{
4324+ {f : "red" , t : "oneof=red green" },
4325+ {f : "green" , t : "oneof=red green" },
4326+ {f : 5 , t : "oneof=5 6" },
4327+ {f : 6 , t : "oneof=5 6" },
4328+ {f : int8 (6 ), t : "oneof=5 6" },
4329+ {f : int16 (6 ), t : "oneof=5 6" },
4330+ {f : int32 (6 ), t : "oneof=5 6" },
4331+ {f : int64 (6 ), t : "oneof=5 6" },
4332+ {f : uint (6 ), t : "oneof=5 6" },
4333+ {f : uint8 (6 ), t : "oneof=5 6" },
4334+ {f : uint16 (6 ), t : "oneof=5 6" },
4335+ {f : uint32 (6 ), t : "oneof=5 6" },
4336+ {f : uint64 (6 ), t : "oneof=5 6" },
4337+ }
4338+
4339+ for _ , spec := range passSpecs {
4340+ t .Logf ("%#v" , spec )
4341+ errs := validate .Var (spec .f , spec .t )
4342+ Equal (t , errs , nil )
4343+ }
4344+
4345+ failSpecs := []struct {
4346+ f interface {}
4347+ t string
4348+ }{
4349+ {f : "" , t : "oneof=red green" },
4350+ {f : "yellow" , t : "oneof=red green" },
4351+ {f : 5 , t : "oneof=red green" },
4352+ {f : 6 , t : "oneof=red green" },
4353+ {f : 6 , t : "oneof=7" },
4354+ {f : uint (6 ), t : "oneof=7" },
4355+ {f : int8 (5 ), t : "oneof=red green" },
4356+ {f : int16 (5 ), t : "oneof=red green" },
4357+ {f : int32 (5 ), t : "oneof=red green" },
4358+ {f : int64 (5 ), t : "oneof=red green" },
4359+ {f : uint (5 ), t : "oneof=red green" },
4360+ {f : uint8 (5 ), t : "oneof=red green" },
4361+ {f : uint16 (5 ), t : "oneof=red green" },
4362+ {f : uint32 (5 ), t : "oneof=red green" },
4363+ {f : uint64 (5 ), t : "oneof=red green" },
4364+ }
4365+
4366+ for _ , spec := range failSpecs {
4367+ t .Logf ("%#v" , spec )
4368+ errs := validate .Var (spec .f , spec .t )
4369+ AssertError (t , errs , "" , "" , "" , "" , "oneof" )
4370+ }
4371+
4372+ PanicMatches (t , func () {
4373+ validate .Var (3.14 , "oneof=red green" )
4374+ }, "Bad field type float64" )
4375+ }
4376+
43174377func TestBase64Validation (t * testing.T ) {
43184378
43194379 validate := New ()
0 commit comments