doveadm -u "local"  mailbox create "foo" "bar" "baz"
doveadm -u "remote" mailbox create "foo" "bar" "baz"

doveadm -u "local"  mailbox update --uid-validity          1 "INBOX"
doveadm -u "local"  mailbox update --uid-validity 2147483647 "foo"   # 2^31-1
doveadm -u "local"  mailbox update --uid-validity 2147483648 "bar"   # 2^31
doveadm -u "local"  mailbox update --uid-validity 4294967295 "baz"   # 2^32-1

doveadm -u "remote" mailbox update --uid-validity 4294967295 "INBOX" # 2^32-1
doveadm -u "remote" mailbox update --uid-validity 2147483648 "foo"   # 2^31 
doveadm -u "remote" mailbox update --uid-validity 2147483647 "bar"   # 2^31-1
doveadm -u "remote" mailbox update --uid-validity          1 "baz"   # 

run() {
    local u m
    for u in local remote; do
        for m in "INBOX" "foo" "bar" "baz"; do
            sample_message | deliver -u "$u"  -- -m "$m"
        done
    done
    interimap
    check_mailbox_status "INBOX" "foo" "bar" "baz"
}
run

# raise UIDNEXT AND HIGHESTMODSEQ close to the max values (resp. 2^32-1 och 2^63-1)
doveadm -u "local" mailbox update --min-next-uid 2147483647 --min-highest-modseq 9223372036854775807 "INBOX" # 2^31-1, 2^63-1
doveadm -u "local" mailbox update --min-next-uid 2147483647 --min-highest-modseq 9223372036854775807 "foo"   # 2^31-1, 2^63-1
doveadm -u "local" mailbox update --min-next-uid 2147483648 --min-highest-modseq 9223372036854775808 "bar"   # 2^31, 2^63
doveadm -u "local" mailbox update --min-next-uid 2147483648 --min-highest-modseq 9223372036854775808 "baz"   # 2^31, 2^63

doveadm -u "remote" mailbox update --min-next-uid 4294967168 --min-highest-modseq 18446744073709551488 "INBOX" # 2^32-128, 2^64-128
doveadm -u "remote" mailbox update --min-next-uid 2147483776 --min-highest-modseq  9223372036854775936 "foo"   # 2^31+128, 2^63+128
doveadm -u "remote" mailbox update --min-next-uid 2147483648 --min-highest-modseq  9223372036854775808 "bar"   # 2^31, 2^63

run

# vim: set filetype=sh :