mirror of
https://github.com/mjl-/mox.git
synced 2025-07-10 07:14:40 +03:00
mox!
This commit is contained in:
61
imapserver/protocol_test.go
Normal file
61
imapserver/protocol_test.go
Normal file
@ -0,0 +1,61 @@
|
||||
package imapserver
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/mjl-/mox/store"
|
||||
)
|
||||
|
||||
func TestNumSetContains(t *testing.T) {
|
||||
num := func(v uint32) *setNumber {
|
||||
return &setNumber{v, false}
|
||||
}
|
||||
star := &setNumber{star: true}
|
||||
|
||||
check := func(v bool) {
|
||||
t.Helper()
|
||||
if !v {
|
||||
t.Fatalf("bad")
|
||||
}
|
||||
}
|
||||
|
||||
ss0 := numSet{true, nil} // "$"
|
||||
check(ss0.containsSeq(1, []store.UID{2}, []store.UID{2}))
|
||||
check(!ss0.containsSeq(1, []store.UID{2}, []store.UID{}))
|
||||
|
||||
check(ss0.containsUID(1, []store.UID{1}, []store.UID{1}))
|
||||
check(ss0.containsUID(2, []store.UID{1, 2, 3}, []store.UID{2}))
|
||||
check(!ss0.containsUID(2, []store.UID{1, 2, 3}, []store.UID{}))
|
||||
check(!ss0.containsUID(2, []store.UID{}, []store.UID{2}))
|
||||
|
||||
ss1 := numSet{false, []numRange{{*num(1), nil}}} // Single number 1.
|
||||
check(ss1.containsSeq(1, []store.UID{2}, nil))
|
||||
check(!ss1.containsSeq(2, []store.UID{1, 2}, nil))
|
||||
|
||||
check(ss1.containsUID(1, []store.UID{1}, nil))
|
||||
check(ss1.containsSeq(1, []store.UID{2}, nil))
|
||||
check(!ss1.containsSeq(2, []store.UID{1, 2}, nil))
|
||||
|
||||
// 2:*
|
||||
ss2 := numSet{false, []numRange{{*num(2), star}}}
|
||||
check(!ss2.containsSeq(1, []store.UID{2}, nil))
|
||||
check(ss2.containsSeq(2, []store.UID{4, 5}, nil))
|
||||
check(ss2.containsSeq(3, []store.UID{4, 5, 6}, nil))
|
||||
|
||||
check(ss2.containsUID(2, []store.UID{2}, nil))
|
||||
check(ss2.containsUID(3, []store.UID{1, 2, 3}, nil))
|
||||
check(ss2.containsUID(2, []store.UID{2}, nil))
|
||||
check(!ss2.containsUID(2, []store.UID{4, 5}, nil))
|
||||
check(!ss2.containsUID(2, []store.UID{1}, nil))
|
||||
|
||||
// *:2
|
||||
ss3 := numSet{false, []numRange{{*star, num(2)}}}
|
||||
check(ss3.containsSeq(1, []store.UID{2}, nil))
|
||||
check(ss3.containsSeq(2, []store.UID{4, 5}, nil))
|
||||
check(!ss3.containsSeq(3, []store.UID{1, 2, 3}, nil))
|
||||
|
||||
check(ss3.containsUID(1, []store.UID{1}, nil))
|
||||
check(ss3.containsUID(2, []store.UID{1, 2, 3}, nil))
|
||||
check(!ss3.containsUID(1, []store.UID{2, 3}, nil))
|
||||
check(!ss3.containsUID(3, []store.UID{1, 2, 3}, nil))
|
||||
}
|
Reference in New Issue
Block a user