Giant blob of minor changes
[dotfiles/.git] / .config / coc / extensions / coc-go-data / tools / pkg / mod / golang.org / x / tools@v0.0.0-20201028153306-37f0764111ff / internal / lsp / cache / parse_test.go
diff --git a/.config/coc/extensions/coc-go-data/tools/pkg/mod/golang.org/x/tools@v0.0.0-20201028153306-37f0764111ff/internal/lsp/cache/parse_test.go b/.config/coc/extensions/coc-go-data/tools/pkg/mod/golang.org/x/tools@v0.0.0-20201028153306-37f0764111ff/internal/lsp/cache/parse_test.go
new file mode 100644 (file)
index 0000000..ff1b83f
--- /dev/null
@@ -0,0 +1,37 @@
+// Copyright 2019 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 cache
+
+import (
+       "go/ast"
+       "go/parser"
+       "testing"
+)
+
+func TestArrayLength(t *testing.T) {
+       tests := []struct {
+               expr   string
+               length int
+       }{
+               {`[...]int{0,1,2,3,4,5,6,7,8,9}`, 10},
+               {`[...]int{9:0}`, 10},
+               {`[...]int{19-10:0}`, 10},
+               {`[...]int{19-10:0, 17-10:0, 18-10:0}`, 10},
+       }
+
+       for _, tt := range tests {
+               expr, err := parser.ParseExpr(tt.expr)
+               if err != nil {
+                       t.Fatal(err)
+               }
+               l, ok := arrayLength(expr.(*ast.CompositeLit))
+               if !ok {
+                       t.Errorf("arrayLength did not recognize expression %#v", expr)
+               }
+               if l != tt.length {
+                       t.Errorf("arrayLength(%#v) = %v, want %v", expr, l, tt.length)
+               }
+       }
+}