]> Cypherpunks repositories - gostls13.git/commitdiff
go/ast: add test for Filter
authorHeisenberg <lziqiang1@gmail.com>
Fri, 4 Sep 2020 08:56:54 +0000 (16:56 +0800)
committerRobert Griesemer <gri@golang.org>
Tue, 3 Nov 2020 04:11:02 +0000 (04:11 +0000)
Change-Id: Ia14659a9c44f9e1504eb88b5693932b9dd4bb286
Reviewed-on: https://go-review.googlesource.com/c/go/+/252939
Run-TryBot: Dmitri Shuralyov <dmitshur@golang.org>
TryBot-Result: Go Bot <gobot@golang.org>
Trust: Dmitri Shuralyov <dmitshur@golang.org>
Trust: Robert Griesemer <gri@golang.org>
Reviewed-by: Robert Griesemer <gri@golang.org>
src/go/ast/commentmap_test.go

index e372eab745b42c853eb5647c0a059eaf3fba5aa2..38c62b01ab92d3e6b845f433257d2ab6807126ba 100644 (file)
@@ -140,4 +140,31 @@ func TestCommentMap(t *testing.T) {
        }
 }
 
-// TODO(gri): add tests for Filter.
+func TestFilter(t *testing.T) {
+       fset := token.NewFileSet()
+       f, err := parser.ParseFile(fset, "", src, parser.ParseComments)
+       if err != nil {
+               t.Fatal(err)
+       }
+       cmap := NewCommentMap(fset, f, f.Comments)
+
+       // delete variable declaration
+       for i, decl := range f.Decls {
+               if gen, ok := decl.(*GenDecl); ok && gen.Tok == token.VAR {
+                       copy(f.Decls[i:], f.Decls[i+1:])
+                       f.Decls = f.Decls[:len(f.Decls)-1]
+                       break
+               }
+       }
+
+       // check if comments are filtered correctly
+       cc := cmap.Filter(f)
+       for n, list := range cc {
+               key := fmt.Sprintf("%2d: %T", fset.Position(n.Pos()).Line, n)
+               got := ctext(list)
+               want := res[key]
+               if key == "25: *ast.GenDecl" || got != want {
+                       t.Errorf("%s: got %q; want %q", key, got, want)
+               }
+       }
+}