Files
go-pop3/pop3proto_test.go

96 lines
1.8 KiB
Go
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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)))
}