Mercurial > dovecot > core-2.2
view src/lib-index/test-mail-index-map.c @ 22691:dca05b22217b
director: Fix crash when handling expired USER timestamps.
The fix in 154f91726624265fce15097eb4bbbf6e55f8c477 wasn't complete.
author | Timo Sirainen <timo.sirainen@dovecot.fi> |
---|---|
date | Tue, 28 Nov 2017 13:10:35 +0200 |
parents | 2e2563132d5f |
children | cb108f786fb4 |
line wrap: on
line source
/* Copyright (c) 2016-2017 Dovecot authors, see the included COPYING file */ #include "lib.h" #include "array.h" #include "test-common.h" #include "mail-index-private.h" #include "mail-index-modseq.h" #include "mail-index-transaction-private.h" static void test_mail_index_map_lookup_seq_range_count(unsigned int messages_count) { struct mail_index_record_map rec_map; struct mail_index_map map; uint32_t seq, first_uid, last_uid, first_seq, last_seq, max_uid; i_zero(&map); i_zero(&rec_map); map.rec_map = &rec_map; map.hdr.messages_count = messages_count; map.hdr.record_size = sizeof(struct mail_index_record); rec_map.records_count = map.hdr.messages_count; rec_map.records = i_new(struct mail_index_record, map.hdr.messages_count); for (seq = 1; seq <= map.hdr.messages_count; seq++) MAIL_INDEX_REC_AT_SEQ(&map, seq)->uid = seq*2; max_uid = (seq-1)*2; map.hdr.next_uid = max_uid + 1; for (first_uid = 2; first_uid <= max_uid; first_uid++) { for (last_uid = first_uid; last_uid <= max_uid; last_uid++) { if (first_uid == last_uid && first_uid%2 != 0) continue; mail_index_map_lookup_seq_range(&map, first_uid, last_uid, &first_seq, &last_seq); test_assert((first_uid+1)/2 == first_seq && last_uid/2 == last_seq); } } i_free(rec_map.records); } static void test_mail_index_map_lookup_seq_range(void) { unsigned int i; test_begin("mail index map lookup seq range"); for (i = 1; i < 20; i++) test_mail_index_map_lookup_seq_range_count(i); test_end(); } int main(void) { static void (*test_functions[])(void) = { test_mail_index_map_lookup_seq_range, NULL }; return test_run(test_functions); }