annotate src/lib/test-seq-range-array.c @ 22955:812e5c961328

fts: Indexing virtual mailbox didn't always index the last mails
author Timo Sirainen <timo.sirainen@dovecot.fi>
date Thu, 03 May 2018 18:33:00 +0300
parents cb108f786fb4
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
22713
cb108f786fb4 Updated copyright notices to include the year 2018.
Stephan Bosch <stephan.bosch@dovecot.fi>
parents: 21390
diff changeset
1 /* Copyright (c) 2007-2018 Dovecot authors, see the included COPYING file */
9425
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
2
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
3 #include "test-lib.h"
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
4 #include "array.h"
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
5 #include "seq-range-array.h"
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
6
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
7
15907
db0ada89b81a seq_range_array_add(): Fixed handling sequence ranges that contain zeros.
Timo Sirainen <tss@iki.fi>
parents: 15904
diff changeset
8 static void
db0ada89b81a seq_range_array_add(): Fixed handling sequence ranges that contain zeros.
Timo Sirainen <tss@iki.fi>
parents: 15904
diff changeset
9 boundaries_permute(uint32_t *input, unsigned int i, unsigned int count)
db0ada89b81a seq_range_array_add(): Fixed handling sequence ranges that contain zeros.
Timo Sirainen <tss@iki.fi>
parents: 15904
diff changeset
10 {
db0ada89b81a seq_range_array_add(): Fixed handling sequence ranges that contain zeros.
Timo Sirainen <tss@iki.fi>
parents: 15904
diff changeset
11 ARRAY_TYPE(seq_range) range;
db0ada89b81a seq_range_array_add(): Fixed handling sequence ranges that contain zeros.
Timo Sirainen <tss@iki.fi>
parents: 15904
diff changeset
12 const struct seq_range *seqs;
db0ada89b81a seq_range_array_add(): Fixed handling sequence ranges that contain zeros.
Timo Sirainen <tss@iki.fi>
parents: 15904
diff changeset
13 unsigned int seqs_count;
db0ada89b81a seq_range_array_add(): Fixed handling sequence ranges that contain zeros.
Timo Sirainen <tss@iki.fi>
parents: 15904
diff changeset
14 uint32_t tmp;
db0ada89b81a seq_range_array_add(): Fixed handling sequence ranges that contain zeros.
Timo Sirainen <tss@iki.fi>
parents: 15904
diff changeset
15 unsigned int j;
db0ada89b81a seq_range_array_add(): Fixed handling sequence ranges that contain zeros.
Timo Sirainen <tss@iki.fi>
parents: 15904
diff changeset
16
db0ada89b81a seq_range_array_add(): Fixed handling sequence ranges that contain zeros.
Timo Sirainen <tss@iki.fi>
parents: 15904
diff changeset
17 if (i+1 < count) {
db0ada89b81a seq_range_array_add(): Fixed handling sequence ranges that contain zeros.
Timo Sirainen <tss@iki.fi>
parents: 15904
diff changeset
18 for (j = i; j < count; j++) {
db0ada89b81a seq_range_array_add(): Fixed handling sequence ranges that contain zeros.
Timo Sirainen <tss@iki.fi>
parents: 15904
diff changeset
19 tmp = input[i]; input[i] = input[j]; input[j] = tmp;
db0ada89b81a seq_range_array_add(): Fixed handling sequence ranges that contain zeros.
Timo Sirainen <tss@iki.fi>
parents: 15904
diff changeset
20 boundaries_permute(input, i+1, count);
db0ada89b81a seq_range_array_add(): Fixed handling sequence ranges that contain zeros.
Timo Sirainen <tss@iki.fi>
parents: 15904
diff changeset
21 tmp = input[i]; input[i] = input[j]; input[j] = tmp;
db0ada89b81a seq_range_array_add(): Fixed handling sequence ranges that contain zeros.
Timo Sirainen <tss@iki.fi>
parents: 15904
diff changeset
22 }
db0ada89b81a seq_range_array_add(): Fixed handling sequence ranges that contain zeros.
Timo Sirainen <tss@iki.fi>
parents: 15904
diff changeset
23 return;
db0ada89b81a seq_range_array_add(): Fixed handling sequence ranges that contain zeros.
Timo Sirainen <tss@iki.fi>
parents: 15904
diff changeset
24 }
db0ada89b81a seq_range_array_add(): Fixed handling sequence ranges that contain zeros.
Timo Sirainen <tss@iki.fi>
parents: 15904
diff changeset
25 t_array_init(&range, 4);
db0ada89b81a seq_range_array_add(): Fixed handling sequence ranges that contain zeros.
Timo Sirainen <tss@iki.fi>
parents: 15904
diff changeset
26 for (i = 0; i < count; i++)
db0ada89b81a seq_range_array_add(): Fixed handling sequence ranges that contain zeros.
Timo Sirainen <tss@iki.fi>
parents: 15904
diff changeset
27 seq_range_array_add(&range, input[i]);
db0ada89b81a seq_range_array_add(): Fixed handling sequence ranges that contain zeros.
Timo Sirainen <tss@iki.fi>
parents: 15904
diff changeset
28 seqs = array_get(&range, &seqs_count);
db0ada89b81a seq_range_array_add(): Fixed handling sequence ranges that contain zeros.
Timo Sirainen <tss@iki.fi>
parents: 15904
diff changeset
29 test_assert(seqs_count == 2);
db0ada89b81a seq_range_array_add(): Fixed handling sequence ranges that contain zeros.
Timo Sirainen <tss@iki.fi>
parents: 15904
diff changeset
30 test_assert(seqs[0].seq1 == 0);
db0ada89b81a seq_range_array_add(): Fixed handling sequence ranges that contain zeros.
Timo Sirainen <tss@iki.fi>
parents: 15904
diff changeset
31 test_assert(seqs[0].seq2 == 1);
db0ada89b81a seq_range_array_add(): Fixed handling sequence ranges that contain zeros.
Timo Sirainen <tss@iki.fi>
parents: 15904
diff changeset
32 test_assert(seqs[1].seq1 == (uint32_t)-2);
db0ada89b81a seq_range_array_add(): Fixed handling sequence ranges that contain zeros.
Timo Sirainen <tss@iki.fi>
parents: 15904
diff changeset
33 test_assert(seqs[1].seq2 == (uint32_t)-1);
db0ada89b81a seq_range_array_add(): Fixed handling sequence ranges that contain zeros.
Timo Sirainen <tss@iki.fi>
parents: 15904
diff changeset
34 }
db0ada89b81a seq_range_array_add(): Fixed handling sequence ranges that contain zeros.
Timo Sirainen <tss@iki.fi>
parents: 15904
diff changeset
35
db0ada89b81a seq_range_array_add(): Fixed handling sequence ranges that contain zeros.
Timo Sirainen <tss@iki.fi>
parents: 15904
diff changeset
36 static void test_seq_range_array_add_boundaries(void)
db0ada89b81a seq_range_array_add(): Fixed handling sequence ranges that contain zeros.
Timo Sirainen <tss@iki.fi>
parents: 15904
diff changeset
37 {
db0ada89b81a seq_range_array_add(): Fixed handling sequence ranges that contain zeros.
Timo Sirainen <tss@iki.fi>
parents: 15904
diff changeset
38 static uint32_t input[] = { 0, 1, (uint32_t)-2, (uint32_t)-1 };
db0ada89b81a seq_range_array_add(): Fixed handling sequence ranges that contain zeros.
Timo Sirainen <tss@iki.fi>
parents: 15904
diff changeset
39
db0ada89b81a seq_range_array_add(): Fixed handling sequence ranges that contain zeros.
Timo Sirainen <tss@iki.fi>
parents: 15904
diff changeset
40 boundaries_permute(input, 0, N_ELEMENTS(input));
db0ada89b81a seq_range_array_add(): Fixed handling sequence ranges that contain zeros.
Timo Sirainen <tss@iki.fi>
parents: 15904
diff changeset
41 }
db0ada89b81a seq_range_array_add(): Fixed handling sequence ranges that contain zeros.
Timo Sirainen <tss@iki.fi>
parents: 15904
diff changeset
42
14527
bac5e1dae4ed seq_range_array_add(): Ranges weren't always merged when they could have.
Timo Sirainen <tss@iki.fi>
parents: 14133
diff changeset
43 static void test_seq_range_array_add_merge(void)
bac5e1dae4ed seq_range_array_add(): Ranges weren't always merged when they could have.
Timo Sirainen <tss@iki.fi>
parents: 14133
diff changeset
44 {
bac5e1dae4ed seq_range_array_add(): Ranges weren't always merged when they could have.
Timo Sirainen <tss@iki.fi>
parents: 14133
diff changeset
45 ARRAY_TYPE(seq_range) range;
bac5e1dae4ed seq_range_array_add(): Ranges weren't always merged when they could have.
Timo Sirainen <tss@iki.fi>
parents: 14133
diff changeset
46
bac5e1dae4ed seq_range_array_add(): Ranges weren't always merged when they could have.
Timo Sirainen <tss@iki.fi>
parents: 14133
diff changeset
47 test_begin("seq_range_array_add() merging");
bac5e1dae4ed seq_range_array_add(): Ranges weren't always merged when they could have.
Timo Sirainen <tss@iki.fi>
parents: 14133
diff changeset
48 t_array_init(&range, 8);
14676
69ba6977bed8 seq_range_array_add() API changed. Added other functions to provide the less common use cases.
Timo Sirainen <tss@iki.fi>
parents: 14527
diff changeset
49 seq_range_array_add(&range, 4);
69ba6977bed8 seq_range_array_add() API changed. Added other functions to provide the less common use cases.
Timo Sirainen <tss@iki.fi>
parents: 14527
diff changeset
50 seq_range_array_add(&range, 1);
69ba6977bed8 seq_range_array_add() API changed. Added other functions to provide the less common use cases.
Timo Sirainen <tss@iki.fi>
parents: 14527
diff changeset
51 seq_range_array_add(&range, 2);
14527
bac5e1dae4ed seq_range_array_add(): Ranges weren't always merged when they could have.
Timo Sirainen <tss@iki.fi>
parents: 14133
diff changeset
52 test_assert(array_count(&range) == 2);
21259
5c75425daf63 lib: seq_range_array_*(): Fix seq2=2^32-1 handling
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 19552
diff changeset
53
5c75425daf63 lib: seq_range_array_*(): Fix seq2=2^32-1 handling
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 19552
diff changeset
54 seq_range_array_add_range(&range, 1, (uint32_t)-1);
5c75425daf63 lib: seq_range_array_*(): Fix seq2=2^32-1 handling
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 19552
diff changeset
55 test_assert(array_count(&range) == 1);
5c75425daf63 lib: seq_range_array_*(): Fix seq2=2^32-1 handling
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 19552
diff changeset
56 seq_range_array_add_range(&range, 1, (uint32_t)-1);
5c75425daf63 lib: seq_range_array_*(): Fix seq2=2^32-1 handling
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 19552
diff changeset
57 test_assert(array_count(&range) == 1);
14527
bac5e1dae4ed seq_range_array_add(): Ranges weren't always merged when they could have.
Timo Sirainen <tss@iki.fi>
parents: 14133
diff changeset
58 test_end();
bac5e1dae4ed seq_range_array_add(): Ranges weren't always merged when they could have.
Timo Sirainen <tss@iki.fi>
parents: 14133
diff changeset
59 }
bac5e1dae4ed seq_range_array_add(): Ranges weren't always merged when they could have.
Timo Sirainen <tss@iki.fi>
parents: 14133
diff changeset
60
17312
0d237a4dacd2 Added seq_range_array_remove_nth()
Timo Sirainen <tss@iki.fi>
parents: 17130
diff changeset
61 static void test_seq_range_array_remove_nth(void)
0d237a4dacd2 Added seq_range_array_remove_nth()
Timo Sirainen <tss@iki.fi>
parents: 17130
diff changeset
62 {
0d237a4dacd2 Added seq_range_array_remove_nth()
Timo Sirainen <tss@iki.fi>
parents: 17130
diff changeset
63 ARRAY_TYPE(seq_range) range;
0d237a4dacd2 Added seq_range_array_remove_nth()
Timo Sirainen <tss@iki.fi>
parents: 17130
diff changeset
64 const struct seq_range *r;
0d237a4dacd2 Added seq_range_array_remove_nth()
Timo Sirainen <tss@iki.fi>
parents: 17130
diff changeset
65
0d237a4dacd2 Added seq_range_array_remove_nth()
Timo Sirainen <tss@iki.fi>
parents: 17130
diff changeset
66 test_begin("seq_range_array_remove_nth()");
0d237a4dacd2 Added seq_range_array_remove_nth()
Timo Sirainen <tss@iki.fi>
parents: 17130
diff changeset
67 t_array_init(&range, 8);
0d237a4dacd2 Added seq_range_array_remove_nth()
Timo Sirainen <tss@iki.fi>
parents: 17130
diff changeset
68 seq_range_array_add_range(&range, 1, 5);
0d237a4dacd2 Added seq_range_array_remove_nth()
Timo Sirainen <tss@iki.fi>
parents: 17130
diff changeset
69 seq_range_array_add(&range, 7);
0d237a4dacd2 Added seq_range_array_remove_nth()
Timo Sirainen <tss@iki.fi>
parents: 17130
diff changeset
70 seq_range_array_add_range(&range, 10,20);
0d237a4dacd2 Added seq_range_array_remove_nth()
Timo Sirainen <tss@iki.fi>
parents: 17130
diff changeset
71 test_assert(array_count(&range) == 3);
0d237a4dacd2 Added seq_range_array_remove_nth()
Timo Sirainen <tss@iki.fi>
parents: 17130
diff changeset
72
0d237a4dacd2 Added seq_range_array_remove_nth()
Timo Sirainen <tss@iki.fi>
parents: 17130
diff changeset
73 seq_range_array_remove_nth(&range, 0, 2);
0d237a4dacd2 Added seq_range_array_remove_nth()
Timo Sirainen <tss@iki.fi>
parents: 17130
diff changeset
74 r = array_idx(&range, 0); test_assert(r->seq1 == 3 && r->seq2 == 5);
0d237a4dacd2 Added seq_range_array_remove_nth()
Timo Sirainen <tss@iki.fi>
parents: 17130
diff changeset
75
0d237a4dacd2 Added seq_range_array_remove_nth()
Timo Sirainen <tss@iki.fi>
parents: 17130
diff changeset
76 seq_range_array_remove_nth(&range, 1, 4);
0d237a4dacd2 Added seq_range_array_remove_nth()
Timo Sirainen <tss@iki.fi>
parents: 17130
diff changeset
77 r = array_idx(&range, 0); test_assert(r->seq1 == 3 && r->seq2 == 3);
0d237a4dacd2 Added seq_range_array_remove_nth()
Timo Sirainen <tss@iki.fi>
parents: 17130
diff changeset
78 r = array_idx(&range, 1); test_assert(r->seq1 == 11 && r->seq2 == 20);
0d237a4dacd2 Added seq_range_array_remove_nth()
Timo Sirainen <tss@iki.fi>
parents: 17130
diff changeset
79
0d237a4dacd2 Added seq_range_array_remove_nth()
Timo Sirainen <tss@iki.fi>
parents: 17130
diff changeset
80 seq_range_array_remove_nth(&range, 5, (uint32_t)-1);
0d237a4dacd2 Added seq_range_array_remove_nth()
Timo Sirainen <tss@iki.fi>
parents: 17130
diff changeset
81 r = array_idx(&range, 1); test_assert(r->seq1 == 11 && r->seq2 == 14);
0d237a4dacd2 Added seq_range_array_remove_nth()
Timo Sirainen <tss@iki.fi>
parents: 17130
diff changeset
82
0d237a4dacd2 Added seq_range_array_remove_nth()
Timo Sirainen <tss@iki.fi>
parents: 17130
diff changeset
83 test_assert(array_count(&range) == 2);
0d237a4dacd2 Added seq_range_array_remove_nth()
Timo Sirainen <tss@iki.fi>
parents: 17130
diff changeset
84 test_end();
0d237a4dacd2 Added seq_range_array_remove_nth()
Timo Sirainen <tss@iki.fi>
parents: 17130
diff changeset
85 }
0d237a4dacd2 Added seq_range_array_remove_nth()
Timo Sirainen <tss@iki.fi>
parents: 17130
diff changeset
86
9425
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
87 static void test_seq_range_array_random(void)
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
88 {
18190
230f3579c9b7 lib: seq-range-array - add range changes
Phil Carmody <phil@dovecot.fi>
parents: 18137
diff changeset
89 #define SEQ_RANGE_TEST_BUFSIZE 100
230f3579c9b7 lib: seq-range-array - add range changes
Phil Carmody <phil@dovecot.fi>
parents: 18137
diff changeset
90 #define SEQ_RANGE_TEST_COUNT 20000
9425
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
91 unsigned char shadowbuf[SEQ_RANGE_TEST_BUFSIZE];
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
92 ARRAY_TYPE(seq_range) range;
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
93 const struct seq_range *seqs;
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
94 uint32_t seq1, seq2;
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
95 unsigned int i, j, ret, ret2, count;
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
96 int test = -1;
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
97
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
98 ret = ret2 = 0;
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
99 i_array_init(&range, 1);
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
100 memset(shadowbuf, 0, sizeof(shadowbuf));
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
101 for (i = 0; i < SEQ_RANGE_TEST_COUNT; i++) {
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
102 seq1 = rand() % SEQ_RANGE_TEST_BUFSIZE;
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
103 seq2 = seq1 + rand() % (SEQ_RANGE_TEST_BUFSIZE - seq1);
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
104 test = rand() % 4;
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
105 switch (test) {
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
106 case 0:
18190
230f3579c9b7 lib: seq-range-array - add range changes
Phil Carmody <phil@dovecot.fi>
parents: 18137
diff changeset
107 ret = seq_range_array_add(&range, seq1) ? 0 : 1; /* FALSE == added */
230f3579c9b7 lib: seq-range-array - add range changes
Phil Carmody <phil@dovecot.fi>
parents: 18137
diff changeset
108 ret2 = shadowbuf[seq1] == 0 ? 1 : 0;
9425
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
109 shadowbuf[seq1] = 1;
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
110 break;
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
111 case 1:
18190
230f3579c9b7 lib: seq-range-array - add range changes
Phil Carmody <phil@dovecot.fi>
parents: 18137
diff changeset
112 ret = seq_range_array_add_range_count(&range, seq1, seq2);
230f3579c9b7 lib: seq-range-array - add range changes
Phil Carmody <phil@dovecot.fi>
parents: 18137
diff changeset
113 for (ret2 = 0; seq1 <= seq2; seq1++) {
230f3579c9b7 lib: seq-range-array - add range changes
Phil Carmody <phil@dovecot.fi>
parents: 18137
diff changeset
114 if (shadowbuf[seq1] == 0) {
230f3579c9b7 lib: seq-range-array - add range changes
Phil Carmody <phil@dovecot.fi>
parents: 18137
diff changeset
115 ret2++;
230f3579c9b7 lib: seq-range-array - add range changes
Phil Carmody <phil@dovecot.fi>
parents: 18137
diff changeset
116 shadowbuf[seq1] = 1;
230f3579c9b7 lib: seq-range-array - add range changes
Phil Carmody <phil@dovecot.fi>
parents: 18137
diff changeset
117 }
230f3579c9b7 lib: seq-range-array - add range changes
Phil Carmody <phil@dovecot.fi>
parents: 18137
diff changeset
118 }
9425
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
119 break;
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
120 case 2:
14685
67b9119fbd09 seq-range-array: Reverted most of recent API changes.
Timo Sirainen <tss@iki.fi>
parents: 14682
diff changeset
121 ret = seq_range_array_remove(&range, seq1) ? 1 : 0;
9425
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
122 ret2 = shadowbuf[seq1] != 0 ? 1 : 0;
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
123 shadowbuf[seq1] = 0;
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
124 break;
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
125 case 3:
14685
67b9119fbd09 seq-range-array: Reverted most of recent API changes.
Timo Sirainen <tss@iki.fi>
parents: 14682
diff changeset
126 ret = seq_range_array_remove_range(&range, seq1, seq2);
9425
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
127 for (ret2 = 0; seq1 <= seq2; seq1++) {
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
128 if (shadowbuf[seq1] != 0) {
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
129 ret2++;
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
130 shadowbuf[seq1] = 0;
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
131 }
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
132 }
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
133 break;
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
134 }
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
135 if (ret != ret2)
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
136 break;
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
137
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
138 seqs = array_get(&range, &count);
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
139 for (j = 0, seq1 = 0; j < count; j++) {
14527
bac5e1dae4ed seq_range_array_add(): Ranges weren't always merged when they could have.
Timo Sirainen <tss@iki.fi>
parents: 14133
diff changeset
140 if (j > 0 && seqs[j-1].seq2+1 >= seqs[j].seq1)
9425
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
141 goto fail;
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
142 for (; seq1 < seqs[j].seq1; seq1++) {
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
143 if (shadowbuf[seq1] != 0)
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
144 goto fail;
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
145 }
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
146 for (; seq1 <= seqs[j].seq2; seq1++) {
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
147 if (shadowbuf[seq1] == 0)
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
148 goto fail;
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
149 }
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
150 }
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
151 i_assert(seq1 <= SEQ_RANGE_TEST_BUFSIZE);
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
152 for (; seq1 < SEQ_RANGE_TEST_BUFSIZE; seq1++) {
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
153 if (shadowbuf[seq1] != 0)
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
154 goto fail;
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
155 }
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
156 }
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
157 fail:
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
158 if (i == SEQ_RANGE_TEST_COUNT)
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
159 test_out("seq_range_array random", TRUE);
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
160 else {
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
161 test_out_reason("seq_range_array random", FALSE,
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
162 t_strdup_printf("round %u test %d failed", i, test));
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
163 }
17780
c749a40eda0a lib: test-seq-range-array - clean up array after use
Phil Carmody <phil@dovecot.fi>
parents: 17312
diff changeset
164 array_free(&range);
9425
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
165 }
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
166
21277
14209dd0b677 lib: Improve seq_range_array_invert() unit tests
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21273
diff changeset
167 static void test_seq_range_array_invert_minmax(uint32_t min, uint32_t max)
14209dd0b677 lib: Improve seq_range_array_invert() unit tests
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21273
diff changeset
168 {
14209dd0b677 lib: Improve seq_range_array_invert() unit tests
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21273
diff changeset
169 ARRAY_TYPE(seq_range) range = ARRAY_INIT;
14209dd0b677 lib: Improve seq_range_array_invert() unit tests
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21273
diff changeset
170 struct seq_range_iter iter;
14209dd0b677 lib: Improve seq_range_array_invert() unit tests
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21273
diff changeset
171 unsigned int n, inverse_mask, mask_inside, mask_size = max-min+1;
14209dd0b677 lib: Improve seq_range_array_invert() unit tests
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21273
diff changeset
172 uint32_t seq;
14209dd0b677 lib: Improve seq_range_array_invert() unit tests
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21273
diff changeset
173
14209dd0b677 lib: Improve seq_range_array_invert() unit tests
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21273
diff changeset
174 i_assert(mask_size <= sizeof(unsigned int)*8);
14209dd0b677 lib: Improve seq_range_array_invert() unit tests
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21273
diff changeset
175 t_array_init(&range, 16);
14209dd0b677 lib: Improve seq_range_array_invert() unit tests
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21273
diff changeset
176 for (unsigned int mask = 0; mask < mask_size; mask++) {
14209dd0b677 lib: Improve seq_range_array_invert() unit tests
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21273
diff changeset
177 array_clear(&range);
14209dd0b677 lib: Improve seq_range_array_invert() unit tests
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21273
diff changeset
178 for (unsigned int i = 0; i < mask_size; i++) {
14209dd0b677 lib: Improve seq_range_array_invert() unit tests
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21273
diff changeset
179 if ((mask & (1 << i)) != 0)
14209dd0b677 lib: Improve seq_range_array_invert() unit tests
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21273
diff changeset
180 seq_range_array_add(&range, min+i);
14209dd0b677 lib: Improve seq_range_array_invert() unit tests
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21273
diff changeset
181 }
14209dd0b677 lib: Improve seq_range_array_invert() unit tests
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21273
diff changeset
182 seq_range_array_invert(&range, min, max);
14209dd0b677 lib: Improve seq_range_array_invert() unit tests
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21273
diff changeset
183
14209dd0b677 lib: Improve seq_range_array_invert() unit tests
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21273
diff changeset
184 inverse_mask = 0;
14209dd0b677 lib: Improve seq_range_array_invert() unit tests
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21273
diff changeset
185 seq_range_array_iter_init(&iter, &range); n = 0;
14209dd0b677 lib: Improve seq_range_array_invert() unit tests
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21273
diff changeset
186 while (seq_range_array_iter_nth(&iter, n++, &seq)) {
14209dd0b677 lib: Improve seq_range_array_invert() unit tests
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21273
diff changeset
187 test_assert(seq >= min && seq <= max);
14209dd0b677 lib: Improve seq_range_array_invert() unit tests
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21273
diff changeset
188 inverse_mask |= 1 << (seq-min);
14209dd0b677 lib: Improve seq_range_array_invert() unit tests
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21273
diff changeset
189 }
14209dd0b677 lib: Improve seq_range_array_invert() unit tests
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21273
diff changeset
190 mask_inside = ((1 << mask_size)-1);
14209dd0b677 lib: Improve seq_range_array_invert() unit tests
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21273
diff changeset
191 test_assert_idx((inverse_mask & ~mask_inside) == 0, mask);
14209dd0b677 lib: Improve seq_range_array_invert() unit tests
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21273
diff changeset
192 test_assert_idx(inverse_mask == (mask ^ mask_inside), mask);
14209dd0b677 lib: Improve seq_range_array_invert() unit tests
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21273
diff changeset
193 }
14209dd0b677 lib: Improve seq_range_array_invert() unit tests
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21273
diff changeset
194 }
14209dd0b677 lib: Improve seq_range_array_invert() unit tests
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21273
diff changeset
195
9425
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
196 static void test_seq_range_array_invert(void)
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
197 {
21277
14209dd0b677 lib: Improve seq_range_array_invert() unit tests
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21273
diff changeset
198 test_begin("seq_range_array_invert()");
14209dd0b677 lib: Improve seq_range_array_invert() unit tests
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21273
diff changeset
199 /* first numbers */
14209dd0b677 lib: Improve seq_range_array_invert() unit tests
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21273
diff changeset
200 for (unsigned int min = 0; min <= 7; min++) {
14209dd0b677 lib: Improve seq_range_array_invert() unit tests
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21273
diff changeset
201 for (unsigned int max = min; max <= 7; max++) T_BEGIN {
14209dd0b677 lib: Improve seq_range_array_invert() unit tests
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21273
diff changeset
202 test_seq_range_array_invert_minmax(min, max);
14209dd0b677 lib: Improve seq_range_array_invert() unit tests
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21273
diff changeset
203 } T_END;
9425
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
204 }
21277
14209dd0b677 lib: Improve seq_range_array_invert() unit tests
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21273
diff changeset
205 /* last numbers */
14209dd0b677 lib: Improve seq_range_array_invert() unit tests
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21273
diff changeset
206 for (uint64_t min = 0xffffffff-7; min <= 0xffffffff; min++) {
14209dd0b677 lib: Improve seq_range_array_invert() unit tests
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21273
diff changeset
207 for (uint64_t max = min; max <= 0xffffffff; max++) T_BEGIN {
14209dd0b677 lib: Improve seq_range_array_invert() unit tests
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21273
diff changeset
208 test_seq_range_array_invert_minmax(min, max);
14209dd0b677 lib: Improve seq_range_array_invert() unit tests
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21273
diff changeset
209 } T_END;
14209dd0b677 lib: Improve seq_range_array_invert() unit tests
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21273
diff changeset
210 }
14209dd0b677 lib: Improve seq_range_array_invert() unit tests
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21273
diff changeset
211 test_end();
9425
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
212 }
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
213
21273
ff92e16346c9 lib: Fix seq_range_array_invert() when input contains 2^32-1
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21259
diff changeset
214 static void test_seq_range_array_invert_edges(void)
ff92e16346c9 lib: Fix seq_range_array_invert() when input contains 2^32-1
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21259
diff changeset
215 {
ff92e16346c9 lib: Fix seq_range_array_invert() when input contains 2^32-1
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21259
diff changeset
216 const struct {
ff92e16346c9 lib: Fix seq_range_array_invert() when input contains 2^32-1
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21259
diff changeset
217 int64_t a_seq1, a_seq2, b_seq1, b_seq2;
ff92e16346c9 lib: Fix seq_range_array_invert() when input contains 2^32-1
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21259
diff changeset
218 int64_t resa_seq1, resa_seq2, resb_seq1, resb_seq2;
ff92e16346c9 lib: Fix seq_range_array_invert() when input contains 2^32-1
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21259
diff changeset
219 } tests[] = {
ff92e16346c9 lib: Fix seq_range_array_invert() when input contains 2^32-1
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21259
diff changeset
220 { -1, -1, -1, -1,
ff92e16346c9 lib: Fix seq_range_array_invert() when input contains 2^32-1
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21259
diff changeset
221 0, 0xffffffff, -1, -1 },
ff92e16346c9 lib: Fix seq_range_array_invert() when input contains 2^32-1
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21259
diff changeset
222 { 0, 0xffffffff, -1, -1,
ff92e16346c9 lib: Fix seq_range_array_invert() when input contains 2^32-1
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21259
diff changeset
223 -1, -1, -1, -1 },
ff92e16346c9 lib: Fix seq_range_array_invert() when input contains 2^32-1
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21259
diff changeset
224 { 0, 0xfffffffe, -1, -1,
ff92e16346c9 lib: Fix seq_range_array_invert() when input contains 2^32-1
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21259
diff changeset
225 0xffffffff, 0xffffffff, -1, -1 },
ff92e16346c9 lib: Fix seq_range_array_invert() when input contains 2^32-1
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21259
diff changeset
226 { 1, 0xfffffffe, -1, -1,
ff92e16346c9 lib: Fix seq_range_array_invert() when input contains 2^32-1
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21259
diff changeset
227 0, 0, 0xffffffff, 0xffffffff },
ff92e16346c9 lib: Fix seq_range_array_invert() when input contains 2^32-1
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21259
diff changeset
228 { 1, 0xffffffff, -1, -1,
ff92e16346c9 lib: Fix seq_range_array_invert() when input contains 2^32-1
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21259
diff changeset
229 0, 0, -1, -1 },
ff92e16346c9 lib: Fix seq_range_array_invert() when input contains 2^32-1
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21259
diff changeset
230 { 0, 0, 0xffffffff, 0xffffffff,
ff92e16346c9 lib: Fix seq_range_array_invert() when input contains 2^32-1
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21259
diff changeset
231 1, 0xfffffffe, -1, -1 },
ff92e16346c9 lib: Fix seq_range_array_invert() when input contains 2^32-1
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21259
diff changeset
232 { 0xffffffff, 0xffffffff, -1, -1,
ff92e16346c9 lib: Fix seq_range_array_invert() when input contains 2^32-1
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21259
diff changeset
233 0, 0xfffffffe, -1, -1 },
ff92e16346c9 lib: Fix seq_range_array_invert() when input contains 2^32-1
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21259
diff changeset
234 };
ff92e16346c9 lib: Fix seq_range_array_invert() when input contains 2^32-1
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21259
diff changeset
235 ARRAY_TYPE(seq_range) range = ARRAY_INIT;
ff92e16346c9 lib: Fix seq_range_array_invert() when input contains 2^32-1
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21259
diff changeset
236 const struct seq_range *result;
ff92e16346c9 lib: Fix seq_range_array_invert() when input contains 2^32-1
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21259
diff changeset
237 unsigned int count;
ff92e16346c9 lib: Fix seq_range_array_invert() when input contains 2^32-1
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21259
diff changeset
238
ff92e16346c9 lib: Fix seq_range_array_invert() when input contains 2^32-1
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21259
diff changeset
239 test_begin("seq_range_array_invert() edges");
ff92e16346c9 lib: Fix seq_range_array_invert() when input contains 2^32-1
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21259
diff changeset
240 for (unsigned int i = 0; i < N_ELEMENTS(tests); i++) T_BEGIN {
ff92e16346c9 lib: Fix seq_range_array_invert() when input contains 2^32-1
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21259
diff changeset
241 t_array_init(&range, 10);
ff92e16346c9 lib: Fix seq_range_array_invert() when input contains 2^32-1
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21259
diff changeset
242 if (tests[i].a_seq1 != -1)
ff92e16346c9 lib: Fix seq_range_array_invert() when input contains 2^32-1
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21259
diff changeset
243 seq_range_array_add_range(&range, tests[i].a_seq1, tests[i].a_seq2);
ff92e16346c9 lib: Fix seq_range_array_invert() when input contains 2^32-1
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21259
diff changeset
244 if (tests[i].b_seq1 != -1)
ff92e16346c9 lib: Fix seq_range_array_invert() when input contains 2^32-1
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21259
diff changeset
245 seq_range_array_add_range(&range, tests[i].b_seq1, tests[i].b_seq2);
ff92e16346c9 lib: Fix seq_range_array_invert() when input contains 2^32-1
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21259
diff changeset
246 seq_range_array_invert(&range, 0, 0xffffffff);
ff92e16346c9 lib: Fix seq_range_array_invert() when input contains 2^32-1
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21259
diff changeset
247
ff92e16346c9 lib: Fix seq_range_array_invert() when input contains 2^32-1
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21259
diff changeset
248 result = array_get(&range, &count);
ff92e16346c9 lib: Fix seq_range_array_invert() when input contains 2^32-1
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21259
diff changeset
249 if (tests[i].resa_seq1 == -1)
ff92e16346c9 lib: Fix seq_range_array_invert() when input contains 2^32-1
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21259
diff changeset
250 test_assert_idx(count == 0, i);
ff92e16346c9 lib: Fix seq_range_array_invert() when input contains 2^32-1
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21259
diff changeset
251 else {
ff92e16346c9 lib: Fix seq_range_array_invert() when input contains 2^32-1
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21259
diff changeset
252 test_assert(result[0].seq1 == tests[i].resa_seq1);
ff92e16346c9 lib: Fix seq_range_array_invert() when input contains 2^32-1
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21259
diff changeset
253 test_assert(result[0].seq2 == tests[i].resa_seq2);
ff92e16346c9 lib: Fix seq_range_array_invert() when input contains 2^32-1
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21259
diff changeset
254 if (tests[i].resb_seq1 == -1)
ff92e16346c9 lib: Fix seq_range_array_invert() when input contains 2^32-1
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21259
diff changeset
255 test_assert_idx(count == 1, i);
ff92e16346c9 lib: Fix seq_range_array_invert() when input contains 2^32-1
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21259
diff changeset
256 else {
ff92e16346c9 lib: Fix seq_range_array_invert() when input contains 2^32-1
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21259
diff changeset
257 test_assert(result[1].seq1 == tests[i].resb_seq1);
ff92e16346c9 lib: Fix seq_range_array_invert() when input contains 2^32-1
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21259
diff changeset
258 test_assert(result[1].seq2 == tests[i].resb_seq2);
ff92e16346c9 lib: Fix seq_range_array_invert() when input contains 2^32-1
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21259
diff changeset
259 }
ff92e16346c9 lib: Fix seq_range_array_invert() when input contains 2^32-1
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21259
diff changeset
260 }
ff92e16346c9 lib: Fix seq_range_array_invert() when input contains 2^32-1
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21259
diff changeset
261 } T_END;
ff92e16346c9 lib: Fix seq_range_array_invert() when input contains 2^32-1
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21259
diff changeset
262 test_end();
ff92e16346c9 lib: Fix seq_range_array_invert() when input contains 2^32-1
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21259
diff changeset
263 }
ff92e16346c9 lib: Fix seq_range_array_invert() when input contains 2^32-1
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21259
diff changeset
264
9425
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
265 static void test_seq_range_create(ARRAY_TYPE(seq_range) *array, uint8_t byte)
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
266 {
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
267 unsigned int i;
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
268
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
269 array_clear(array);
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
270 for (i = 0; i < 8; i++) {
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
271 if ((byte & (1 << i)) != 0)
14676
69ba6977bed8 seq_range_array_add() API changed. Added other functions to provide the less common use cases.
Timo Sirainen <tss@iki.fi>
parents: 14527
diff changeset
272 seq_range_array_add(array, i + 1);
9425
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
273 }
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
274 }
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
275
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
276 static void test_seq_range_array_have_common(void)
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
277 {
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
278 ARRAY_TYPE(seq_range) arr1, arr2;
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
279 unsigned int i, j;
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
280 bool ret1, ret2, success = TRUE;
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
281
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
282 t_array_init(&arr1, 8);
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
283 t_array_init(&arr2, 8);
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
284 for (i = 0; i < 256; i++) {
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
285 test_seq_range_create(&arr1, i);
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
286 for (j = 0; j < 256; j++) {
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
287 test_seq_range_create(&arr2, j);
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
288 ret1 = seq_range_array_have_common(&arr1, &arr2);
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
289 ret2 = (i & j) != 0;
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
290 if (ret1 != ret2)
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
291 success = FALSE;
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
292 }
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
293 }
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
294 test_out("seq_range_array_have_common()", success);
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
295 }
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
296
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
297 void test_seq_range_array(void)
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
298 {
15907
db0ada89b81a seq_range_array_add(): Fixed handling sequence ranges that contain zeros.
Timo Sirainen <tss@iki.fi>
parents: 15904
diff changeset
299 test_seq_range_array_add_boundaries();
14527
bac5e1dae4ed seq_range_array_add(): Ranges weren't always merged when they could have.
Timo Sirainen <tss@iki.fi>
parents: 14133
diff changeset
300 test_seq_range_array_add_merge();
17312
0d237a4dacd2 Added seq_range_array_remove_nth()
Timo Sirainen <tss@iki.fi>
parents: 17130
diff changeset
301 test_seq_range_array_remove_nth();
9425
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
302 test_seq_range_array_invert();
21273
ff92e16346c9 lib: Fix seq_range_array_invert() when input contains 2^32-1
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 21259
diff changeset
303 test_seq_range_array_invert_edges();
9425
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
304 test_seq_range_array_have_common();
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
305 test_seq_range_array_random();
810e36796e3d liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
306 }