|  | // 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 sumweb | 
|  |  | 
|  | import "testing" | 
|  |  | 
|  | var encodeTests = []struct { | 
|  | path string | 
|  | enc  string // empty means same as path | 
|  | }{ | 
|  | {path: "ascii.com/abcdefghijklmnopqrstuvwxyz.-+/~_0123456789"}, | 
|  | {path: "github.com/GoogleCloudPlatform/omega", enc: "github.com/!google!cloud!platform/omega"}, | 
|  | } | 
|  |  | 
|  | func TestEncodePath(t *testing.T) { | 
|  | // Check encodings. | 
|  | for _, tt := range encodeTests { | 
|  | enc, err := encodePath(tt.path) | 
|  | if err != nil { | 
|  | t.Errorf("encodePath(%q): unexpected error: %v", tt.path, err) | 
|  | continue | 
|  | } | 
|  | want := tt.enc | 
|  | if want == "" { | 
|  | want = tt.path | 
|  | } | 
|  | if enc != want { | 
|  | t.Errorf("encodePath(%q) = %q, want %q", tt.path, enc, want) | 
|  | } | 
|  | } | 
|  | } | 
|  |  | 
|  | var badDecode = []string{ | 
|  | "github.com/GoogleCloudPlatform/omega", | 
|  | "github.com/!google!cloud!platform!/omega", | 
|  | "github.com/!0google!cloud!platform/omega", | 
|  | "github.com/!_google!cloud!platform/omega", | 
|  | "github.com/!!google!cloud!platform/omega", | 
|  | } | 
|  |  | 
|  | func TestDecodePath(t *testing.T) { | 
|  | // Check invalid decodings. | 
|  | for _, bad := range badDecode { | 
|  | _, err := decodePath(bad) | 
|  | if err == nil { | 
|  | t.Errorf("DecodePath(%q): succeeded, want error (invalid decoding)", bad) | 
|  | } | 
|  | } | 
|  |  | 
|  | // Check encodings. | 
|  | for _, tt := range encodeTests { | 
|  | enc := tt.enc | 
|  | if enc == "" { | 
|  | enc = tt.path | 
|  | } | 
|  | path, err := decodePath(enc) | 
|  | if err != nil { | 
|  | t.Errorf("decodePath(%q): unexpected error: %v", enc, err) | 
|  | continue | 
|  | } | 
|  | if path != tt.path { | 
|  | t.Errorf("decodePath(%q) = %q, want %q", enc, path, tt.path) | 
|  | } | 
|  | } | 
|  | } |