package config

import "testing"

func TestParseAddress(t *testing.T) {
	type addr struct {
		host string
		port string
	}
	testCases := []struct {
		input    string
		expected addr
	}{
		{input: "host:port", expected: addr{host: "host", port: "port"}},
		{input: "localhost:1234", expected: addr{host: "localhost", port: "1234"}},
		{input: "127.0.0.1:0", expected: addr{host: "127.0.0.1", port: "0"}},
		{input: "127.0.0.1", expected: addr{host: "127.0.0.1", port: ""}},
		{input: "somedomain.com", expected: addr{host: "somedomain.com", port: ""}},
		{input: "somedomain.com:", expected: addr{host: "somedomain.com", port: ""}},
		{input: ":80", expected: addr{host: "", port: "80"}},
		{input: "localhost:8080", expected: addr{host: "localhost", port: "8080"}},
		{input: "", expected: addr{host: "", port: ""}},
	}
	for _, test := range testCases {
		actualHost, actualPort := parseAddress(test.input)
		if actualHost != test.expected.host {
			t.Errorf("For '%s' expected host '%s' but got '%s'", test.input, test.expected.host, actualHost)
		}
		if actualPort != test.expected.port {
			t.Errorf("For '%s' expected port '%s' but got '%s'", test.input, test.expected.port, actualPort)
		}
	}
}