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
*.test
#
*.out

View File

@@ -110,18 +110,17 @@ func (r *Reader) ReadResponse() (string, error) {
}
func (r *Reader) parseResponse(line string) (string, error) {
var index int
s := strings.ToUpper(line)
if index = strings.Index(line, " "); index < 0 {
return "", ResponseError(fmt.Sprintf("invalid response format: %s", line))
}
switch strings.ToUpper(line[:index]) {
case "+OK":
return line[index+1:], nil
case "-ERR":
return "", ResponseError(line[index+1:])
default:
if s == "+OK" {
return "", nil
} else if strings.HasPrefix(s, "+OK ") {
return line[4:], nil
} else if s == "-ERR" {
return "", ResponseError("")
} else if strings.HasPrefix(s, "-ERR ") {
return "", ResponseError(line[5:])
} else {
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)
}
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")
s, err = r.ReadResponse()
if s != "" || err == nil || err.Error() != "message" {
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")
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)
}
@@ -76,6 +112,18 @@ func TestReadResponse(t *testing.T) {
if s != "" || err == nil || err.Error() != "unknown response: * message" {
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) {