mirror of
https://github.com/opentofu/opentofu.git
synced 2024-12-24 16:10:46 -06:00
cb2e9119aa
Signed-off-by: namgyalangmo <75657887+namgyalangmo@users.noreply.github.com>
81 lines
1.5 KiB
Go
81 lines
1.5 KiB
Go
// Copyright (c) The OpenTofu Authors
|
|
// SPDX-License-Identifier: MPL-2.0
|
|
// Copyright (c) 2023 HashiCorp, Inc.
|
|
// SPDX-License-Identifier: MPL-2.0
|
|
|
|
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)
|
|
}
|
|
})
|
|
}
|
|
}
|