Merge branch 'bug/#1'

This commit is contained in:
taknb2nch
2014-04-07 11:20:49 +09:00
3 changed files with 62 additions and 12 deletions

3
.gitignore vendored
View File

@@ -21,3 +21,6 @@ _testmain.go
*.exe *.exe
*.test *.test
#
*.out

View File

@@ -110,18 +110,17 @@ func (r *Reader) ReadResponse() (string, error) {
} }
func (r *Reader) parseResponse(line string) (string, error) { func (r *Reader) parseResponse(line string) (string, error) {
var index int s := strings.ToUpper(line)
if index = strings.Index(line, " "); index < 0 { if s == "+OK" {
return "", ResponseError(fmt.Sprintf("invalid response format: %s", line)) return "", nil
} } else if strings.HasPrefix(s, "+OK ") {
return line[4:], nil
switch strings.ToUpper(line[:index]) { } else if s == "-ERR" {
case "+OK": return "", ResponseError("")
return line[index+1:], nil } else if strings.HasPrefix(s, "-ERR ") {
case "-ERR": return "", ResponseError(line[5:])
return "", ResponseError(line[index+1:]) } else {
default:
return "", ResponseError(fmt.Sprintf("unknown response: %s", line)) return "", ResponseError(fmt.Sprintf("unknown response: %s", line))
} }
} }

View File

@@ -59,15 +59,51 @@ func TestReadResponse(t *testing.T) {
t.Fatalf("%v, %v", s, err) t.Fatalf("%v, %v", s, err)
} }
r = reader("+OK\n")
s, err = r.ReadResponse()
if s != "" || err != nil {
t.Fatalf("%v, %v", s, err)
}
r = reader("+OK \n")
s, err = r.ReadResponse()
if s != "" || err != nil {
t.Fatalf("%v, %v", s, err)
}
r = reader("+OKAY\n")
s, err = r.ReadResponse()
if s != "" || err == nil || err.Error() != "unknown response: +OKAY" {
t.Fatalf("%v, %v", s, err)
}
r = reader("-ERR message\n") r = reader("-ERR message\n")
s, err = r.ReadResponse() s, err = r.ReadResponse()
if s != "" || err == nil || err.Error() != "message" { if s != "" || err == nil || err.Error() != "message" {
t.Fatalf("%v, %v", s, err) t.Fatalf("%v, %v", s, err)
} }
r = reader("-ERR\n")
s, err = r.ReadResponse()
if s != "" || err == nil || err.Error() != "" {
t.Fatalf("%v, %v", s, err)
}
r = reader("-ERR \n")
s, err = r.ReadResponse()
if s != "" || err == nil || err.Error() != "" {
t.Fatalf("%v, %v", s, err)
}
r = reader("-ERROR\n")
s, err = r.ReadResponse()
if s != "" || err == nil || err.Error() != "unknown response: -ERROR" {
t.Fatalf("%v, %v", s, err)
}
r = reader("message\n") r = reader("message\n")
s, err = r.ReadResponse() s, err = r.ReadResponse()
if s != "" || err == nil || err.Error() != "invalid response format: message" { if s != "" || err == nil || err.Error() != "unknown response: message" {
t.Fatalf("%v, %v", s, err) t.Fatalf("%v, %v", s, err)
} }
@@ -76,6 +112,18 @@ func TestReadResponse(t *testing.T) {
if s != "" || err == nil || err.Error() != "unknown response: * message" { if s != "" || err == nil || err.Error() != "unknown response: * message" {
t.Fatalf("%v, %v", s, err) t.Fatalf("%v, %v", s, err)
} }
r = reader(" message\n")
s, err = r.ReadResponse()
if s != "" || err == nil || err.Error() != "unknown response: message" {
t.Fatalf("%v, %v", s, err)
}
r = reader("\n")
s, err = r.ReadResponse()
if s != "" || err == nil || err.Error() != "unknown response: " {
t.Fatalf("%v, %v", s, err)
}
} }
func TestWriteLine(t *testing.T) { func TestWriteLine(t *testing.T) {