blob: e15c297f005b0026d3fadbec5a138731f5813272 [file] [log] [blame]
// Copyright 2021 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 typeparams_test
import (
"go/ast"
"testing"
"golang.org/x/tools/internal/typeparams"
)
func TestGetIndexExprData(t *testing.T) {
x := &ast.Ident{}
i := &ast.Ident{}
tests := map[ast.Node]bool{
&ast.IndexExpr{X: x, Lbrack: 1, Index: i, Rbrack: 2}: true,
&ast.Ident{}: false,
}
want := &typeparams.IndexExprData{X: x, Lbrack: 1, Indices: []ast.Expr{i}, Rbrack: 2}
for n, isIndexExpr := range tests {
ix := typeparams.GetIndexExprData(n)
if got := ix != nil; got != isIndexExpr {
t.Errorf("GetIndexExprData(%+v) = %+v, want nil: %t", n, ix, !isIndexExpr)
}
if ix == nil {
continue
}
if ix.X != x || ix.Lbrack != 1 || ix.Indices[0] != i || ix.Rbrack != 2 {
t.Errorf("GetIndexExprData(%+v) = %+v, want %+v", n, ix, want)
}
}
}