mirror of
https://github.com/opentofu/opentofu.git
synced 2025-02-25 18:45:20 -06:00
76 lines
1.3 KiB
Go
76 lines
1.3 KiB
Go
|
package addrs
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"testing"
|
||
|
)
|
||
|
|
||
|
func TestInstanceKeyString(t *testing.T) {
|
||
|
tests := []struct {
|
||
|
Key InstanceKey
|
||
|
Want string
|
||
|
}{
|
||
|
{
|
||
|
IntKey(0),
|
||
|
`[0]`,
|
||
|
},
|
||
|
{
|
||
|
IntKey(5),
|
||
|
`[5]`,
|
||
|
},
|
||
|
{
|
||
|
StringKey(""),
|
||
|
`[""]`,
|
||
|
},
|
||
|
{
|
||
|
StringKey("hi"),
|
||
|
`["hi"]`,
|
||
|
},
|
||
|
{
|
||
|
StringKey("0"),
|
||
|
`["0"]`, // intentionally distinct from IntKey(0)
|
||
|
},
|
||
|
{
|
||
|
// Quotes must be escaped
|
||
|
StringKey(`"`),
|
||
|
`["\""]`,
|
||
|
},
|
||
|
{
|
||
|
// Escape sequences must themselves be escaped
|
||
|
StringKey(`\r\n`),
|
||
|
`["\\r\\n"]`,
|
||
|
},
|
||
|
{
|
||
|
// Template interpolation sequences "${" must be escaped.
|
||
|
StringKey(`${hello}`),
|
||
|
`["$${hello}"]`,
|
||
|
},
|
||
|
{
|
||
|
// Template control sequences "%{" must be escaped.
|
||
|
StringKey(`%{ for something in something }%{ endfor }`),
|
||
|
`["%%{ for something in something }%%{ endfor }"]`,
|
||
|
},
|
||
|
{
|
||
|
// Dollar signs that aren't followed by { are not interpolation sequences
|
||
|
StringKey(`$hello`),
|
||
|
`["$hello"]`,
|
||
|
},
|
||
|
{
|
||
|
// Percent signs that aren't followed by { are not control sequences
|
||
|
StringKey(`%hello`),
|
||
|
`["%hello"]`,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, test := range tests {
|
||
|
testName := fmt.Sprintf("%#v", test.Key)
|
||
|
t.Run(testName, func(t *testing.T) {
|
||
|
got := test.Key.String()
|
||
|
want := test.Want
|
||
|
if got != want {
|
||
|
t.Errorf("wrong result\nreciever: %s\ngot: %s\nwant: %s", testName, got, want)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
}
|