//go:build linux package sockets import ( "testing" "github.com/stretchr/testify/require" ) type ipParseTest = struct { description string input string expectedPort int expectedIP [4]byte expectedErr error } var ipParsingTests = []ipParseTest{ { description: "valid ip and port bind to all ipv4 addresses", input: "0.0.0.0:9997", expectedPort: 9997, expectedIP: [4]byte{0, 0, 0, 0}, expectedErr: nil, }, { description: "valid ip and port to defined address", input: "192.168.1.1:9997", expectedPort: 9997, expectedIP: [4]byte{0xc0, 0xa8, 0x1, 0x1}, expectedErr: nil, }, { description: "invalid ip", input: "192.1.1:9997", expectedErr: ErrInvalidIP, }, { description: "invalid port", input: "192.1.1.1:three-thousand", expectedErr: ErrInvalidPort, }, { description: "invalid socket address format", input: "192.1.1.1.9997", expectedErr: ErrInvalidSocketAddress, }, } func TestIPParsing(t *testing.T) { for _, test := range ipParsingTests { t.Log("TEST:", test.description) port, ip, err := parseAddress(test.input) if test.expectedErr != nil { require.ErrorIs(t, test.expectedErr, err) continue } require.NoError(t, err) require.Equal(t, test.expectedPort, port) require.Equal(t, test.expectedIP, ip) } }