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)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
}
|