mirror of
https://gitea.com/Lydanne/buildx.git
synced 2025-05-18 00:47:48 +08:00
50 lines
1.2 KiB
Go
50 lines
1.2 KiB
Go
package hclparser
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/zclconf/go-cty/cty"
|
|
)
|
|
|
|
func TestIndexOf(t *testing.T) {
|
|
type testCase struct {
|
|
input cty.Value
|
|
key cty.Value
|
|
want cty.Value
|
|
wantErr bool
|
|
}
|
|
tests := map[string]testCase{
|
|
"index 0": {
|
|
input: cty.TupleVal([]cty.Value{cty.StringVal("one"), cty.NumberIntVal(2.0), cty.NumberIntVal(3), cty.StringVal("four")}),
|
|
key: cty.StringVal("one"),
|
|
want: cty.NumberIntVal(0),
|
|
},
|
|
"index 3": {
|
|
input: cty.TupleVal([]cty.Value{cty.StringVal("one"), cty.NumberIntVal(2.0), cty.NumberIntVal(3), cty.StringVal("four")}),
|
|
key: cty.StringVal("four"),
|
|
want: cty.NumberIntVal(3),
|
|
},
|
|
"index -1": {
|
|
input: cty.TupleVal([]cty.Value{cty.StringVal("one"), cty.NumberIntVal(2.0), cty.NumberIntVal(3), cty.StringVal("four")}),
|
|
key: cty.StringVal("3"),
|
|
wantErr: true,
|
|
},
|
|
}
|
|
|
|
for name, test := range tests {
|
|
name, test := name, test
|
|
t.Run(name, func(t *testing.T) {
|
|
got, err := indexOfFunc.Call([]cty.Value{test.input, test.key})
|
|
if err != nil {
|
|
if test.wantErr {
|
|
return
|
|
}
|
|
t.Fatalf("unexpected error: %s", err)
|
|
}
|
|
if !got.RawEquals(test.want) {
|
|
t.Errorf("wrong result\ngot: %#v\nwant: %#v", got, test.want)
|
|
}
|
|
})
|
|
}
|
|
}
|