public void ParseAddresses_WithManyComplexAddresses_ShouldReadCorrectly()
{
string addresses = string.Format("{0},{1},{2},{3},{4},{5},{6}",
"\"Dr M\u00FCller\" [email protected]",
"(comment)this.test.this(comment)@(comment)this.test.this(comment)",
"[email protected]",
"[email protected]",
"(comment)this.test.this(comment)<(comment)this.test.this(comment)@(comment)[ test this ](comment)>",
"\"test\" <[email protected]>",
"(comment)\" asciin;,oqu o.tesws \"(comment)<(comment)\" asciin;,oqu o.tesws \"(comment)@(comment)this.test.this(comment)>");
IList<MailAddress> result = MailAddressParser.ParseMultipleAddresses(addresses);
Assert.Equal(7, result.Count);
Assert.Equal("Dr M\u00FCller", result[0].DisplayName);
Assert.Equal("test", result[0].User);
Assert.Equal("mail.com", result[0].Host);
Assert.Equal(string.Empty, result[1].DisplayName);
Assert.Equal("this.test.this", result[1].User);
Assert.Equal("this.test.this", result[1].Host);
Assert.Equal(string.Empty, result[2].DisplayName);
Assert.Equal("jeff", result[2].User);
Assert.Equal("example.com", result[2].Host);
Assert.Equal(string.Empty, result[3].DisplayName);
Assert.Equal("jeff2", result[3].User);
Assert.Equal("example.org", result[3].Host);
Assert.Equal("(comment)this.test.this(comment)", result[4].DisplayName);
Assert.Equal("this.test.this", result[4].User);
Assert.Equal("[ test this ]", result[4].Host);
Assert.Equal("test", result[5].DisplayName);
Assert.Equal("a..b_b", result[5].User);
Assert.Equal("example.com", result[5].Host);
Assert.Equal(" asciin;,oqu o.tesws ", result[6].DisplayName);
Assert.Equal("\" asciin;,oqu o.tesws \"", result[6].User);
Assert.Equal("this.test.this", result[6].Host);
}
}