From 7b3d00566286164ea73707e451cdbd652fc2b1be Mon Sep 17 00:00:00 2001 From: Matthew Holt Date: Tue, 13 Jan 2015 17:25:55 -0700 Subject: [PATCH] Started adding tests --- config/parser.go | 16 +++++----------- config/parsing.go | 2 +- config/parsing_test.go | 33 +++++++++++++++++++++++++++++++++ 3 files changed, 39 insertions(+), 12 deletions(-) create mode 100644 config/parsing_test.go diff --git a/config/parser.go b/config/parser.go index 1ccd7b910..10d1e5f92 100644 --- a/config/parser.go +++ b/config/parser.go @@ -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] } diff --git a/config/parsing.go b/config/parsing.go index baa660864..418311574 100644 --- a/config/parsing.go +++ b/config/parsing.go @@ -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 } diff --git a/config/parsing_test.go b/config/parsing_test.go new file mode 100644 index 000000000..d6f312574 --- /dev/null +++ b/config/parsing_test.go @@ -0,0 +1,33 @@ +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) + } + } +}