+++ /dev/null
-// Copyright 2018 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 span_test
-
-import (
- "fmt"
- "go/token"
- "path"
- "testing"
-
- "golang.org/x/tools/internal/span"
-)
-
-var testdata = []struct {
- uri string
- content []byte
-}{
- {"/a.go", []byte(`
-// file a.go
-package test
-`)},
- {"/b.go", []byte(`
-//
-//
-// file b.go
-package test`)},
- {"/c.go", []byte(`
-// file c.go
-package test`)},
-}
-
-var tokenTests = []span.Span{
- span.New(span.URIFromPath("/a.go"), span.NewPoint(1, 1, 0), span.Point{}),
- span.New(span.URIFromPath("/a.go"), span.NewPoint(3, 7, 20), span.NewPoint(3, 7, 20)),
- span.New(span.URIFromPath("/b.go"), span.NewPoint(4, 9, 15), span.NewPoint(4, 13, 19)),
- span.New(span.URIFromPath("/c.go"), span.NewPoint(4, 1, 26), span.Point{}),
-}
-
-func TestToken(t *testing.T) {
- fset := token.NewFileSet()
- files := map[span.URI]*token.File{}
- for _, f := range testdata {
- file := fset.AddFile(f.uri, -1, len(f.content))
- file.SetLinesForContent(f.content)
- files[span.URIFromPath(f.uri)] = file
- }
- for _, test := range tokenTests {
- f := files[test.URI()]
- c := span.NewTokenConverter(fset, f)
- t.Run(path.Base(f.Name()), func(t *testing.T) {
- checkToken(t, c, span.New(
- test.URI(),
- span.NewPoint(test.Start().Line(), test.Start().Column(), 0),
- span.NewPoint(test.End().Line(), test.End().Column(), 0),
- ), test)
- checkToken(t, c, span.New(
- test.URI(),
- span.NewPoint(0, 0, test.Start().Offset()),
- span.NewPoint(0, 0, test.End().Offset()),
- ), test)
- })
- }
-}
-
-func checkToken(t *testing.T, c *span.TokenConverter, in, expect span.Span) {
- rng, err := in.Range(c)
- if err != nil {
- t.Error(err)
- }
- gotLoc, err := rng.Span()
- if err != nil {
- t.Error(err)
- }
- expected := fmt.Sprintf("%+v", expect)
- got := fmt.Sprintf("%+v", gotLoc)
- if expected != got {
- t.Errorf("For %v expected %q got %q", in, expected, got)
- }
-}