mirror of https://github.com/golang/go.git
38 lines
792 B
Go
38 lines
792 B
Go
// 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)
|
|
}
|
|
}
|
|
}
|