96 lines
1.8 KiB
Go
96 lines
1.8 KiB
Go
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() != "invalid response format: 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)
|
||
}
|
||
}
|
||
|
||
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)))
|
||
}
|