1// Copyright 2019 The Go Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style
3// license that can be found in the LICENSE file.
4
5package prototest_test
6
7import (
8	"fmt"
9	"testing"
10
11	"google.golang.org/protobuf/internal/flags"
12	"google.golang.org/protobuf/proto"
13	"google.golang.org/protobuf/runtime/protoimpl"
14	"google.golang.org/protobuf/testing/prototest"
15
16	irregularpb "google.golang.org/protobuf/internal/testprotos/irregular"
17	legacypb "google.golang.org/protobuf/internal/testprotos/legacy"
18	legacy1pb "google.golang.org/protobuf/internal/testprotos/legacy/proto2_20160225_2fc053c5"
19	testpb "google.golang.org/protobuf/internal/testprotos/test"
20	_ "google.golang.org/protobuf/internal/testprotos/test/weak1"
21	_ "google.golang.org/protobuf/internal/testprotos/test/weak2"
22	test3pb "google.golang.org/protobuf/internal/testprotos/test3"
23)
24
25func Test(t *testing.T) {
26	ms := []proto.Message{
27		(*testpb.TestAllTypes)(nil),
28		(*test3pb.TestAllTypes)(nil),
29		(*testpb.TestRequired)(nil),
30		(*irregularpb.Message)(nil),
31		(*testpb.TestAllExtensions)(nil),
32		(*legacypb.Legacy)(nil),
33		protoimpl.X.MessageOf((*legacy1pb.Message)(nil)).Interface(),
34	}
35	if flags.ProtoLegacy {
36		ms = append(ms, (*testpb.TestWeak)(nil))
37	}
38
39	for _, m := range ms {
40		t.Run(fmt.Sprintf("%T", m), func(t *testing.T) {
41			prototest.Message{}.Test(t, m.ProtoReflect().Type())
42		})
43	}
44}
45