xref: /aosp_15_r20/external/golang-protobuf/reflect/protoreflect/proto_test.go (revision 1c12ee1efe575feb122dbf939ff15148a3b3e8f2)
1*1c12ee1eSDan Willemsen// Copyright 2018 The Go Authors. All rights reserved.
2*1c12ee1eSDan Willemsen// Use of this source code is governed by a BSD-style
3*1c12ee1eSDan Willemsen// license that can be found in the LICENSE file.
4*1c12ee1eSDan Willemsen
5*1c12ee1eSDan Willemsenpackage protoreflect
6*1c12ee1eSDan Willemsen
7*1c12ee1eSDan Willemsenimport "testing"
8*1c12ee1eSDan Willemsen
9*1c12ee1eSDan Willemsenfunc TestNameIsValid(t *testing.T) {
10*1c12ee1eSDan Willemsen	tests := []struct {
11*1c12ee1eSDan Willemsen		in   Name
12*1c12ee1eSDan Willemsen		want bool
13*1c12ee1eSDan Willemsen	}{
14*1c12ee1eSDan Willemsen		{"", false},
15*1c12ee1eSDan Willemsen		{"a", true},
16*1c12ee1eSDan Willemsen		{".", false},
17*1c12ee1eSDan Willemsen		{"_", true}, // odd, but permitted by protoc
18*1c12ee1eSDan Willemsen		{".foo", false},
19*1c12ee1eSDan Willemsen		{"foo.", false},
20*1c12ee1eSDan Willemsen		{"foo", true},
21*1c12ee1eSDan Willemsen		{"one1_two2_three3", true},
22*1c12ee1eSDan Willemsen		{"1one", false},
23*1c12ee1eSDan Willemsen	}
24*1c12ee1eSDan Willemsen
25*1c12ee1eSDan Willemsen	for _, tt := range tests {
26*1c12ee1eSDan Willemsen		if got := tt.in.IsValid(); got != tt.want {
27*1c12ee1eSDan Willemsen			t.Errorf("Name(%q).IsValid() = %v, want %v", tt.in, got, tt.want)
28*1c12ee1eSDan Willemsen		}
29*1c12ee1eSDan Willemsen	}
30*1c12ee1eSDan Willemsen}
31*1c12ee1eSDan Willemsen
32*1c12ee1eSDan Willemsenfunc TestFullNameIsValid(t *testing.T) {
33*1c12ee1eSDan Willemsen	tests := []struct {
34*1c12ee1eSDan Willemsen		in   FullName
35*1c12ee1eSDan Willemsen		want bool
36*1c12ee1eSDan Willemsen	}{
37*1c12ee1eSDan Willemsen		{"", false},
38*1c12ee1eSDan Willemsen		{"a", true},
39*1c12ee1eSDan Willemsen		{"a.b", true},
40*1c12ee1eSDan Willemsen		{"a.b.c", true},
41*1c12ee1eSDan Willemsen		{".", false},
42*1c12ee1eSDan Willemsen		{"_._._", true}, // odd, but permitted by protoc
43*1c12ee1eSDan Willemsen		{".foo", false},
44*1c12ee1eSDan Willemsen		{"foo.", false},
45*1c12ee1eSDan Willemsen		{"foo", true},
46*1c12ee1eSDan Willemsen		{"one1_two2_three3", true},
47*1c12ee1eSDan Willemsen		{"one1.two2.three3", true},
48*1c12ee1eSDan Willemsen		{".one1.two2.three3", false},
49*1c12ee1eSDan Willemsen		{"one1.two2.three3.", false},
50*1c12ee1eSDan Willemsen		{"foo.1one", false},
51*1c12ee1eSDan Willemsen	}
52*1c12ee1eSDan Willemsen
53*1c12ee1eSDan Willemsen	for _, tt := range tests {
54*1c12ee1eSDan Willemsen		if got := tt.in.IsValid(); got != tt.want {
55*1c12ee1eSDan Willemsen			t.Errorf("Name(%q).IsValid() = %v, want %v", tt.in, got, tt.want)
56*1c12ee1eSDan Willemsen		}
57*1c12ee1eSDan Willemsen	}
58*1c12ee1eSDan Willemsen}
59*1c12ee1eSDan Willemsen
60*1c12ee1eSDan Willemsenfunc TestNameAppend(t *testing.T) {
61*1c12ee1eSDan Willemsen	tests := []FullName{
62*1c12ee1eSDan Willemsen		"",
63*1c12ee1eSDan Willemsen		"a",
64*1c12ee1eSDan Willemsen		"a.b",
65*1c12ee1eSDan Willemsen		"a.b.c",
66*1c12ee1eSDan Willemsen		"one1.two2.three3",
67*1c12ee1eSDan Willemsen	}
68*1c12ee1eSDan Willemsen
69*1c12ee1eSDan Willemsen	for _, tt := range tests {
70*1c12ee1eSDan Willemsen		if got := tt.Parent().Append(tt.Name()); got != tt {
71*1c12ee1eSDan Willemsen			t.Errorf("FullName.Parent().Append(FullName.Name()) = %q, want %q", got, tt)
72*1c12ee1eSDan Willemsen		}
73*1c12ee1eSDan Willemsen	}
74*1c12ee1eSDan Willemsen}
75*1c12ee1eSDan Willemsen
76*1c12ee1eSDan Willemsenvar sink bool
77*1c12ee1eSDan Willemsen
78*1c12ee1eSDan Willemsenfunc BenchmarkFullNameIsValid(b *testing.B) {
79*1c12ee1eSDan Willemsen	for i := 0; i < b.N; i++ {
80*1c12ee1eSDan Willemsen		sink = FullName("google.protobuf.Any").IsValid()
81*1c12ee1eSDan Willemsen	}
82*1c12ee1eSDan Willemsen}
83