}
func (mb *mailbox) Reset() {
- for _, message := range mb.messages {
- message.deleted = false
+ for i, _ := range mb.messages {
+ mb.messages[i].deleted = false
}
}
{"QUIT", responseOK},
})
}
+
+func TestDele(t *testing.T) {
+ s := newTestServer()
+ s.mb.msgs[1] = &testMessage{1, 3, false, "abc"}
+ s.mb.msgs[2] = &testMessage{2, 1, false, "d"}
+
+ clientServerTest(t, s, []requestResponse{
+ {"USER u", responseOK},
+ {"PASS p", responseOK},
+ {"STAT", expectOKResponse(func(s string) bool {
+ return s == "+OK 2 4"
+ })},
+ {"DELE 1", responseOK},
+ {"STAT", expectOKResponse(func(s string) bool {
+ return s == "+OK 1 1"
+ })},
+ {"RSET", responseOK},
+ {"STAT", expectOKResponse(func(s string) bool {
+ return s == "+OK 2 4"
+ })},
+ {"QUIT", responseOK},
+ })
+
+ if s.mb.msgs[1].Deleted() || s.mb.msgs[2].Deleted() {
+ t.Errorf("RSET should not delete a message")
+ }
+
+ clientServerTest(t, s, []requestResponse{
+ {"USER u", responseOK},
+ {"PASS p", responseOK},
+ {"STAT", expectOKResponse(func(s string) bool {
+ return s == "+OK 2 4"
+ })},
+ {"DELE 1", responseOK},
+ {"STAT", expectOKResponse(func(s string) bool {
+ return s == "+OK 1 1"
+ })},
+ {"QUIT", responseOK},
+ })
+
+ if !s.mb.msgs[1].Deleted() {
+ t.Errorf("DELE did not work")
+ }
+ if s.mb.msgs[2].Deleted() {
+ t.Errorf("DELE the wrong message")
+ }
+}
--- /dev/null
+package main
+
+import (
+ "testing"
+)
+
+func TestReset(t *testing.T) {
+ mbox := mailbox{
+ messages: []message{
+ {"msg1", 1, 4, false},
+ {"msg2", 2, 4, false},
+ },
+ }
+
+ msg := mbox.GetMessage(1)
+ if msg == nil {
+ t.Errorf("failed to GetMessage #1")
+ }
+
+ if msg.Deleted() {
+ t.Errorf("message %v should not be deleted", msg)
+ }
+
+ if err := mbox.Delete(msg); err != nil {
+ t.Error(err)
+ }
+
+ if !msg.Deleted() {
+ t.Errorf("message %v should be deleted", msg)
+ }
+
+ mbox.Reset()
+
+ if msg.Deleted() {
+ t.Errorf("reset did not un-delete message %v", msg)
+ }
+}