diff --git a/src/lib-mail/test-message-address.c b/src/lib-mail/test-message-address.c index 4bcd3b6576..18f5cb8f02 100644 --- a/src/lib-mail/test-message-address.c +++ b/src/lib-mail/test-message-address.c @@ -22,34 +22,90 @@ static void test_message_address(void) const char *wanted_output; struct message_address addr; } tests[] = { + /* user@domain -> */ { "user@domain", "", { NULL, NULL, NULL, "user", "domain", FALSE } }, + { "\"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 } }, + + /* -> */ { "", NULL, { NULL, NULL, NULL, "user", "domain", FALSE } }, + { "<\"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 ", "\"foo bar\" ", - { NULL, "foo bar", NULL, "user", "domain", FALSE } }, - { "\"foo bar\" ", NULL, - { NULL, "foo bar", NULL, "user", "domain", FALSE } }, - { "\"foo: ;,\" ", NULL, - { NULL, "foo: ;,", NULL, "user", "domain", FALSE } }, + + /* user@domain (Display Name) -> "Display Name" */ + { "user@domain (DisplayName)", "DisplayName ", + { NULL, "DisplayName", NULL, "user", "domain", FALSE } }, + { "user@domain (Display Name)", "\"Display Name\" ", + { NULL, "Display Name", NULL, "user", "domain", FALSE } }, + { "user@domain (Display\"Name)", "\"Display\\\"Name\" ", + { NULL, "Display\"Name", NULL, "user", "domain", FALSE } }, + { "user (Display Name)", "\"Display Name\" ", + { NULL, "Display Name", NULL, "user", "", TRUE } }, + { "@domain (Display Name)", "\"Display Name\" <\"\"@domain>", + { NULL, "Display Name", NULL, "", "domain", TRUE } }, + + /* Display Name -> "Display Name" */ + { "DisplayName ", NULL, + { NULL, "DisplayName", NULL, "user", "domain", FALSE } }, + { "Display Name ", "\"Display Name\" ", + { NULL, "Display Name", NULL, "user", "domain", FALSE } }, + { "\"Display Name\" ", NULL, + { NULL, "Display Name", NULL, "user", "domain", FALSE } }, + { "\"Display\\\"Name\" ", NULL, + { NULL, "Display\"Name", NULL, "user", "domain", FALSE } }, + { "Display Name ", "\"Display Name\" ", + { 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 ", - { NULL, "hello", NULL, "user", "", TRUE } }, - { "hello ", "hello ", - { 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: ;,\" ", NULL, + { NULL, "foo: ;,", NULL, "user", "domain", FALSE } }, }; static struct message_address group_prefix = { NULL, NULL, NULL, "group", NULL, FALSE