# HG changeset patch # User Mark Doliner # Date 1252045421 0 # Node ID 2da9e42667424d66126fe0628e667b87dec52543 # Parent 187014c2bc6eb00432a7989bad9923aadac14dd3 Add a test for qq's qq_encrypt function. Refs #10191. The string of length 7 demonstrates the bug: 7+16=23, but the qq_encrypt function at least thinks that it is writing 24 bytes diff -r 187014c2bc6e -r 2da9e4266742 libpurple/tests/Makefile.am --- a/libpurple/tests/Makefile.am Fri Sep 04 05:26:22 2009 +0000 +++ b/libpurple/tests/Makefile.am Fri Sep 04 06:23:41 2009 +0000 @@ -11,6 +11,7 @@ tests.h \ test_cipher.c \ test_jabber_jutil.c \ + test_qq.c \ test_yahoo_util.c \ test_util.c \ $(top_builddir)/libpurple/util.h @@ -28,6 +29,7 @@ @CHECK_LIBS@ \ $(GLIB_LIBS) \ $(top_builddir)/libpurple/protocols/jabber/libjabber.la \ + $(top_builddir)/libpurple/protocols/qq/libqq.la \ $(top_builddir)/libpurple/protocols/yahoo/libymsg.la \ $(top_builddir)/libpurple/libpurple.la diff -r 187014c2bc6e -r 2da9e4266742 libpurple/tests/check_libpurple.c --- a/libpurple/tests/check_libpurple.c Fri Sep 04 05:26:22 2009 +0000 +++ b/libpurple/tests/check_libpurple.c Fri Sep 04 06:23:41 2009 +0000 @@ -76,6 +76,7 @@ srunner_add_suite(sr, cipher_suite()); srunner_add_suite(sr, jabber_jutil_suite()); + srunner_add_suite(sr, qq_suite()); srunner_add_suite(sr, yahoo_util_suite()); srunner_add_suite(sr, util_suite()); diff -r 187014c2bc6e -r 2da9e4266742 libpurple/tests/test_qq.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libpurple/tests/test_qq.c Fri Sep 04 06:23:41 2009 +0000 @@ -0,0 +1,105 @@ +#include + +#include "tests.h" +#include "../protocols/qq/qq_crypt.h" + +START_TEST(test_qq_encrypt) +{ + const guint8 * const key = (guint8 *)"hamburger"; + guint8 crypted[80]; + gint ret; + + ret = qq_encrypt(crypted, (const guint8 * const)"a", 1, key); + assert_int_equal(16, ret); + + ret = qq_encrypt(crypted, (const guint8 * const)"aa", 2, key); + assert_int_equal(16, ret); + + ret = qq_encrypt(crypted, (const guint8 * const)"aaa", 3, key); + assert_int_equal(16, ret); + + ret = qq_encrypt(crypted, (const guint8 * const)"aaaa", 4, key); + assert_int_equal(16, ret); + + ret = qq_encrypt(crypted, (const guint8 * const)"aaaaa", 5, key); + assert_int_equal(16, ret); + + ret = qq_encrypt(crypted, (const guint8 * const)"aaaaaa", 6, key); + assert_int_equal(16, ret); + + ret = qq_encrypt(crypted, (const guint8 * const)"aaaaaaa", 7, key); + assert_int_equal(24, ret); + + ret = qq_encrypt(crypted, (const guint8 * const)"aaaaaaaa", 8, key); + assert_int_equal(24, ret); + + ret = qq_encrypt(crypted, (const guint8 * const)"aaaaaaaaa", 9, key); + assert_int_equal(24, ret); + + ret = qq_encrypt(crypted, (const guint8 * const)"aaaaaaaaaa", 10, key); + assert_int_equal(24, ret); + + ret = qq_encrypt(crypted, + (const guint8 * const)"aaaaaaaaaaa", 11, key); + assert_int_equal(24, ret); + + ret = qq_encrypt(crypted, + (const guint8 * const)"aaaaaaaaaaaa", 12, key); + assert_int_equal(24, ret); + + ret = qq_encrypt(crypted, + (const guint8 * const)"aaaaaaaaaaaaa", 13, key); + assert_int_equal(24, ret); + + ret = qq_encrypt(crypted, + (const guint8 * const)"aaaaaaaaaaaaaa", 14, key); + assert_int_equal(24, ret); + + ret = qq_encrypt(crypted, + (const guint8 * const)"aaaaaaaaaaaaaaa", 15, key); + assert_int_equal(32, ret); + + ret = qq_encrypt(crypted, + (const guint8 * const)"aaaaaaaaaaaaaaaa", 16, key); + assert_int_equal(32, ret); + + ret = qq_encrypt(crypted, + (const guint8 * const)"aaaaaaaaaaaaaaaaa", 17, key); + assert_int_equal(32, ret); + + ret = qq_encrypt(crypted, + (const guint8 * const)"aaaaaaaaaaaaaaaaaa", 18, key); + assert_int_equal(32, ret); + + ret = qq_encrypt(crypted, + (const guint8 * const)"aaaaaaaaaaaaaaaaaaa", 19, key); + assert_int_equal(32, ret); + + /* + fprintf(stderr, "crypted=%s\n", crypted); + assert_string_equal_free("plain", + yahoo_codes_to_html("plain")); + */ +} +END_TEST + +START_TEST(test_qq_decrypt) +{ +} +END_TEST + +Suite * +qq_suite(void) +{ + Suite *s; + TCase *tc; + + s = suite_create("QQ"); + + tc = tcase_create("QQ Crypt Functions"); + tcase_add_test(tc, test_qq_encrypt); + tcase_add_test(tc, test_qq_decrypt); + suite_add_tcase(s, tc); + + return s; +} diff -r 187014c2bc6e -r 2da9e4266742 libpurple/tests/tests.h --- a/libpurple/tests/tests.h Fri Sep 04 05:26:22 2009 +0000 +++ b/libpurple/tests/tests.h Fri Sep 04 06:23:41 2009 +0000 @@ -10,10 +10,15 @@ Suite * master_suite(void); Suite * cipher_suite(void); Suite * jabber_jutil_suite(void); +Suite * qq_suite(void); Suite * yahoo_util_suite(void); Suite * util_suite(void); /* helper macros */ +#define assert_int_equal(expected, actual) { \ + fail_if(expected != actual, "Expecting '%d' but got '%d'", expected, actual); \ +} + #define assert_string_equal(expected, actual) { \ const gchar *a = actual; \ fail_unless(strcmp(expected, a) == 0, "Expecting '%s' but got '%s'", expected, a); \