12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- // Copyright 2019 The Go Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
- package proto_test
- import (
- "fmt"
- "testing"
- "google.golang.org/protobuf/internal/impl"
- piface "google.golang.org/protobuf/runtime/protoiface"
- )
- // TestValidate tests the internal message validator.
- //
- // Despite being more properly associated with the internal/impl package,
- // it is located here to take advantage of the test wire encoder/decoder inputs.
- func TestValidateValid(t *testing.T) {
- for _, test := range testValidMessages {
- for _, m := range test.decodeTo {
- t.Run(fmt.Sprintf("%s (%T)", test.desc, m), func(t *testing.T) {
- mt := m.ProtoReflect().Type()
- want := impl.ValidationValid
- if test.validationStatus != 0 {
- want = test.validationStatus
- }
- out, status := impl.Validate(mt, piface.UnmarshalInput{
- Buf: test.wire,
- })
- if status != want {
- t.Errorf("Validate(%x) = %v, want %v", test.wire, status, want)
- }
- if got, want := (out.Flags&piface.UnmarshalInitialized != 0), !test.partial; got != want && !test.nocheckValidInit && status == impl.ValidationValid {
- t.Errorf("Validate(%x): initialized = %v, want %v", test.wire, got, want)
- }
- })
- }
- }
- }
- func TestValidateInvalid(t *testing.T) {
- for _, test := range testInvalidMessages {
- for _, m := range test.decodeTo {
- t.Run(fmt.Sprintf("%s (%T)", test.desc, m), func(t *testing.T) {
- mt := m.ProtoReflect().Type()
- _, got := impl.Validate(mt, piface.UnmarshalInput{
- Buf: test.wire,
- })
- want := impl.ValidationInvalid
- if got != want {
- t.Errorf("Validate(%x) = %v, want %v", test.wire, got, want)
- }
- })
- }
- }
- }
|