| // 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) |
| } |
| } |
| } |