go ast_test 源码

2022-07-15 浏览 (847)

golang ast_test 代码

文件路径:/src/go/ast/ast_test.go

/ 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},
	{"export foo", true},
	{"extern foo", true},
	{"expert foo", false},
}

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)
		}
	}
}

相关信息

go 源码目录

相关文章

go ast 源码

go commentmap 源码

go commentmap_test 源码

go example_test 源码

go filter 源码

go filter_test 源码

go import 源码

go issues_test 源码

go print 源码

go print_test 源码

^