From 92c44a5d51957c71c9e5cc7cb14a9a489635101a Mon Sep 17 00:00:00 2001 From: taknb2nch Date: Sat, 15 Feb 2014 14:40:34 +0900 Subject: [PATCH] =?UTF-8?q?Reader=E3=80=81Writer=E3=81=AE=E3=83=86?= =?UTF-8?q?=E3=82=B9=E3=83=88=E3=82=B3=E3=83=BC=E3=83=89=E3=82=92=E8=BF=BD?= =?UTF-8?q?=E5=8A=A0=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pop3proto_test.go | 95 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 pop3proto_test.go diff --git a/pop3proto_test.go b/pop3proto_test.go new file mode 100644 index 0000000..65d2ae2 --- /dev/null +++ b/pop3proto_test.go @@ -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))) +}