119 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			119 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Go
		
	
	
	
| // Copyright 2013 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 godoc
 | |
| 
 | |
| import (
 | |
| 	"testing"
 | |
| )
 | |
| 
 | |
| func TestPkgLinkFunc(t *testing.T) {
 | |
| 	for _, tc := range []struct {
 | |
| 		path string
 | |
| 		want string
 | |
| 	}{
 | |
| 		{"/src/fmt", "pkg/fmt"},
 | |
| 		{"src/fmt", "pkg/fmt"},
 | |
| 		{"/fmt", "pkg/fmt"},
 | |
| 		{"fmt", "pkg/fmt"},
 | |
| 	} {
 | |
| 		if got := pkgLinkFunc(tc.path); got != tc.want {
 | |
| 			t.Errorf("pkgLinkFunc(%v) = %v; want %v", tc.path, got, tc.want)
 | |
| 		}
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func TestSrcPosLinkFunc(t *testing.T) {
 | |
| 	for _, tc := range []struct {
 | |
| 		src  string
 | |
| 		line int
 | |
| 		low  int
 | |
| 		high int
 | |
| 		want string
 | |
| 	}{
 | |
| 		{"/src/fmt/print.go", 42, 30, 50, "/src/fmt/print.go?s=30:50#L32"},
 | |
| 		{"/src/fmt/print.go", 2, 1, 5, "/src/fmt/print.go?s=1:5#L1"},
 | |
| 		{"/src/fmt/print.go", 2, 0, 0, "/src/fmt/print.go#L2"},
 | |
| 		{"/src/fmt/print.go", 0, 0, 0, "/src/fmt/print.go"},
 | |
| 		{"/src/fmt/print.go", 0, 1, 5, "/src/fmt/print.go?s=1:5#L1"},
 | |
| 		{"fmt/print.go", 0, 0, 0, "/src/fmt/print.go"},
 | |
| 		{"fmt/print.go", 0, 1, 5, "/src/fmt/print.go?s=1:5#L1"},
 | |
| 	} {
 | |
| 		if got := srcPosLinkFunc(tc.src, tc.line, tc.low, tc.high); got != tc.want {
 | |
| 			t.Errorf("srcLinkFunc(%v, %v, %v, %v) = %v; want %v", tc.src, tc.line, tc.low, tc.high, got, tc.want)
 | |
| 		}
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func TestSrcLinkFunc(t *testing.T) {
 | |
| 	for _, tc := range []struct {
 | |
| 		src  string
 | |
| 		want string
 | |
| 	}{
 | |
| 		{"/src/fmt/print.go", "/src/fmt/print.go"},
 | |
| 		{"src/fmt/print.go", "/src/fmt/print.go"},
 | |
| 		{"/fmt/print.go", "/src/fmt/print.go"},
 | |
| 		{"fmt/print.go", "/src/fmt/print.go"},
 | |
| 	} {
 | |
| 		if got := srcLinkFunc(tc.src); got != tc.want {
 | |
| 			t.Errorf("srcLinkFunc(%v) = %v; want %v", tc.src, got, tc.want)
 | |
| 		}
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func TestQueryLinkFunc(t *testing.T) {
 | |
| 	for _, tc := range []struct {
 | |
| 		src   string
 | |
| 		query string
 | |
| 		line  int
 | |
| 		want  string
 | |
| 	}{
 | |
| 		{"/src/fmt/print.go", "Sprintf", 33, "/src/fmt/print.go?h=Sprintf#L33"},
 | |
| 		{"/src/fmt/print.go", "Sprintf", 0, "/src/fmt/print.go?h=Sprintf"},
 | |
| 		{"src/fmt/print.go", "EOF", 33, "/src/fmt/print.go?h=EOF#L33"},
 | |
| 		{"src/fmt/print.go", "a%3f+%26b", 1, "/src/fmt/print.go?h=a%3f+%26b#L1"},
 | |
| 	} {
 | |
| 		if got := queryLinkFunc(tc.src, tc.query, tc.line); got != tc.want {
 | |
| 			t.Errorf("queryLinkFunc(%v, %v, %v) = %v; want %v", tc.src, tc.query, tc.line, got, tc.want)
 | |
| 		}
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func TestDocLinkFunc(t *testing.T) {
 | |
| 	for _, tc := range []struct {
 | |
| 		src   string
 | |
| 		ident string
 | |
| 		want  string
 | |
| 	}{
 | |
| 		{"fmt", "Sprintf", "/pkg/fmt/#Sprintf"},
 | |
| 		{"fmt", "EOF", "/pkg/fmt/#EOF"},
 | |
| 	} {
 | |
| 		if got := docLinkFunc(tc.src, tc.ident); got != tc.want {
 | |
| 			t.Errorf("docLinkFunc(%v, %v) = %v; want %v", tc.src, tc.ident, got, tc.want)
 | |
| 		}
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func TestSanitizeFunc(t *testing.T) {
 | |
| 	for _, tc := range []struct {
 | |
| 		src  string
 | |
| 		want string
 | |
| 	}{
 | |
| 		{},
 | |
| 		{"foo", "foo"},
 | |
| 		{"func   f()", "func f()"},
 | |
| 		{"func f(a int,)", "func f(a int)"},
 | |
| 		{"func f(a int,\n)", "func f(a int)"},
 | |
| 		{"func f(\n\ta int,\n\tb int,\n\tc int,\n)", "func f(a int, b int, c int)"},
 | |
| 		{"  (   a,   b,  c  )  ", "(a, b, c)"},
 | |
| 		{"(  a,  b, c    int, foo   bar  ,  )", "(a, b, c int, foo bar)"},
 | |
| 		{"{   a,   b}", "{a, b}"},
 | |
| 		{"[   a,   b]", "[a, b]"},
 | |
| 	} {
 | |
| 		if got := sanitizeFunc(tc.src); got != tc.want {
 | |
| 			t.Errorf("sanitizeFunc(%v) = %v; want %v", tc.src, got, tc.want)
 | |
| 		}
 | |
| 	}
 | |
| }
 |