// 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 (
	"context"
	"encoding/json"
	"testing"

	"golang.org/x/tools/internal/lsp/protocol"
)

const simpleProgram = `
-- go.mod --
module mod

go 1.12
-- main.go --
package main

import "fmt"

func main() {
	fmt.Println("Hello World.")
}`

func TestHoverSerialization(t *testing.T) {
	runner.Run(t, exampleProgram, func(ctx context.Context, t *testing.T, env *Env) {
		// Hover on an empty line.
		params := protocol.HoverParams{}
		params.TextDocument.URI = env.W.URI("main.go")
		params.Position.Line = 3
		params.Position.Character = 0
		var resp json.RawMessage
		if err := env.Conn.Call(ctx, "textDocument/hover", &params, &resp); err != nil {
			t.Fatal(err)
		}
		if len(string(resp)) > 0 {
			t.Errorf("got non-empty response for empty hover: %v", string(resp))
		}
	})
}
