// Copyright 2018 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 protoreflect import "testing" func TestNameIsValid(t *testing.T) { tests := []struct { in Name want bool }{ {"", false}, {"a", true}, {".", false}, {"_", true}, // odd, but permitted by protoc {".foo", false}, {"foo.", false}, {"foo", true}, {"one1_two2_three3", true}, {"1one", false}, } for _, tt := range tests { if got := tt.in.IsValid(); got != tt.want { t.Errorf("Name(%q).IsValid() = %v, want %v", tt.in, got, tt.want) } } } func TestFullNameIsValid(t *testing.T) { tests := []struct { in FullName want bool }{ {"", false}, {"a", true}, {"a.b", true}, {"a.b.c", true}, {".", false}, {"_._._", true}, // odd, but permitted by protoc {".foo", false}, {"foo.", false}, {"foo", true}, {"one1_two2_three3", true}, {"one1.two2.three3", true}, {".one1.two2.three3", false}, {"one1.two2.three3.", false}, {"foo.1one", false}, } for _, tt := range tests { if got := tt.in.IsValid(); got != tt.want { t.Errorf("Name(%q).IsValid() = %v, want %v", tt.in, got, tt.want) } } } func TestNameAppend(t *testing.T) { tests := []FullName{ "", "a", "a.b", "a.b.c", "one1.two2.three3", } for _, tt := range tests { if got := tt.Parent().Append(tt.Name()); got != tt { t.Errorf("FullName.Parent().Append(FullName.Name()) = %q, want %q", got, tt) } } }