|  | // Copyright 2017 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 objabi | 
|  |  | 
|  | import "testing" | 
|  |  | 
|  | func TestPathToPrefix(t *testing.T) { | 
|  | tests := []struct { | 
|  | Path     string | 
|  | Expected string | 
|  | }{{"foo/bar/v1", "foo/bar/v1"}, | 
|  | {"foo/bar/v.1", "foo/bar/v%2e1"}, | 
|  | {"f.o.o/b.a.r/v1", "f.o.o/b.a.r/v1"}, | 
|  | {"f.o.o/b.a.r/v.1", "f.o.o/b.a.r/v%2e1"}, | 
|  | {"f.o.o/b.a.r/v..1", "f.o.o/b.a.r/v%2e%2e1"}, | 
|  | {"f.o.o/b.a.r/v..1.", "f.o.o/b.a.r/v%2e%2e1%2e"}, | 
|  | {"f.o.o/b.a.r/v%1", "f.o.o/b.a.r/v%251"}, | 
|  | {"runtime", "runtime"}, | 
|  | {"sync/atomic", "sync/atomic"}, | 
|  | {"golang.org/x/tools/godoc", "golang.org/x/tools/godoc"}, | 
|  | {"foo.bar/baz.quux", "foo.bar/baz%2equux"}, | 
|  | {"", ""}, | 
|  | {"%foo%bar", "%25foo%25bar"}, | 
|  | {"\x01\x00\x7F☺", "%01%00%7f%e2%98%ba"}, | 
|  | } | 
|  | for _, tc := range tests { | 
|  | if got := PathToPrefix(tc.Path); got != tc.Expected { | 
|  | t.Errorf("expected PathToPrefix(%s) = %s, got %s", tc.Path, tc.Expected, got) | 
|  | } | 
|  | } | 
|  | } |