Commit 7b3d0056 authored by Matthew Holt's avatar Matthew Holt

Started adding tests

parent 04162aaa
......@@ -66,18 +66,12 @@ func (p *parser) err(kind, msg string) error {
}
// parseAddress takes a host:port string (val), and returns the host
// and port as separate values. If either value that is missing, the
// default will be used.4
func (p *parser) parseAddress(val string) (string, string) {
if val == "" {
return defaultHost, defaultPort
}
// and port as separate values. Empty strings can be returned if
// either is missing.
func parseAddress(val string) (string, string) {
parts := strings.SplitN(val, ":", 3)
if parts[0] == "" {
parts[0] = defaultHost
}
if len(parts) == 1 || parts[1] == "" {
return parts[0], defaultPort
if len(parts) == 1 {
return parts[0], ""
} else {
return parts[0], parts[1]
}
......
......@@ -23,7 +23,7 @@ func (p *parser) parse() error {
// address expects that the current token is a host:port
// combination.
func (p *parser) address() error {
p.cfg.Host, p.cfg.Port = p.parseAddress(p.tkn())
p.cfg.Host, p.cfg.Port = parseAddress(p.tkn())
p.lexer.Next()
return nil
}
......
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)
}
}
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment