changeset 22169:1c7f10f84fa2

lib-mail: test-message-address - add more and better organized tests
author Timo Sirainen <timo.sirainen@dovecot.fi>
date Wed, 07 Jun 2017 13:19:40 +0300
parents fb24444dd968
children 293249bf0b5a
files src/lib-mail/test-message-address.c
diffstat 1 files changed, 76 insertions(+), 20 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-mail/test-message-address.c	Wed Jun 07 12:58:21 2017 +0300
+++ b/src/lib-mail/test-message-address.c	Wed Jun 07 13:19:40 2017 +0300
@@ -22,34 +22,90 @@
 		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 } },
+
+		/* 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 } },
+		{ "<@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 } },
-		{ "<@route:user@domain>", NULL,
-		  { NULL, NULL, "@route", "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 } },
 	};
 	static struct message_address group_prefix = {
 		NULL, NULL, NULL, "group", NULL, FALSE