# HG changeset patch # User Mark Doliner # Date 1276549547 0 # Node ID d93865ec84d9262ffd698c3e28548e780bceecd4 # Parent cd891a88a8fb9e22b5de8849d3068ef1b1c6203e Expand our test for purple_email_is_valid(). I stumbled across a large list of valid and invalid email address and thought it'd make a good test. The ones that are commented out belong in their respective list, but our validate function doesn't catch them. I don't plan on changing our validate function, though. If anyone else wants to... more power to ya diff -r cd891a88a8fb -r d93865ec84d9 libpurple/tests/test_util.c --- a/libpurple/tests/test_util.c Mon Jun 14 15:59:18 2010 +0000 +++ b/libpurple/tests/test_util.c Mon Jun 14 21:05:47 2010 +0000 @@ -66,8 +66,57 @@ } END_TEST +/* + * Lists of valid and invalid email addresses comes from + * http://fightingforalostcause.net/misc/2006/compare-email-regex.php + */ +const char *valid_emails[] = { + "l3tt3rsAndNumb3rs@domain.com", + "has-dash@domain.com", + "hasApostrophe.o'leary@domain.org", + "uncommonTLD@domain.museum", + "uncommonTLD@domain.travel", + "uncommonTLD@domain.mobi", + "countryCodeTLD@domain.uk", + "countryCodeTLD@domain.rw", + "lettersInDomain@911.com", + "underscore_inLocal@domain.net", + "IPInsteadOfDomain@127.0.0.1", + /* "IPAndPort@127.0.0.1:25", */ + "subdomain@sub.domain.com", + "local@dash-inDomain.com", + "dot.inLocal@foo.com", + "a@singleLetterLocal.org", + "singleLetterDomain@x.org", + "&*=?^+{}'~@validCharsInLocal.net", + "foor@bar.newTLD" +}; + +const char *invalid_emails[] = { + "missingDomain@.com", + "@missingLocal.org", + "missingatSign.net", + "missingDot@com", + "two@@signs.com", + "colonButNoPort@127.0.0.1:", + "" + /* "someone-else@127.0.0.1.26", */ + /* ".localStartsWithDot@domain.com", */ + /* "localEndsWithDot.@domain.com", */ + /* "two..consecutiveDots@domain.com", */ + /* "domainStartsWithDash@-domain.com", */ + "domainEndsWithDash@domain-.com", + /* "numbersInTLD@domain.c0m", */ + /* "missingTLD@domain.", */ + "! \"#$%(),/;<>[]`|@invalidCharsInLocal.org", + "invalidCharsInDomain@! \"#$%(),/;<>_[]`|.org", + /* "local@SecondLevelDomainNamesAreInvalidIfTheyAreLongerThan64Charactersss.org" */ +}; + START_TEST(test_util_email_is_valid) { + size_t i; + fail_unless(purple_email_is_valid("purple-devel@lists.sf.net")); fail_if(purple_email_is_valid("purple-devel@@lists.sf.net")); fail_if(purple_email_is_valid("purple@devel@lists.sf.net")); @@ -77,6 +126,12 @@ fail_if(purple_email_is_valid("@lists.sf.net")); fail_if(purple_email_is_valid("")); fail_if(purple_email_is_valid("totally bogus")); + + for (i = 0; i < G_N_ELEMENTS(valid_emails); i++) + fail_unless(purple_email_is_valid(valid_emails[i]), "Email address was: %s", valid_emails[i]); + + for (i = 0; i < G_N_ELEMENTS(invalid_emails); i++) + fail_if(purple_email_is_valid(invalid_emails[i]), "Email address was: %s", invalid_emails[i]); } END_TEST