Skip to content

Commit

Permalink
lib-mail: test-message-address - add more and better organized tests
Browse files Browse the repository at this point in the history
  • Loading branch information
sirainen committed Jun 12, 2017
1 parent 8a1087f commit 7b7f965
Showing 1 changed file with 74 additions and 18 deletions.
92 changes: 74 additions & 18 deletions src/lib-mail/test-message-address.c
Expand Up @@ -22,34 +22,90 @@ static void test_message_address(void)
const char *wanted_output;
struct message_address addr;
} tests[] = {
/* user@domain -> <user@domain> */
{ "user@domain", "<user@domain>",
{ NULL, NULL, NULL, "user", "domain", FALSE } },
{ "\"user\"@domain", "<user@domain>",
{ NULL, NULL, NULL, "user", "domain", FALSE } },
{ "\"user name\"@domain", "<\"user name\"@domain>",
{ NULL, NULL, NULL, "user name", "domain", FALSE } },
{ "\"user@na\\\\me\"@domain", "<\"user@na\\\\me\"@domain>",
{ NULL, NULL, NULL, "user@na\\me", "domain", FALSE } },
{ "\"user\\\"name\"@domain", "<\"user\\\"name\"@domain>",
{ NULL, NULL, NULL, "user\"name", "domain", FALSE } },
{ "\"\"@domain", "<\"\"@domain>",
{ NULL, NULL, NULL, "", "domain", FALSE } },
{ "@domain", "<\"\"@domain>",
{ NULL, NULL, NULL, "", "domain", TRUE } },

/* <user@domain> -> <user@domain> */
{ "<user@domain>", NULL,
{ NULL, NULL, NULL, "user", "domain", FALSE } },
{ "<\"user\"@domain>", "<user@domain>",
{ NULL, NULL, NULL, "user", "domain", FALSE } },
{ "<\"user name\"@domain>", NULL,
{ NULL, NULL, NULL, "user name", "domain", FALSE } },
{ "<\"user@na\\\\me\"@domain>", NULL,
{ NULL, NULL, NULL, "user@na\\me", "domain", FALSE } },
{ "<\"user\\\"name\"@domain>", NULL,
{ NULL, NULL, NULL, "user\"name", "domain", FALSE } },
{ "<\"\"@domain>", NULL,
{ NULL, NULL, NULL, "", "domain", FALSE } },
{ "<@route>", "<@route:\"\">",
{ NULL, NULL, "@route", "", "", TRUE } },
{ "<\"\"@domain>", "<\"\"@domain>",
{ NULL, NULL, NULL, "", "domain", FALSE } },
{ "foo bar <user@domain>", "\"foo bar\" <user@domain>",
{ NULL, "foo bar", NULL, "user", "domain", FALSE } },
{ "\"foo bar\" <user@domain>", NULL,
{ NULL, "foo bar", NULL, "user", "domain", FALSE } },
{ "\"foo: <a@b>;,\" <user@domain>", NULL,
{ NULL, "foo: <a@b>;,", NULL, "user", "domain", FALSE } },

/* user@domain (Display Name) -> "Display Name" <user@domain> */
{ "user@domain (DisplayName)", "DisplayName <user@domain>",
{ NULL, "DisplayName", NULL, "user", "domain", FALSE } },
{ "user@domain (Display Name)", "\"Display Name\" <user@domain>",
{ NULL, "Display Name", NULL, "user", "domain", FALSE } },
{ "user@domain (Display\"Name)", "\"Display\\\"Name\" <user@domain>",
{ NULL, "Display\"Name", NULL, "user", "domain", FALSE } },
{ "user (Display Name)", "\"Display Name\" <user>",
{ NULL, "Display Name", NULL, "user", "", TRUE } },
{ "@domain (Display Name)", "\"Display Name\" <\"\"@domain>",
{ NULL, "Display Name", NULL, "", "domain", TRUE } },

/* Display Name <user@domain> -> "Display Name" <user@domain> */
{ "DisplayName <user@domain>", NULL,
{ NULL, "DisplayName", NULL, "user", "domain", FALSE } },
{ "Display Name <user@domain>", "\"Display Name\" <user@domain>",
{ NULL, "Display Name", NULL, "user", "domain", FALSE } },
{ "\"Display Name\" <user@domain>", NULL,
{ NULL, "Display Name", NULL, "user", "domain", FALSE } },
{ "\"Display\\\"Name\" <user@domain>", NULL,
{ NULL, "Display\"Name", NULL, "user", "domain", FALSE } },
{ "Display Name <user>", "\"Display Name\" <user>",
{ NULL, "Display Name", NULL, "user", "", TRUE } },

/* <@route:user@domain> -> <@route:user@domain> */
{ "<@route:user@domain>", NULL,
{ NULL, NULL, "@route", "user", "domain", FALSE } },
{ "<@route,@route2:user@domain>", NULL,
{ NULL, NULL, "@route,@route2", "user", "domain", FALSE } },
{ "<@route@route2:user@domain>", "<@route,@route2:user@domain>",
{ NULL, NULL, "@route,@route2", "user", "domain", FALSE } },
{ "hello <@route ,@route2:user@domain>", "hello <@route,@route2:user@domain>",
{ NULL, "hello", "@route,@route2", "user", "domain", FALSE } },
{ "hello", "hello",
{ NULL, "hello", NULL, "", "", TRUE } },
{ "user (hello)", "hello <user>",
{ NULL, "hello", NULL, "user", "", TRUE } },
{ "hello <user>", "hello <user>",
{ NULL, "hello", NULL, "user", "", TRUE } },
{ "@domain", "<\"\"@domain>",
{ NULL, NULL, NULL, "", "domain", TRUE } },
{ "<@route@route2:user>", "<@route,@route2:user>",
{ NULL, NULL, "@route,@route2", "user", "", TRUE } },
{ "<@route@route2:\"\"@domain>", "<@route,@route2:\"\"@domain>",
{ NULL, NULL, "@route,@route2", "", "domain", FALSE } },

/* Display Name <@route:user@domain> ->
"Display Name" <@route:user@domain> */
{ "Display Name <@route:user@domain>", "\"Display Name\" <@route:user@domain>",
{ NULL, "Display Name", "@route", "user", "domain", FALSE } },
{ "Display Name <@route,@route2:user@domain>", "\"Display Name\" <@route,@route2:user@domain>",
{ NULL, "Display Name", "@route,@route2", "user", "domain", FALSE } },
{ "Display Name <@route@route2:user@domain>", "\"Display Name\" <@route,@route2:user@domain>",
{ NULL, "Display Name", "@route,@route2", "user", "domain", FALSE } },
{ "Display Name <@route@route2:user>", "\"Display Name\" <@route,@route2:user>",
{ NULL, "Display Name", "@route,@route2", "user", "", TRUE } },
{ "Display Name <@route@route2:\"\"@domain>", "\"Display Name\" <@route,@route2:\"\"@domain>",
{ NULL, "Display Name", "@route,@route2", "", "domain", FALSE } },

/* other tests: */
{ "\"foo: <a@b>;,\" <user@domain>", NULL,
{ NULL, "foo: <a@b>;,", NULL, "user", "domain", FALSE } },
};
static struct message_address group_prefix = {
NULL, NULL, NULL, "group", NULL, FALSE
Expand Down

0 comments on commit 7b7f965

Please sign in to comment.