From 0441d265f2bb9da249c7abf333f0f771fadb4ab5 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Mon, 15 Apr 2024 19:36:47 +0200 Subject: Adding upstream version 1:2.3.21+dfsg1. Signed-off-by: Daniel Baumann --- src/lib-index/test-mail-index-map.c | 57 +++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 src/lib-index/test-mail-index-map.c (limited to 'src/lib-index/test-mail-index-map.c') diff --git a/src/lib-index/test-mail-index-map.c b/src/lib-index/test-mail-index-map.c new file mode 100644 index 0000000..0b0b3ad --- /dev/null +++ b/src/lib-index/test-mail-index-map.c @@ -0,0 +1,57 @@ +/* Copyright (c) 2016-2018 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 (*const test_functions[])(void) = { + test_mail_index_map_lookup_seq_range, + NULL + }; + return test_run(test_functions); +} -- cgit v1.2.3