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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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 }