Giant blob of minor changes
[dotfiles/.git] / .config / coc / extensions / coc-go-data / tools / pkg / mod / golang.org / x / tools@v0.0.0-20201105173854-bc9fc8d8c4bc / internal / lsp / cache / parse_test.go
1 // Copyright 2019 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
4
5 package cache
6
7 import (
8         "go/ast"
9         "go/parser"
10         "testing"
11 )
12
13 func TestArrayLength(t *testing.T) {
14         tests := []struct {
15                 expr   string
16                 length int
17         }{
18                 {`[...]int{0,1,2,3,4,5,6,7,8,9}`, 10},
19                 {`[...]int{9:0}`, 10},
20                 {`[...]int{19-10:0}`, 10},
21                 {`[...]int{19-10:0, 17-10:0, 18-10:0}`, 10},
22         }
23
24         for _, tt := range tests {
25                 expr, err := parser.ParseExpr(tt.expr)
26                 if err != nil {
27                         t.Fatal(err)
28                 }
29                 l, ok := arrayLength(expr.(*ast.CompositeLit))
30                 if !ok {
31                         t.Errorf("arrayLength did not recognize expression %#v", expr)
32                 }
33                 if l != tt.length {
34                         t.Errorf("arrayLength(%#v) = %v, want %v", expr, l, tt.length)
35                 }
36         }
37 }