1package imapclient
2
3import (
4 "fmt"
5 "reflect"
6 "testing"
7)
8
9func tcheckf(t *testing.T, err error, format string, args ...any) {
10 if err != nil {
11 t.Fatalf("%s: %s", fmt.Sprintf(format, args...), err)
12 }
13}
14
15func tcompare(t *testing.T, a, b any) {
16 if !reflect.DeepEqual(a, b) {
17 t.Fatalf("got:\n%#v\nexpected:\n%#v", a, b)
18 }
19}
20
21func uint32ptr(v uint32) *uint32 { return &v }
22
23func TestParse(t *testing.T) {
24 code, err := ParseCode("COPYUID 1 1:3 2:4")
25 tcheckf(t, err, "parsing code")
26 tcompare(t, code,
27 CodeCopyUID{
28 DestUIDValidity: 1,
29 From: []NumRange{{First: 1, Last: uint32ptr(3)}},
30 To: []NumRange{{First: 2, Last: uint32ptr(4)}},
31 },
32 )
33
34 ut, err := ParseUntagged("* BYE done\r\n")
35 tcheckf(t, err, "parsing untagged")
36 tcompare(t, ut, UntaggedBye{Text: "done"})
37
38 tag, result, err := ParseResult("tag1 OK [ALERT] Hello\r\n")
39 tcheckf(t, err, "parsing result")
40 tcompare(t, tag, "tag1")
41 tcompare(t, result, Result{Status: OK, Code: CodeWord("ALERT"), Text: "Hello"})
42}
43