# HG changeset patch # User Paul Aurich # Date 1247697070 0 # Node ID 090dc513552f7b848ff29dbe94f57b2afdaf31c9 # Parent 97eb110550ada5a755402c8dec504da6af89414d Ensure UTF-8 strdown is mostly working correctly. I'm concerned by this from the g_utf8_strdown manpage: "Converts all Unicode characters in the string that have a case to lowercase. The exact manner that this is done depends on the current locale, and may result in the number of characters in the string changing." Further tests that exercise both of those possibilities (ugh, locale-dependence) are extremely welcome. diff -r 97eb110550ad -r 090dc513552f libpurple/tests/test_jabber_jutil.c --- a/libpurple/tests/test_jabber_jutil.c Wed Jul 15 18:27:37 2009 +0000 +++ b/libpurple/tests/test_jabber_jutil.c Wed Jul 15 22:31:10 2009 +0000 @@ -80,6 +80,17 @@ jabber_id_free(jid); \ } +#define assert_jid_parts(expect_node, expect_domain, str) { \ + JabberID *jid = jabber_id_new(str); \ + fail_if(jid == NULL, "JID '%s' is valid but jabber_id_new() rejected it", str); \ + fail_if(jid->node == NULL, "JID '%s' is valid but jabber_id_new() didn't return a node", str); \ + fail_if(jid->domain == NULL, "JID '%s' is valid but jabber_id_new() didn't return a domain", str); \ + fail_if(jid->resource != NULL, "JID '%s' doesn't contain a resource", str); \ + assert_string_equal(expect_node, jid->node); \ + assert_string_equal(expect_domain, jid->domain); \ + jabber_id_free(jid); \ +} + START_TEST(test_jabber_id_new) { assert_valid_jid("gmail.com"); @@ -117,6 +128,12 @@ assert_invalid_jid("mark.doliner@gmail\\stuff.org"); assert_invalid_jid("paul@[::1]124"); assert_invalid_jid("paul@2[::1]124/as"); + + /* Ensure that jabber_id_new is properly lowercasing node and domains */ + assert_jid_parts("paul", "darkrain42.org", "PaUL@darkrain42.org"); + assert_jid_parts("paul", "darkrain42.org", "paul@DaRkRaIn42.org"); + assert_jid_parts("ꙥ", "darkrain42.org", "Ꙥ@darkrain42.org"); + assert_jid_parts("paul", "өarkrain42.org", "paul@Өarkrain42.org"); } END_TEST