test-lib.c revision e4cebacdec9c9e5b685dde5f7cbf7a5cf7e1d248
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen/* Copyright (c) 2007-2008 Dovecot authors, see the included COPYING file */
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainenstatic void test_array(void)
d6badc27cd6e8d3398877b6766cb0aaeef3a7800Timo Sirainen int input[] = { -1234567890, -272585721, 2724859223, 824725652 };
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen unsigned int i, j;
aa38d1a0945f0bc13a225d043f53fad2eec666b1Timo Sirainen output = i == 0 ? NULL : array_idx(&intarr, 0);
aa38d1a0945f0bc13a225d043f53fad2eec666b1Timo Sirainen for (j = 0; j < i; j++) {
1175f27441385a7011629f295f42708f9a3a4ffcTimo Sirainenstatic void test_base64_encode(void)
72cbf33ae81fde08384d30c779ff540752d9256cTimo Sirainen static const char *input[] = {
d6badc27cd6e8d3398877b6766cb0aaeef3a7800Timo Sirainen "hello world",
d6badc27cd6e8d3398877b6766cb0aaeef3a7800Timo Sirainen "foo barits",
687bb904e1bb76c21a6e392f60c990486b298ea4Timo Sirainen static const char *output[] = {
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen "aGVsbG8gd29ybGQ=",
1b3bb8d39686ed24730cbc31cc9a33dc62c8c6c3Timo Sirainen "Zm9vIGJhcml0cw==",
406393bc328f056c49df0804f894ac2070aa5846Timo Sirainen "anVzdCBuaWlu"
aa38d1a0945f0bc13a225d043f53fad2eec666b1Timo Sirainen unsigned int i;
d6badc27cd6e8d3398877b6766cb0aaeef3a7800Timo Sirainen base64_encode(input[i], strlen(input[i]), str);
24fc71a693331ffe77e2b6d81c70aca6fa055e47Timo Sirainen test_out(t_strdup_printf("base64_encode(%d)", i), success);
8d80659e504ffb34bb0c6a633184fece35751b18Timo Sirainen unsigned int src_pos;
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainenstatic void test_base64_decode(void)
static const char *input[] = {
int ret;
bool success;
src_pos = 0;
static void test_bsearch_insert_pos(void)
static const unsigned int input[] = {
const unsigned int *cur;
bool success;
else if (idx == 0)
if (!success)
success);
static void test_buffer(void)
unsigned int i, shadowbuf_size;
bool zero;
for (i = 0; i < BUF_TEST_SIZE; i++)
shadowbuf_size = 0;
for (i = 0; i < BUF_TEST_COUNT; i++) {
switch (test) {
if (!zero) {
if (!zero) {
if (!zero) {
if (shadowbuf_size == 0)
if (i == BUF_TEST_COUNT)
unsigned int n, i, count;
if (i == deleted_n)
return FALSE;
return TRUE;
return NULL;
static void test_aqueue(void)
T_BEGIN {
} T_END;
for (i = 0; i < size; i++) {
if (bytes[i] != b)
return FALSE;
return TRUE;
static void test_mempool_alloconly(void)
struct test_net_is_in_network_input {
const char *ip;
const char *net;
unsigned int bits;
bool ret;
static void test_net_is_in_network(void)
#ifdef HAVE_IPV6
bool success;
struct pq_test_item {
int num;
static void test_priorityq(void)
static const int input[] = {
static const int output[] = {
int prev;
for (j = 0; j < PQ_MAX_ITEMS; j++) {
for (j = 0; j < PQ_MAX_ITEMS; j++) {
prev = 0;
for (j = 0; j < PQ_MAX_ITEMS; j++) {
static void test_seq_range_array_random(void)
for (i = 0; i < SEQ_RANGE_TEST_COUNT; i++) {
switch (test) {
ret2++;
goto fail;
goto fail;
goto fail;
goto fail;
fail:
if (i == SEQ_RANGE_TEST_COUNT)
static void test_seq_range_array_invert(void)
static const unsigned int input[] = {
start = i;
for (j = start; j < i; j++) {
success);
static void test_seq_range_array_have_common(void)
ret2 = (i & j) != 0;
static void test_seq_range_array(void)
struct str_sanitize_input {
const char *str;
unsigned int max_len;
static void test_str_sanitize(void)
static const char *output[] = {
NULL,
const char *str;
bool success;
struct test_message_date_output {
int tz_offset;
bool ret;
struct test_utc_mktime_input {
static void test_utc_mktime(void)
#ifdef TIME_T_SIGNED
#ifdef TIME_T_SIGNED
time_t t;
bool success;
(long)t, (long)output[i]));
int main(void)
static void (*test_functions[])(void) = {
test_init();
T_BEGIN {
test_functions[i]();
} T_END;
return test_deinit();