summaryrefslogtreecommitdiffstats
path: root/src/lib-mail/test-message-id.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib-mail/test-message-id.c')
-rw-r--r--src/lib-mail/test-message-id.c46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/lib-mail/test-message-id.c b/src/lib-mail/test-message-id.c
new file mode 100644
index 0000000..d5abf1f
--- /dev/null
+++ b/src/lib-mail/test-message-id.c
@@ -0,0 +1,46 @@
+/* Copyright (c) 2007-2018 Dovecot authors, see the included COPYING file */
+
+#include "lib.h"
+#include "message-id.h"
+#include "test-common.h"
+
+static void test_message_id_get_next(void)
+{
+ const char *input[] = {
+ "<foo@bar>",
+ "<foo@bar>,skipped,<foo2@bar2>",
+ "(c) < (c) foo (c) @ (c) bar (c) > (c)",
+ "<\"foo 2\"@bar>"
+ };
+ const char *output[] = {
+ "foo@bar", NULL,
+ "foo@bar", "foo2@bar2", NULL,
+ "foo@bar", NULL,
+ "foo 2@bar", NULL
+ };
+ const char *msgid, *next_msgid;
+ unsigned int i, j;
+
+ test_begin("message id parser");
+ for (i = 0, j = 0; i < N_ELEMENTS(input); i++) {
+ msgid = input[i];
+ while ((next_msgid = message_id_get_next(&msgid)) != NULL) {
+ if (output[j] == NULL)
+ break;
+ test_assert(strcmp(output[j], next_msgid) == 0);
+ j++;
+ }
+ test_assert(output[j++] == NULL && next_msgid == NULL);
+ }
+ test_assert(j == N_ELEMENTS(output));
+ test_end();
+}
+
+int main(void)
+{
+ static void (*const test_functions[])(void) = {
+ test_message_id_get_next,
+ NULL
+ };
+ return test_run(test_functions);
+}