Mercurial > dovecot > core-2.2
annotate src/lib/test-buffer.c @ 22664:fea53c2725c0
director: Fix director_max_parallel_moves/kicks type
Should be uint, not time.
author | Timo Sirainen <timo.sirainen@dovecot.fi> |
---|---|
date | Thu, 09 Nov 2017 12:24:16 +0200 |
parents | 2e2563132d5f |
children | cb108f786fb4 |
rev | line source |
---|---|
21390
2e2563132d5f
Updated copyright notices to include the year 2017.
Stephan Bosch <stephan.bosch@dovecot.fi>
parents:
21214
diff
changeset
|
1 /* Copyright (c) 2007-2017 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 "buffer.h" |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
5 |
21059
3ec42e5d917e
lib: Updated buffer_set_used_size() comment and added unit test.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19552
diff
changeset
|
6 static void test_buffer_random(void) |
9425
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
7 { |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
8 #define BUF_TEST_SIZE (1024*2) |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
9 #define BUF_TEST_COUNT 1000 |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
10 buffer_t *buf; |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
11 unsigned char *p, testdata[BUF_TEST_SIZE], shadowbuf[BUF_TEST_SIZE]; |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
12 unsigned int i, shadowbuf_size; |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
13 size_t pos, pos2, size; |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
14 int test = -1; |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
15 bool zero; |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
16 |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
17 buf = buffer_create_dynamic(default_pool, 1); |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
18 for (i = 0; i < BUF_TEST_SIZE; i++) |
17529
60fbbf7ea75d
lib: two quite literally random little cleanups
Phil Carmody <phil@dovecot.fi>
parents:
17130
diff
changeset
|
19 testdata[i] = rand(); |
9425
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
20 memset(shadowbuf, 0, sizeof(shadowbuf)); |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
21 |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
22 shadowbuf_size = 0; |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
23 for (i = 0; i < BUF_TEST_COUNT; i++) { |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
24 if (buf->used == BUF_TEST_SIZE) { |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
25 size = shadowbuf_size = rand() % (buf->used - 1); |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
26 buffer_set_used_size(buf, size); |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
27 memset(shadowbuf + shadowbuf_size, 0, |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
28 BUF_TEST_SIZE - shadowbuf_size); |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
29 i_assert(buf->used < BUF_TEST_SIZE); |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
30 } |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
31 |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
32 test = rand() % 6; |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
33 zero = rand() % 10 == 0; |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
34 switch (test) { |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
35 case 0: |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
36 pos = rand() % (BUF_TEST_SIZE-1); |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
37 size = rand() % (BUF_TEST_SIZE - pos); |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
38 if (!zero) { |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
39 buffer_write(buf, pos, testdata, size); |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
40 memcpy(shadowbuf + pos, testdata, size); |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
41 } else { |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
42 buffer_write_zero(buf, pos, size); |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
43 memset(shadowbuf + pos, 0, size); |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
44 } |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
45 if (pos + size > shadowbuf_size) |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
46 shadowbuf_size = pos + size; |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
47 break; |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
48 case 1: |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
49 size = rand() % (BUF_TEST_SIZE - buf->used); |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
50 if (!zero) { |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
51 buffer_append(buf, testdata, size); |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
52 memcpy(shadowbuf + shadowbuf_size, |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
53 testdata, size); |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
54 } else { |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
55 buffer_append_zero(buf, size); |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
56 memset(shadowbuf + shadowbuf_size, 0, size); |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
57 } |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
58 shadowbuf_size += size; |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
59 break; |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
60 case 2: |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
61 pos = rand() % (BUF_TEST_SIZE-1); |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
62 size = rand() % (BUF_TEST_SIZE - I_MAX(buf->used, pos)); |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
63 if (!zero) { |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
64 buffer_insert(buf, pos, testdata, size); |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
65 memmove(shadowbuf + pos + size, |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
66 shadowbuf + pos, |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
67 BUF_TEST_SIZE - (pos + size)); |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
68 memcpy(shadowbuf + pos, testdata, size); |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
69 } else { |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
70 buffer_insert_zero(buf, pos, size); |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
71 memmove(shadowbuf + pos + size, |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
72 shadowbuf + pos, |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
73 BUF_TEST_SIZE - (pos + size)); |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
74 memset(shadowbuf + pos, 0, size); |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
75 } |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
76 if (pos < shadowbuf_size) |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
77 shadowbuf_size += size; |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
78 else |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
79 shadowbuf_size = pos + size; |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
80 break; |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
81 case 3: |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
82 pos = rand() % (BUF_TEST_SIZE-1); |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
83 size = rand() % (BUF_TEST_SIZE - pos); |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
84 buffer_delete(buf, pos, size); |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
85 if (pos < shadowbuf_size) { |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
86 if (pos + size > shadowbuf_size) |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
87 size = shadowbuf_size - pos; |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
88 memmove(shadowbuf + pos, |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
89 shadowbuf + pos + size, |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
90 BUF_TEST_SIZE - (pos + size)); |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
91 |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
92 shadowbuf_size -= size; |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
93 memset(shadowbuf + shadowbuf_size, 0, |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
94 BUF_TEST_SIZE - shadowbuf_size); |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
95 } |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
96 break; |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
97 case 4: |
17973
a9503b723f8c
lib: test-buffer was randomly crashing with SIGFPE
Timo Sirainen <tss@iki.fi>
parents:
17533
diff
changeset
|
98 if (shadowbuf_size <= 1) |
9425
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
99 break; |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
100 pos = rand() % (shadowbuf_size-1); /* dest */ |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
101 pos2 = rand() % (shadowbuf_size-1); /* source */ |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
102 size = rand() % (shadowbuf_size - I_MAX(pos, pos2)); |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
103 buffer_copy(buf, pos, buf, pos2, size); |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
104 memmove(shadowbuf + pos, |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
105 shadowbuf + pos2, size); |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
106 if (pos > pos2 && pos + size > shadowbuf_size) |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
107 shadowbuf_size = pos + size; |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
108 break; |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
109 case 5: |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
110 pos = rand() % (BUF_TEST_SIZE-1); |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
111 size = rand() % (BUF_TEST_SIZE - pos); |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
112 p = buffer_get_space_unsafe(buf, pos, size); |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
113 memcpy(p, testdata, size); |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
114 memcpy(shadowbuf + pos, testdata, size); |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
115 if (pos + size > shadowbuf_size) |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
116 shadowbuf_size = pos + size; |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
117 break; |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
118 } |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
119 i_assert(shadowbuf_size <= BUF_TEST_SIZE); |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
120 |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
121 if (buf->used != shadowbuf_size || |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
122 memcmp(buf->data, shadowbuf, buf->used) != 0) |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
123 break; |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
124 } |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
125 if (i == BUF_TEST_COUNT) |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
126 test_out("buffer", TRUE); |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
127 else { |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
128 test_out_reason("buffer", FALSE, |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
129 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
|
130 } |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
131 buffer_free(&buf); |
810e36796e3d
liblib unit tests are now split to separate files.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
132 } |
21059
3ec42e5d917e
lib: Updated buffer_set_used_size() comment and added unit test.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19552
diff
changeset
|
133 |
21214
06a5d5c99adb
lib: Clarify that buffer_write() zero-fills buffer when writing past its size
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
21060
diff
changeset
|
134 static void test_buffer_write(void) |
06a5d5c99adb
lib: Clarify that buffer_write() zero-fills buffer when writing past its size
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
21060
diff
changeset
|
135 { |
06a5d5c99adb
lib: Clarify that buffer_write() zero-fills buffer when writing past its size
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
21060
diff
changeset
|
136 buffer_t *buf; |
06a5d5c99adb
lib: Clarify that buffer_write() zero-fills buffer when writing past its size
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
21060
diff
changeset
|
137 |
06a5d5c99adb
lib: Clarify that buffer_write() zero-fills buffer when writing past its size
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
21060
diff
changeset
|
138 test_begin("buffer_write"); |
06a5d5c99adb
lib: Clarify that buffer_write() zero-fills buffer when writing past its size
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
21060
diff
changeset
|
139 buf = buffer_create_dynamic(pool_datastack_create(), 8); |
06a5d5c99adb
lib: Clarify that buffer_write() zero-fills buffer when writing past its size
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
21060
diff
changeset
|
140 buffer_write(buf, 5, buf, 0); |
06a5d5c99adb
lib: Clarify that buffer_write() zero-fills buffer when writing past its size
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
21060
diff
changeset
|
141 test_assert(buf->used == 5); |
06a5d5c99adb
lib: Clarify that buffer_write() zero-fills buffer when writing past its size
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
21060
diff
changeset
|
142 test_end(); |
06a5d5c99adb
lib: Clarify that buffer_write() zero-fills buffer when writing past its size
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
21060
diff
changeset
|
143 } |
06a5d5c99adb
lib: Clarify that buffer_write() zero-fills buffer when writing past its size
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
21060
diff
changeset
|
144 |
21059
3ec42e5d917e
lib: Updated buffer_set_used_size() comment and added unit test.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19552
diff
changeset
|
145 static void test_buffer_set_used_size(void) |
3ec42e5d917e
lib: Updated buffer_set_used_size() comment and added unit test.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19552
diff
changeset
|
146 { |
3ec42e5d917e
lib: Updated buffer_set_used_size() comment and added unit test.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19552
diff
changeset
|
147 buffer_t *buf; |
3ec42e5d917e
lib: Updated buffer_set_used_size() comment and added unit test.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19552
diff
changeset
|
148 |
3ec42e5d917e
lib: Updated buffer_set_used_size() comment and added unit test.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19552
diff
changeset
|
149 test_begin("buffer_set_used_size"); |
3ec42e5d917e
lib: Updated buffer_set_used_size() comment and added unit test.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19552
diff
changeset
|
150 buf = buffer_create_dynamic(pool_datastack_create(), 8); |
3ec42e5d917e
lib: Updated buffer_set_used_size() comment and added unit test.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19552
diff
changeset
|
151 memset(buffer_append_space_unsafe(buf, 7), 'a', 7); |
3ec42e5d917e
lib: Updated buffer_set_used_size() comment and added unit test.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19552
diff
changeset
|
152 buffer_set_used_size(buf, 4); |
3ec42e5d917e
lib: Updated buffer_set_used_size() comment and added unit test.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19552
diff
changeset
|
153 test_assert(memcmp(buffer_get_space_unsafe(buf, 0, 7), "aaaa\0\0\0", 7) == 0); |
3ec42e5d917e
lib: Updated buffer_set_used_size() comment and added unit test.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19552
diff
changeset
|
154 memset(buffer_get_space_unsafe(buf, 4, 7), 'b', 7); |
3ec42e5d917e
lib: Updated buffer_set_used_size() comment and added unit test.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19552
diff
changeset
|
155 buffer_set_used_size(buf, 10); |
3ec42e5d917e
lib: Updated buffer_set_used_size() comment and added unit test.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19552
diff
changeset
|
156 test_assert(memcmp(buffer_append_space_unsafe(buf, 1), "\0", 1) == 0); |
3ec42e5d917e
lib: Updated buffer_set_used_size() comment and added unit test.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19552
diff
changeset
|
157 buffer_set_used_size(buf, 11); |
3ec42e5d917e
lib: Updated buffer_set_used_size() comment and added unit test.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19552
diff
changeset
|
158 test_assert(memcmp(buffer_get_space_unsafe(buf, 0, 11), "aaaabbbbbb\0", 11) == 0); |
3ec42e5d917e
lib: Updated buffer_set_used_size() comment and added unit test.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19552
diff
changeset
|
159 test_end(); |
3ec42e5d917e
lib: Updated buffer_set_used_size() comment and added unit test.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19552
diff
changeset
|
160 } |
3ec42e5d917e
lib: Updated buffer_set_used_size() comment and added unit test.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19552
diff
changeset
|
161 |
21060
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
162 |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
163 #if 0 |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
164 |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
165 /* this code is left here to produce the output found in |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
166 * buffer.h should it be needed for debugging purposes */ |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
167 #include "str.h" |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
168 #include "hex-binary.h" |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
169 static const char *binary_to_10(const unsigned char *data, size_t size) |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
170 { |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
171 string_t *str = t_str_new(size*8); |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
172 |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
173 for (size_t i = 0; i < size; i++) { |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
174 for (int j = 0; j < 8; j++) { |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
175 if ((data[i] & (1 << (7-j))) != 0) |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
176 str_append_c(str, '1'); |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
177 else |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
178 str_append_c(str, '0'); |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
179 } |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
180 } |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
181 return str_c(str); |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
182 } |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
183 |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
184 static void test_foo(void) |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
185 { |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
186 buffer_t *buf = buffer_create_dynamic(default_pool, 100); |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
187 |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
188 for (int i = 1; i <= 24; i++) { |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
189 buffer_set_used_size(buf, 0); |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
190 buffer_append_c(buf, 0xff); |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
191 buffer_append_c(buf, 0xff); |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
192 buffer_append_c(buf, 0xff); |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
193 buffer_truncate_rshift_bits(buf, i); |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
194 printf("%2d bits: %24s %s\n", i, |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
195 binary_to_hex(buf->data, buf->used), |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
196 binary_to_10(buf->data, buf->used)); |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
197 } |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
198 } |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
199 |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
200 #endif |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
201 |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
202 static void test_buffer_truncate_bits(void) |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
203 { |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
204 buffer_t *buf; |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
205 test_begin("buffer_test_truncate_bits"); |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
206 |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
207 struct { |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
208 buffer_t input; |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
209 size_t bits; |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
210 buffer_t output; |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
211 } test_cases[] = { |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
212 { { "\xff\xff\xff", 3, {0} }, 0, { "", 0, {0} } }, |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
213 { { "\xff\xff\xff", 3, {0} }, 1, { "\x01", 1, {0} } }, |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
214 { { "\xff\xff\xff", 3, {0} }, 2, { "\x03", 1, {0} } }, |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
215 { { "\xff\xff\xff", 3, {0} }, 3, { "\x07", 1, {0} } }, |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
216 { { "\xff\xff\xff", 3, {0} }, 4, { "\x0f", 1, {0} } }, |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
217 { { "\xff\xff\xff", 3, {0} }, 5, { "\x1f", 1, {0} } }, |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
218 { { "\xff\xff\xff", 3, {0} }, 6, { "\x3f", 1, {0} } }, |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
219 { { "\xff\xff\xff", 3, {0} }, 7, { "\x7f", 1, {0} } }, |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
220 { { "\xff\xff\xff", 3, {0} }, 8, { "\xff", 1, {0} } }, |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
221 { { "\xff\xff\xff", 3, {0} }, 9, { "\x01\xff", 2, {0} } }, |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
222 { { "\xff\xff\xff", 3, {0} }, 10, { "\x03\xff", 2, {0} } }, |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
223 { { "\xff\xff\xff", 3, {0} }, 11, { "\x07\xff", 2, {0} } }, |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
224 { { "\xff\xff\xff", 3, {0} }, 12, { "\x0f\xff", 2, {0} } }, |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
225 { { "\xff\xff\xff", 3, {0} }, 13, { "\x1f\xff", 2, {0} } }, |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
226 { { "\xff\xff\xff", 3, {0} }, 14, { "\x3f\xff", 2, {0} } }, |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
227 { { "\xff\xff\xff", 3, {0} }, 15, { "\x7f\xff", 2, {0} } }, |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
228 { { "0123456789", 10, {0} }, 16, { "01", 2, {0} } }, |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
229 { { "0123456789", 10, {0} }, 24, { "012", 3, {0} } }, |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
230 { { "0123456789", 10, {0} }, 32, { "0123", 4, {0} } }, |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
231 { { "0123456789", 10, {0} }, 40, { "01234", 5, {0} } }, |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
232 { { "0123456789", 10, {0} }, 48, { "012345", 6, {0} } }, |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
233 { { "0123456789", 10, {0} }, 56, { "0123456", 7, {0} } }, |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
234 { { "0123456789", 10, {0} }, 64, { "01234567", 8, {0} } }, |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
235 { { "0123456789", 10, {0} }, 72, { "012345678", 9, {0} } }, |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
236 { { "0123456789", 10, {0} }, 80, { "0123456789", 10, {0} } }, |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
237 |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
238 { { "\x58\x11\xed\x02\x4d\x87\x4a\xe2\x5c\xb2\xfa\x69\xf0\xa9\x46\x2e\x04\xca\x5d\x82", 20, {0} }, |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
239 13, |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
240 { "\x0b\x02", 2, {0} } |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
241 }, |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
242 |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
243 /* special test cases for auth policy */ |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
244 |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
245 { { "\x34\x40\xc8\xc9\x3a\xb6\xe7\xc4\x3f\xc1\xc3\x4d\xd5\x56\xa3\xea\xfb\x5a\x33\x57\xac\x11\x39\x2c\x71\xcb\xee\xbb\xc8\x66\x2f\x64", 32, {0} }, |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
246 12, |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
247 { "\x03\x44", 2, {0} } |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
248 }, |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
249 |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
250 { { "\x49\xe5\x8a\x88\x76\xd3\x25\x68\xc9\x89\x4a\xe0\x64\xe4\x04\xf4\xf9\x13\xec\x88\x97\x47\x30\x7f\x3f\xcd\x8f\x74\x4f\x40\xd1\x25", 32, {0} }, |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
251 12, |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
252 { "\x04\x9e", 2, {0} } |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
253 }, |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
254 |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
255 { { "\x08\x3c\xdc\x14\x61\x80\x1c\xe8\x43\x81\x98\xfa\xc0\x64\x04\x7a\xa2\x73\x25\x6e\xe6\x4b\x85\x42\xd0\xe2\x78\xd7\x91\xb4\x89\x3f", 32, {0} }, |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
256 12, |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
257 { "\x00\x83", 2, {0} } |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
258 }, |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
259 |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
260 }; |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
261 |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
262 buf = buffer_create_dynamic(pool_datastack_create(), 10); |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
263 |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
264 for(size_t i = 0; i < N_ELEMENTS(test_cases); i++) { |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
265 buffer_set_used_size(buf, 0); |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
266 buffer_copy(buf, 0, &test_cases[i].input, 0, (size_t)-1); |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
267 buffer_truncate_rshift_bits(buf, test_cases[i].bits); |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
268 test_assert_idx(buffer_cmp(buf, &test_cases[i].output) == TRUE, i); |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
269 } |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
270 |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
271 test_end(); |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
272 } |
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
273 |
21059
3ec42e5d917e
lib: Updated buffer_set_used_size() comment and added unit test.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19552
diff
changeset
|
274 void test_buffer(void) |
3ec42e5d917e
lib: Updated buffer_set_used_size() comment and added unit test.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19552
diff
changeset
|
275 { |
3ec42e5d917e
lib: Updated buffer_set_used_size() comment and added unit test.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19552
diff
changeset
|
276 test_buffer_random(); |
21214
06a5d5c99adb
lib: Clarify that buffer_write() zero-fills buffer when writing past its size
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
21060
diff
changeset
|
277 test_buffer_write(); |
21059
3ec42e5d917e
lib: Updated buffer_set_used_size() comment and added unit test.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19552
diff
changeset
|
278 test_buffer_set_used_size(); |
21060
550a79f2a361
lib: Add unit test for buffer truncate
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21059
diff
changeset
|
279 test_buffer_truncate_bits(); |
21059
3ec42e5d917e
lib: Updated buffer_set_used_size() comment and added unit test.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19552
diff
changeset
|
280 } |