package resolver

import (
	"net/netip"
	"testing"

	"github.com/stretchr/testify/assert"
)

func Test_uniqueIPsToSlice(t *testing.T) {
	t.Parallel()
	testCases := map[string]struct {
		inputIPs  map[string]struct{}
		outputIPs []netip.Addr
	}{
		"nil": {
			inputIPs:  nil,
			outputIPs: []netip.Addr{},
		},
		"empty": {
			inputIPs:  map[string]struct{}{},
			outputIPs: []netip.Addr{},
		},
		"single IPv4": {
			inputIPs:  map[string]struct{}{"1.1.1.1": {}},
			outputIPs: []netip.Addr{netip.AddrFrom4([4]byte{1, 1, 1, 1})},
		},
		"two IPv4s": {
			inputIPs:  map[string]struct{}{"1.1.1.1": {}, "1.1.2.1": {}},
			outputIPs: []netip.Addr{netip.AddrFrom4([4]byte{1, 1, 1, 1}), netip.AddrFrom4([4]byte{1, 1, 2, 1})},
		},
	}
	for name, testCase := range testCases {
		testCase := testCase
		t.Run(name, func(t *testing.T) {
			t.Parallel()
			outputIPs := uniqueIPsToSlice(testCase.inputIPs)
			assert.ElementsMatch(t, testCase.outputIPs, outputIPs)
		})
	}
}
