130 lines
1.8 KiB
Go
130 lines
1.8 KiB
Go
package cty
|
|
|
|
import (
|
|
"math/big"
|
|
"testing"
|
|
)
|
|
|
|
func TestSetHashBytes(t *testing.T) {
|
|
tests := []struct {
|
|
value Value
|
|
want string
|
|
}{
|
|
{
|
|
UnknownVal(Number),
|
|
"?",
|
|
},
|
|
{
|
|
UnknownVal(String),
|
|
"?",
|
|
},
|
|
{
|
|
NullVal(Number),
|
|
"~",
|
|
},
|
|
{
|
|
NullVal(String),
|
|
"~",
|
|
},
|
|
{
|
|
DynamicVal,
|
|
"?",
|
|
},
|
|
{
|
|
NumberVal(big.NewFloat(12)),
|
|
"12",
|
|
},
|
|
{
|
|
StringVal(""),
|
|
`""`,
|
|
},
|
|
{
|
|
StringVal("pizza"),
|
|
`"pizza"`,
|
|
},
|
|
{
|
|
True,
|
|
"T",
|
|
},
|
|
{
|
|
False,
|
|
"F",
|
|
},
|
|
{
|
|
ListValEmpty(Bool),
|
|
"[]",
|
|
},
|
|
{
|
|
ListValEmpty(DynamicPseudoType),
|
|
"[]",
|
|
},
|
|
{
|
|
ListVal([]Value{True, False}),
|
|
"[T;F;]",
|
|
},
|
|
{
|
|
ListVal([]Value{UnknownVal(Bool)}),
|
|
"[?;]",
|
|
},
|
|
{
|
|
ListVal([]Value{ListValEmpty(Bool)}),
|
|
"[[];]",
|
|
},
|
|
{
|
|
MapValEmpty(Bool),
|
|
"{}",
|
|
},
|
|
{
|
|
MapVal(map[string]Value{"true": True, "false": False}),
|
|
`{"false":F;"true":T;}`,
|
|
},
|
|
{
|
|
MapVal(map[string]Value{"true": True, "unknown": UnknownVal(Bool), "dynamic": DynamicVal}),
|
|
`{"dynamic":?;"true":T;"unknown":?;}`,
|
|
},
|
|
{
|
|
SetValEmpty(Bool),
|
|
"[]",
|
|
},
|
|
{
|
|
SetVal([]Value{True, True, False}),
|
|
"[F;T;]",
|
|
},
|
|
{
|
|
SetVal([]Value{UnknownVal(Bool), UnknownVal(Bool)}),
|
|
"[?;?;]", // unknowns are never equal, so we can have multiple of them
|
|
},
|
|
{
|
|
EmptyObjectVal,
|
|
"<>",
|
|
},
|
|
{
|
|
ObjectVal(map[string]Value{
|
|
"name": StringVal("ermintrude"),
|
|
"age": NumberVal(big.NewFloat(54)),
|
|
}),
|
|
`<54;"ermintrude";>`,
|
|
},
|
|
{
|
|
EmptyTupleVal,
|
|
"<>",
|
|
},
|
|
{
|
|
TupleVal([]Value{
|
|
StringVal("ermintrude"),
|
|
NumberVal(big.NewFloat(54)),
|
|
}),
|
|
`<"ermintrude";54;>`,
|
|
},
|
|
}
|
|
|
|
for _, test := range tests {
|
|
t.Run(test.value.GoString(), func(t *testing.T) {
|
|
got := string(makeSetHashBytes(test.value))
|
|
if got != test.want {
|
|
t.Errorf("wrong result\ngot: %s\nwant: %s", got, test.want)
|
|
}
|
|
})
|
|
}
|
|
}
|