package privatelink

import (
	"testing"

	"github.com/stretchr/testify/assert"
	regionaldedicatedv1 "github.com/tidbcloud/infra-provider/api/tidbcloud/regional-server/v1"

	globaldedicatedv1 "github.com/tidbcloud/tidb-management-service/api/spec/global/dedicated/v1"
)

func TestPrivateLinkEndpointIPAddressTypeRegionalToGlobal(t *testing.T) {
	tests := []struct {
		name string
		in   regionaldedicatedv1.PrivateLinkService_Connection_IPAddressType
		want globaldedicatedv1.PrivateLinkIPAddressType
	}{
		{
			name: "ipv4",
			in:   regionaldedicatedv1.PrivateLinkService_Connection_IP_ADDRESS_TYPE_IPV4,
			want: globaldedicatedv1.PrivateLinkIPAddressType_PRIVATE_LINK_IP_ADDRESS_TYPE_IPV4,
		},
		{
			name: "ipv6",
			in:   regionaldedicatedv1.PrivateLinkService_Connection_IP_ADDRESS_TYPE_IPV6,
			want: globaldedicatedv1.PrivateLinkIPAddressType_PRIVATE_LINK_IP_ADDRESS_TYPE_IPV6,
		},
		{
			name: "dualstack",
			in:   regionaldedicatedv1.PrivateLinkService_Connection_IP_ADDRESS_TYPE_DUALSTACK,
			want: globaldedicatedv1.PrivateLinkIPAddressType_PRIVATE_LINK_IP_ADDRESS_TYPE_DUALSTACK,
		},
		{
			name: "unspecified",
			in:   regionaldedicatedv1.PrivateLinkService_Connection_IP_ADDRESS_TYPE_UNSPECIFIED,
			want: globaldedicatedv1.PrivateLinkIPAddressType_PRIVATE_LINK_IP_ADDRESS_TYPE_UNSPECIFIED,
		},
	}

	for _, tt := range tests {
		t.Run(tt.name, func(t *testing.T) {
			assert.Equal(t, tt.want, privateLinkEndpointIPAddressTypeRegionalToGlobal(tt.in))
		})
	}
}
