| // 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 protoreflect |
| |
| import "testing" |
| |
| func TestSourcePathString(t *testing.T) { |
| tests := []struct { |
| in SourcePath |
| want string |
| }{ |
| {nil, ""}, |
| {SourcePath{}, ""}, |
| {SourcePath{0}, ".0"}, |
| {SourcePath{1}, ".name"}, |
| {SourcePath{1, 1}, ".name.1"}, |
| {SourcePath{1, 1, -2, 3}, ".name.1.-2.3"}, |
| {SourcePath{3}, ".dependency"}, |
| {SourcePath{3, 0}, ".dependency[0]"}, |
| {SourcePath{3, -1}, ".dependency.-1"}, |
| {SourcePath{3, 1, 2}, ".dependency[1].2"}, |
| {SourcePath{4}, ".message_type"}, |
| {SourcePath{4, 0}, ".message_type[0]"}, |
| {SourcePath{4, -1}, ".message_type.-1"}, |
| {SourcePath{4, 1, 0}, ".message_type[1].0"}, |
| {SourcePath{4, 1, 1}, ".message_type[1].name"}, |
| } |
| for _, tt := range tests { |
| if got := tt.in.String(); got != tt.want { |
| t.Errorf("SourcePath(%d).String() = %v, want %v", tt.in, got, tt.want) |
| } |
| } |
| } |