+
+func TestUidl(t *testing.T) {
+ s := newTestServer()
+ s.mb.msgs[1] = &testMessage{1, 3, false, "abc"}
+ s.mb.msgs[2] = &testMessage{2, 1, true, "Z"}
+ s.mb.msgs[3] = &testMessage{3, 4, false, "test"}
+
+ clientServerTest(t, s, []requestResponse{
+ {"USER u", responseOK},
+ {"PASS p", responseOK},
+ {"UIDL", func(t testing.TB, tp *textproto.Conn) string {
+ responseOK(t, tp)
+ if t.Failed() {
+ return ""
+ }
+
+ resp, err := tp.ReadDotLines()
+ if err != nil {
+ t.Error(err)
+ return ""
+ }
+
+ expected := []string{
+ fmt.Sprintf("1 %p", s.mb.msgs[1]),
+ fmt.Sprintf("3 %p", s.mb.msgs[3]),
+ }
+ if !reflect.DeepEqual(resp, expected) {
+ t.Errorf("Expected %v, got %v", expected, resp)
+ }
+
+ return ""
+ }},
+ {"QUIT", responseOK},
+ })
+}