github.com/graybobo/golang.org-package-offline-cache@v0.0.0-20200626051047-6608995c132f/x/tools/godoc/godoc_test.go (about) 1 // Copyright 2013 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package godoc 6 7 import ( 8 "testing" 9 ) 10 11 func TestPkgLinkFunc(t *testing.T) { 12 for _, tc := range []struct { 13 path string 14 want string 15 }{ 16 {"/src/fmt", "pkg/fmt"}, 17 {"src/fmt", "pkg/fmt"}, 18 {"/fmt", "pkg/fmt"}, 19 {"fmt", "pkg/fmt"}, 20 } { 21 if got := pkgLinkFunc(tc.path); got != tc.want { 22 t.Errorf("pkgLinkFunc(%v) = %v; want %v", tc.path, got, tc.want) 23 } 24 } 25 } 26 27 func TestSrcPosLinkFunc(t *testing.T) { 28 for _, tc := range []struct { 29 src string 30 line int 31 low int 32 high int 33 want string 34 }{ 35 {"/src/fmt/print.go", 42, 30, 50, "/src/fmt/print.go?s=30:50#L32"}, 36 {"/src/fmt/print.go", 2, 1, 5, "/src/fmt/print.go?s=1:5#L1"}, 37 {"/src/fmt/print.go", 2, 0, 0, "/src/fmt/print.go#L2"}, 38 {"/src/fmt/print.go", 0, 0, 0, "/src/fmt/print.go"}, 39 {"/src/fmt/print.go", 0, 1, 5, "/src/fmt/print.go?s=1:5#L1"}, 40 {"fmt/print.go", 0, 0, 0, "/src/fmt/print.go"}, 41 {"fmt/print.go", 0, 1, 5, "/src/fmt/print.go?s=1:5#L1"}, 42 } { 43 if got := srcPosLinkFunc(tc.src, tc.line, tc.low, tc.high); got != tc.want { 44 t.Errorf("srcLinkFunc(%v, %v, %v, %v) = %v; want %v", tc.src, tc.line, tc.low, tc.high, got, tc.want) 45 } 46 } 47 } 48 49 func TestSrcLinkFunc(t *testing.T) { 50 for _, tc := range []struct { 51 src string 52 want string 53 }{ 54 {"/src/fmt/print.go", "/src/fmt/print.go"}, 55 {"src/fmt/print.go", "/src/fmt/print.go"}, 56 {"/fmt/print.go", "/src/fmt/print.go"}, 57 {"fmt/print.go", "/src/fmt/print.go"}, 58 } { 59 if got := srcLinkFunc(tc.src); got != tc.want { 60 t.Errorf("srcLinkFunc(%v) = %v; want %v", tc.src, got, tc.want) 61 } 62 } 63 } 64 65 func TestQueryLinkFunc(t *testing.T) { 66 for _, tc := range []struct { 67 src string 68 query string 69 line int 70 want string 71 }{ 72 {"/src/fmt/print.go", "Sprintf", 33, "/src/fmt/print.go?h=Sprintf#L33"}, 73 {"/src/fmt/print.go", "Sprintf", 0, "/src/fmt/print.go?h=Sprintf"}, 74 {"src/fmt/print.go", "EOF", 33, "/src/fmt/print.go?h=EOF#L33"}, 75 {"src/fmt/print.go", "a%3f+%26b", 1, "/src/fmt/print.go?h=a%3f+%26b#L1"}, 76 } { 77 if got := queryLinkFunc(tc.src, tc.query, tc.line); got != tc.want { 78 t.Errorf("queryLinkFunc(%v, %v, %v) = %v; want %v", tc.src, tc.query, tc.line, got, tc.want) 79 } 80 } 81 } 82 83 func TestDocLinkFunc(t *testing.T) { 84 for _, tc := range []struct { 85 src string 86 ident string 87 want string 88 }{ 89 {"fmt", "Sprintf", "/pkg/fmt/#Sprintf"}, 90 {"fmt", "EOF", "/pkg/fmt/#EOF"}, 91 } { 92 if got := docLinkFunc(tc.src, tc.ident); got != tc.want { 93 t.Errorf("docLinkFunc(%v, %v) = %v; want %v", tc.src, tc.ident, got, tc.want) 94 } 95 } 96 } 97 98 func TestSanitizeFunc(t *testing.T) { 99 for _, tc := range []struct { 100 src string 101 want string 102 }{ 103 {}, 104 {"foo", "foo"}, 105 {"func f()", "func f()"}, 106 {"func f(a int,)", "func f(a int)"}, 107 {"func f(a int,\n)", "func f(a int)"}, 108 {"func f(\n\ta int,\n\tb int,\n\tc int,\n)", "func f(a int, b int, c int)"}, 109 {" ( a, b, c ) ", "(a, b, c)"}, 110 {"( a, b, c int, foo bar , )", "(a, b, c int, foo bar)"}, 111 {"{ a, b}", "{a, b}"}, 112 {"[ a, b]", "[a, b]"}, 113 } { 114 if got := sanitizeFunc(tc.src); got != tc.want { 115 t.Errorf("sanitizeFunc(%v) = %v; want %v", tc.src, got, tc.want) 116 } 117 } 118 }