// Copyright IBM Corp. 2014, 2026 // SPDX-License-Identifier: BUSL-1.1 package convert import ( "testing" "github.com/hashicorp/terraform/internal/configs/configschema" "github.com/hashicorp/terraform/internal/providers" "github.com/zclconf/go-cty/cty" "github.com/google/go-cmp/cmp" "github.com/zclconf/go-cty-debug/ctydebug" ) func TestFunctionDeclsToFromProto(t *testing.T) { fns := map[string]providers.FunctionDecl{ "basic": providers.FunctionDecl{ Parameters: []providers.FunctionParam{ providers.FunctionParam{ Name: "string", Type: cty.String, AllowNullValue: true, AllowUnknownValues: true, Description: "must be a string", DescriptionKind: configschema.StringPlain, }, }, ReturnType: cty.String, Description: "returns a string", DescriptionKind: configschema.StringPlain, }, "variadic": providers.FunctionDecl{ VariadicParameter: &providers.FunctionParam{ Name: "string", Type: cty.String, Description: "must be a string", DescriptionKind: configschema.StringMarkdown, }, ReturnType: cty.String, Description: "returns a string", DescriptionKind: configschema.StringMarkdown, }, } protoFns, err := FunctionDeclsToProto(fns) if err != nil { t.Fatal(err) } gotFns, err := FunctionDeclsFromProto(protoFns) if err != nil { t.Fatal(err) } if diff := cmp.Diff(fns, gotFns, ctydebug.CmpOptions); diff != "" { t.Fatal(diff) } }