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