|  | // Copyright 2020 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 prototest | 
|  |  | 
|  | import ( | 
|  | "testing" | 
|  |  | 
|  | "google.golang.org/protobuf/reflect/protoreflect" | 
|  | ) | 
|  |  | 
|  | // Enum tests an [protoreflect.EnumType] implementation. | 
|  | type Enum struct{} | 
|  |  | 
|  | func (test Enum) Test(t testing.TB, et protoreflect.EnumType) { | 
|  | ed := et.Descriptor() | 
|  | values := ed.Values() | 
|  | for i := 0; i < values.Len(); i++ { | 
|  | evd := values.Get(i) | 
|  | num := evd.Number() | 
|  | e := et.New(num) | 
|  | if e.Descriptor() != ed { | 
|  | t.Errorf("enumType.New(%v).Descriptor() != enumType.Descriptor(), should match", num) | 
|  | } | 
|  | if e.Type() != et { | 
|  | t.Errorf("enumType.New(%v).Type() != enumType, should match", num) | 
|  | } | 
|  | if got, want := e.Number(), num; got != want { | 
|  | t.Errorf("enumType.New(%v).Number() = %v, want %v", num, got, want) | 
|  | } | 
|  | } | 
|  | } |