// Copyright 2020 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 regtest import ( "testing" "golang.org/x/tools/internal/lsp/protocol" "golang.org/x/tools/internal/lsp/tests" ) // A basic test for fillstruct, now that it uses a command. func TestFillStruct(t *testing.T) { const basic = ` -- go.mod -- module mod.com go 1.14 -- main.go -- package main import "go/types" func Foo() { _ = types.Info{} } ` runner.Run(t, basic, func(t *testing.T, env *Env) { env.OpenFile("main.go") if err := env.Editor.RefactorRewrite(env.Ctx, "main.go", &protocol.Range{ Start: protocol.Position{ Line: 5, Character: 16, }, End: protocol.Position{ Line: 5, Character: 16, }, }); err != nil { t.Fatal(err) } want := `package main import "go/types" func Foo() { _ = types.Info{ Types: map[ast.Expr]types.TypeAndValue{}, Defs: map[*ast.Ident]types.Object{}, Uses: map[*ast.Ident]types.Object{}, Implicits: map[ast.Node]types.Object{}, Selections: map[*ast.SelectorExpr]*types.Selection{}, Scopes: map[ast.Node]*types.Scope{}, InitOrder: []*types.Initializer{}, } } ` if got := env.Editor.BufferText("main.go"); got != want { t.Fatalf("TestFillStruct failed:\n%s", tests.Diff(want, got)) } }) }