lang/funcs: TransposeFunc Tests
This commit adds test cases to TestTranspose to document how this function handles marks. The short version is that any marks anywhere will be applied to the return value, be they marks on the input map or marks on elements (either the entire list of strings, or individual elemnets of those lists).
This commit is contained in:
parent
389415ab18
commit
b34588ffca
|
@ -1541,6 +1541,99 @@ func TestTranspose(t *testing.T) {
|
||||||
cty.NilVal,
|
cty.NilVal,
|
||||||
true,
|
true,
|
||||||
},
|
},
|
||||||
|
{ // marks (deep or shallow) on any elements will propegate to the entire return value
|
||||||
|
cty.MapVal(map[string]cty.Value{
|
||||||
|
"key1": cty.ListVal([]cty.Value{
|
||||||
|
cty.StringVal("a").Mark("beep"), // mark on the inner list element
|
||||||
|
cty.StringVal("b"),
|
||||||
|
}),
|
||||||
|
"key2": cty.ListVal([]cty.Value{
|
||||||
|
cty.StringVal("a"),
|
||||||
|
cty.StringVal("b"),
|
||||||
|
cty.StringVal("c"),
|
||||||
|
}).Mark("boop"), // mark on the map element
|
||||||
|
"key3": cty.ListVal([]cty.Value{
|
||||||
|
cty.StringVal("c"),
|
||||||
|
}),
|
||||||
|
"key4": cty.ListValEmpty(cty.String),
|
||||||
|
}),
|
||||||
|
cty.MapVal(map[string]cty.Value{
|
||||||
|
"a": cty.ListVal([]cty.Value{
|
||||||
|
cty.StringVal("key1"),
|
||||||
|
cty.StringVal("key2"),
|
||||||
|
}),
|
||||||
|
"b": cty.ListVal([]cty.Value{
|
||||||
|
cty.StringVal("key1"),
|
||||||
|
cty.StringVal("key2"),
|
||||||
|
}),
|
||||||
|
"c": cty.ListVal([]cty.Value{
|
||||||
|
cty.StringVal("key2"),
|
||||||
|
cty.StringVal("key3")}),
|
||||||
|
}).WithMarks(cty.NewValueMarks("beep", "boop")),
|
||||||
|
false,
|
||||||
|
},
|
||||||
|
{ // Marks on the input value will be applied to the return value
|
||||||
|
cty.MapVal(map[string]cty.Value{
|
||||||
|
"key1": cty.ListVal([]cty.Value{
|
||||||
|
cty.StringVal("a"),
|
||||||
|
cty.StringVal("b"),
|
||||||
|
}),
|
||||||
|
"key2": cty.ListVal([]cty.Value{
|
||||||
|
cty.StringVal("a"),
|
||||||
|
cty.StringVal("b"),
|
||||||
|
cty.StringVal("c"),
|
||||||
|
}),
|
||||||
|
"key3": cty.ListVal([]cty.Value{
|
||||||
|
cty.StringVal("c"),
|
||||||
|
}),
|
||||||
|
}).Mark("beep"), // mark on the entire input value
|
||||||
|
cty.MapVal(map[string]cty.Value{
|
||||||
|
"a": cty.ListVal([]cty.Value{
|
||||||
|
cty.StringVal("key1"),
|
||||||
|
cty.StringVal("key2"),
|
||||||
|
}),
|
||||||
|
"b": cty.ListVal([]cty.Value{
|
||||||
|
cty.StringVal("key1"),
|
||||||
|
cty.StringVal("key2"),
|
||||||
|
}),
|
||||||
|
"c": cty.ListVal([]cty.Value{
|
||||||
|
cty.StringVal("key2"),
|
||||||
|
cty.StringVal("key3"),
|
||||||
|
}),
|
||||||
|
}).Mark("beep"),
|
||||||
|
false,
|
||||||
|
},
|
||||||
|
{ // Marks on the entire input value AND inner elements (deep or shallow) ALL apply to the return
|
||||||
|
cty.MapVal(map[string]cty.Value{
|
||||||
|
"key1": cty.ListVal([]cty.Value{
|
||||||
|
cty.StringVal("a"),
|
||||||
|
cty.StringVal("b"),
|
||||||
|
}).Mark("beep"), // mark on the map element
|
||||||
|
"key2": cty.ListVal([]cty.Value{
|
||||||
|
cty.StringVal("a"),
|
||||||
|
cty.StringVal("b"),
|
||||||
|
cty.StringVal("c"),
|
||||||
|
}),
|
||||||
|
"key3": cty.ListVal([]cty.Value{
|
||||||
|
cty.StringVal("c").Mark("boop"), // mark on the inner list element
|
||||||
|
}),
|
||||||
|
}).Mark("bloop"), // mark on the entire input value
|
||||||
|
cty.MapVal(map[string]cty.Value{
|
||||||
|
"a": cty.ListVal([]cty.Value{
|
||||||
|
cty.StringVal("key1"),
|
||||||
|
cty.StringVal("key2"),
|
||||||
|
}),
|
||||||
|
"b": cty.ListVal([]cty.Value{
|
||||||
|
cty.StringVal("key1"),
|
||||||
|
cty.StringVal("key2"),
|
||||||
|
}),
|
||||||
|
"c": cty.ListVal([]cty.Value{
|
||||||
|
cty.StringVal("key2"),
|
||||||
|
cty.StringVal("key3"),
|
||||||
|
}),
|
||||||
|
}).WithMarks(cty.NewValueMarks("beep", "boop", "bloop")),
|
||||||
|
false,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, test := range tests {
|
for _, test := range tests {
|
||||||
|
|
Loading…
Reference in New Issue