(t *testing.T)
| 466 | } |
| 467 | |
| 468 | func TestAnonymous(t *testing.T) { |
| 469 | validate := New() |
| 470 | validate.RegisterTagNameFunc(func(fld reflect.StructField) string { |
| 471 | name := strings.SplitN(fld.Tag.Get("json"), ",", 2)[0] |
| 472 | |
| 473 | if name == "-" { |
| 474 | return "" |
| 475 | } |
| 476 | |
| 477 | return name |
| 478 | }) |
| 479 | |
| 480 | type Test struct { |
| 481 | Anonymous struct { |
| 482 | A string `validate:"required" json:"EH"` |
| 483 | } |
| 484 | AnonymousB struct { |
| 485 | B string `validate:"required" json:"BEE"` |
| 486 | } |
| 487 | anonymousC struct { |
| 488 | c string `validate:"required"` |
| 489 | } |
| 490 | } |
| 491 | |
| 492 | tst := &Test{ |
| 493 | Anonymous: struct { |
| 494 | A string `validate:"required" json:"EH"` |
| 495 | }{ |
| 496 | A: "1", |
| 497 | }, |
| 498 | AnonymousB: struct { |
| 499 | B string `validate:"required" json:"BEE"` |
| 500 | }{ |
| 501 | B: "", |
| 502 | }, |
| 503 | anonymousC: struct { |
| 504 | c string `validate:"required"` |
| 505 | }{ |
| 506 | c: "", |
| 507 | }, |
| 508 | } |
| 509 | |
| 510 | Equal(t, tst.anonymousC.c, "") |
| 511 | |
| 512 | err := validate.Struct(tst) |
| 513 | NotEqual(t, err, nil) |
| 514 | |
| 515 | errs := err.(ValidationErrors) |
| 516 | |
| 517 | Equal(t, len(errs), 1) |
| 518 | AssertError(t, errs, "Test.AnonymousB.BEE", "Test.AnonymousB.B", "BEE", "B", "required") |
| 519 | |
| 520 | fe := getError(errs, "Test.AnonymousB.BEE", "Test.AnonymousB.B") |
| 521 | NotEqual(t, fe, nil) |
| 522 | Equal(t, fe.Field(), "BEE") |
| 523 | Equal(t, fe.StructField(), "B") |
| 524 | |
| 525 | s := struct { |
nothing calls this directly
no test coverage detected
searching dependent graphs…