| // Copyright 2011 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. |
| |
| // These tests are carried forward from the old go/doc implementation. |
| |
| package comment |
| |
| import "testing" |
| |
| var oldHeadingTests = []struct { |
| line string |
| ok bool |
| }{ |
| {"Section", true}, |
| {"A typical usage", true}, |
| {"ΔΛΞ is Greek", true}, |
| {"Foo 42", true}, |
| {"", false}, |
| {"section", false}, |
| {"A typical usage:", false}, |
| {"This code:", false}, |
| {"δ is Greek", false}, |
| {"Foo §", false}, |
| {"Fermat's Last Sentence", true}, |
| {"Fermat's", true}, |
| {"'sX", false}, |
| {"Ted 'Too' Bar", false}, |
| {"Use n+m", false}, |
| {"Scanning:", false}, |
| {"N:M", false}, |
| } |
| |
| func TestIsOldHeading(t *testing.T) { |
| for _, tt := range oldHeadingTests { |
| if isOldHeading(tt.line, []string{"Text.", "", tt.line, "", "Text."}, 2) != tt.ok { |
| t.Errorf("isOldHeading(%q) = %v, want %v", tt.line, !tt.ok, tt.ok) |
| } |
| } |
| } |
| |
| var autoURLTests = []struct { |
| in, out string |
| }{ |
| {"", ""}, |
| {"http://[::1]:8080/foo.txt", "http://[::1]:8080/foo.txt"}, |
| {"https://www.google.com) after", "https://www.google.com"}, |
| {"https://www.google.com:30/x/y/z:b::c. After", "https://www.google.com:30/x/y/z:b::c"}, |
| {"http://www.google.com/path/:;!-/?query=%34b#093124", "http://www.google.com/path/:;!-/?query=%34b#093124"}, |
| {"http://www.google.com/path/:;!-/?query=%34bar#093124", "http://www.google.com/path/:;!-/?query=%34bar#093124"}, |
| {"http://www.google.com/index.html! After", "http://www.google.com/index.html"}, |
| {"http://www.google.com/", "http://www.google.com/"}, |
| {"https://www.google.com/", "https://www.google.com/"}, |
| {"http://www.google.com/path.", "http://www.google.com/path"}, |
| {"http://en.wikipedia.org/wiki/Camellia_(cipher)", "http://en.wikipedia.org/wiki/Camellia_(cipher)"}, |
| {"http://www.google.com/)", "http://www.google.com/"}, |
| {"http://gmail.com)", "http://gmail.com"}, |
| {"http://gmail.com))", "http://gmail.com"}, |
| {"http://gmail.com ((http://gmail.com)) ()", "http://gmail.com"}, |
| {"http://example.com/ quux!", "http://example.com/"}, |
| {"http://example.com/%2f/ /world.", "http://example.com/%2f/"}, |
| {"http: ipsum //host/path", ""}, |
| {"javascript://is/not/linked", ""}, |
| {"http://foo", "http://foo"}, |
| {"https://www.example.com/person/][Person Name]]", "https://www.example.com/person/"}, |
| {"http://golang.org/)", "http://golang.org/"}, |
| {"http://golang.org/hello())", "http://golang.org/hello()"}, |
| {"http://git.qemu.org/?p=qemu.git;a=blob;f=qapi-schema.json;hb=HEAD", "http://git.qemu.org/?p=qemu.git;a=blob;f=qapi-schema.json;hb=HEAD"}, |
| {"https://foo.bar/bal/x(])", "https://foo.bar/bal/x"}, // inner ] causes (]) to be cut off from URL |
| {"http://bar(])", "http://bar"}, // same |
| } |
| |
| func TestAutoURL(t *testing.T) { |
| for _, tt := range autoURLTests { |
| url, ok := autoURL(tt.in) |
| if url != tt.out || ok != (tt.out != "") { |
| t.Errorf("autoURL(%q) = %q, %v, want %q, %v", tt.in, url, ok, tt.out, tt.out != "") |
| } |
| } |
| } |