Reader、Writerのテストコードを追加。
This commit is contained in:
95
pop3proto_test.go
Normal file
95
pop3proto_test.go
Normal file
@@ -0,0 +1,95 @@
|
||||
package pop3
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"bytes"
|
||||
"io"
|
||||
"strings"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestReadLine(t *testing.T) {
|
||||
// This function calls textproto.Reader.ReadLine only.
|
||||
// so no need for test.
|
||||
}
|
||||
|
||||
func TestReadLines(t *testing.T) {
|
||||
r := reader("line1\nline2\n.\n")
|
||||
|
||||
s, err := r.ReadLines()
|
||||
|
||||
if len(s) != 2 || s[0] != "line1" || s[1] != "line2" || err != nil {
|
||||
t.Fatalf("%v, %v", s, err)
|
||||
}
|
||||
|
||||
s, err = r.ReadLines()
|
||||
|
||||
if s != nil || err != io.EOF {
|
||||
t.Fatalf("EOF: %s, %v", s, err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestReadToPeriod(t *testing.T) {
|
||||
r := reader("line1\nline2\n.\n")
|
||||
|
||||
s, err := r.ReadToPeriod()
|
||||
|
||||
expected := strings.Replace(`line1
|
||||
line2`, "\n", "\r\n", -1)
|
||||
|
||||
if s != expected || err != nil {
|
||||
t.Fatalf("%v, %v", s, err)
|
||||
}
|
||||
|
||||
s, err = r.ReadToPeriod()
|
||||
|
||||
if s != "" || err != io.EOF {
|
||||
t.Fatalf("EOF: %s, %v", s, err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestReadResponse(t *testing.T) {
|
||||
var r *Reader
|
||||
var s string
|
||||
var err error
|
||||
|
||||
r = reader("+OK message\n")
|
||||
s, err = r.ReadResponse()
|
||||
if s != "message" || err != nil {
|
||||
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("message\n")
|
||||
s, err = r.ReadResponse()
|
||||
if s != "" || err == nil || err.Error() != "レスポンスのフォーマットが不正です。: message" {
|
||||
t.Fatalf("%v, %v", s, err)
|
||||
}
|
||||
|
||||
r = reader("* message\n")
|
||||
s, err = r.ReadResponse()
|
||||
if s != "" || err == nil || err.Error() != "レスポンスの内容が不明です。: * message" {
|
||||
t.Fatalf("%v, %v", s, err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestWriteLine(t *testing.T) {
|
||||
var buf bytes.Buffer
|
||||
|
||||
w := NewWriter(bufio.NewWriter(&buf))
|
||||
|
||||
err := w.WriteLine("foo %d", 123)
|
||||
|
||||
if s := buf.String(); s != "foo 123\r\n" || err != nil {
|
||||
t.Fatalf("s=%q; err=%s", s, err)
|
||||
}
|
||||
}
|
||||
|
||||
func reader(s string) *Reader {
|
||||
return NewReader(bufio.NewReader(strings.NewReader(s)))
|
||||
}
|
||||
Reference in New Issue
Block a user