test-seq-range-array.c revision 461ffead9720d1e516b959d5e41f049c73d38c7c
5a580c3a38ced62d4bcc95b8ac7c4f2935b5d294Timo Sirainen/* Copyright (c) 2007-2012 Dovecot authors, see the included COPYING file */
0536ccb51d41e3078c3a9fa33e509fb4b2420f95Timo Sirainenstatic void test_seq_range_array_add_merge(void)
fcca16701767c6b92227a9ee125de69d257882f6Timo Sirainen unsigned char shadowbuf[SEQ_RANGE_TEST_BUFSIZE];
e2ce8d4a6ac5d82a906178148453e7613fab9ba0Timo Sirainen for (i = 0; i < SEQ_RANGE_TEST_COUNT; i++) {
2201e2cc1b3f744dac61c2bf8095bcb6b5719540Timo Sirainen seq2 = seq1 + rand() % (SEQ_RANGE_TEST_BUFSIZE - seq1);
a6f281d078ed03d555802c1a8e15fefce80132dcTimo Sirainen seq_range_array_add_range(&range, seq1, seq2);
a6f281d078ed03d555802c1a8e15fefce80132dcTimo Sirainen ret = seq_range_array_remove(&range, seq1) ? 1 : 0;
2201e2cc1b3f744dac61c2bf8095bcb6b5719540Timo Sirainen ret = seq_range_array_remove_range(&range, seq1, seq2);
252db51b6c0a605163326b3ea5d09e9936ca3b29Timo Sirainen if (j > 0 && seqs[j-1].seq2+1 >= seqs[j].seq1)
2201e2cc1b3f744dac61c2bf8095bcb6b5719540Timo Sirainen for (; seq1 < SEQ_RANGE_TEST_BUFSIZE; seq1++) {
2201e2cc1b3f744dac61c2bf8095bcb6b5719540Timo Sirainen test_out_reason("seq_range_array random", FALSE,
fcca16701767c6b92227a9ee125de69d257882f6Timo Sirainen t_strdup_printf("round %u test %d failed", i, test));
34830cefe1757de0ffca67acdc529d5bc8b06b66Timo Sirainen static const unsigned int input_min = 1, input_max = 5;
34830cefe1757de0ffca67acdc529d5bc8b06b66Timo Sirainen static const unsigned int input[] = {
7bcb308d0e13dfa48b483b0addccd889a77bb598Timo Sirainen for (i = num = 0; input[i] != -1U; num++, i++) {
7bcb308d0e13dfa48b483b0addccd889a77bb598Timo Sirainen seq_range_array_add_with_init(&range, 32, input[i]);
7bcb308d0e13dfa48b483b0addccd889a77bb598Timo Sirainen for (j = start; j < i; j++) {
7bcb308d0e13dfa48b483b0addccd889a77bb598Timo Sirainen seq_range_array_invert(&range, input_min, input_max);
7bcb308d0e13dfa48b483b0addccd889a77bb598Timo Sirainen for (seq = input_min; seq <= input_max; seq++) {
2201e2cc1b3f744dac61c2bf8095bcb6b5719540Timo Sirainen if (seq_range_exists(&range, seq) == old_exists)
5069adb2f5b3609fff9a0a705c6edeae56e0030aTimo Sirainen test_out(t_strdup_printf("seq_range_array_invert(%u)", num),
2201e2cc1b3f744dac61c2bf8095bcb6b5719540Timo Sirainenstatic void test_seq_range_create(ARRAY_TYPE(seq_range) *array, uint8_t byte)
8d56f3334e22619abf56833d290bb1f49ac6722cTimo Sirainen unsigned int i;
2201e2cc1b3f744dac61c2bf8095bcb6b5719540Timo Sirainen for (i = 0; i < 8; i++) {
2201e2cc1b3f744dac61c2bf8095bcb6b5719540Timo Sirainenstatic void test_seq_range_array_have_common(void)
2201e2cc1b3f744dac61c2bf8095bcb6b5719540Timo Sirainen unsigned int i, j;
5069adb2f5b3609fff9a0a705c6edeae56e0030aTimo Sirainen for (i = 0; i < 256; i++) {
5069adb2f5b3609fff9a0a705c6edeae56e0030aTimo Sirainen for (j = 0; j < 256; j++) {
2201e2cc1b3f744dac61c2bf8095bcb6b5719540Timo Sirainen ret1 = seq_range_array_have_common(&arr1, &arr2);
2201e2cc1b3f744dac61c2bf8095bcb6b5719540Timo Sirainen ret2 = (i & j) != 0;
252db51b6c0a605163326b3ea5d09e9936ca3b29Timo Sirainen test_out("seq_range_array_have_common()", success);