summaryrefslogtreecommitdiffstats
path: root/src/go/ast/ast_test.go
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/go/ast/ast_test.go79
1 files changed, 79 insertions, 0 deletions
diff --git a/src/go/ast/ast_test.go b/src/go/ast/ast_test.go
new file mode 100644
index 0000000..71b2d6c
--- /dev/null
+++ b/src/go/ast/ast_test.go
@@ -0,0 +1,79 @@
+// Copyright 2012 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 ast
+
+import (
+ "testing"
+)
+
+var comments = []struct {
+ list []string
+ text string
+}{
+ {[]string{"//"}, ""},
+ {[]string{"// "}, ""},
+ {[]string{"//", "//", "// "}, ""},
+ {[]string{"// foo "}, "foo\n"},
+ {[]string{"//", "//", "// foo"}, "foo\n"},
+ {[]string{"// foo bar "}, "foo bar\n"},
+ {[]string{"// foo", "// bar"}, "foo\nbar\n"},
+ {[]string{"// foo", "//", "//", "//", "// bar"}, "foo\n\nbar\n"},
+ {[]string{"// foo", "/* bar */"}, "foo\n bar\n"},
+ {[]string{"//", "//", "//", "// foo", "//", "//", "//"}, "foo\n"},
+
+ {[]string{"/**/"}, ""},
+ {[]string{"/* */"}, ""},
+ {[]string{"/**/", "/**/", "/* */"}, ""},
+ {[]string{"/* Foo */"}, " Foo\n"},
+ {[]string{"/* Foo Bar */"}, " Foo Bar\n"},
+ {[]string{"/* Foo*/", "/* Bar*/"}, " Foo\n Bar\n"},
+ {[]string{"/* Foo*/", "/**/", "/**/", "/**/", "// Bar"}, " Foo\n\nBar\n"},
+ {[]string{"/* Foo*/", "/*\n*/", "//", "/*\n*/", "// Bar"}, " Foo\n\nBar\n"},
+ {[]string{"/* Foo*/", "// Bar"}, " Foo\nBar\n"},
+ {[]string{"/* Foo\n Bar*/"}, " Foo\n Bar\n"},
+
+ {[]string{"// foo", "//go:noinline", "// bar", "//:baz"}, "foo\nbar\n:baz\n"},
+ {[]string{"// foo", "//lint123:ignore", "// bar"}, "foo\nbar\n"},
+}
+
+func TestCommentText(t *testing.T) {
+ for i, c := range comments {
+ list := make([]*Comment, len(c.list))
+ for i, s := range c.list {
+ list[i] = &Comment{Text: s}
+ }
+
+ text := (&CommentGroup{list}).Text()
+ if text != c.text {
+ t.Errorf("case %d: got %q; expected %q", i, text, c.text)
+ }
+ }
+}
+
+var isDirectiveTests = []struct {
+ in string
+ ok bool
+}{
+ {"abc", false},
+ {"go:inline", true},
+ {"Go:inline", false},
+ {"go:Inline", false},
+ {":inline", false},
+ {"lint:ignore", true},
+ {"lint:1234", true},
+ {"1234:lint", true},
+ {"go: inline", false},
+ {"go:", false},
+ {"go:*", false},
+ {"go:x*", true},
+}
+
+func TestIsDirective(t *testing.T) {
+ for _, tt := range isDirectiveTests {
+ if ok := isDirective(tt.in); ok != tt.ok {
+ t.Errorf("isDirective(%q) = %v, want %v", tt.in, ok, tt.ok)
+ }
+ }
+}