From 4103f38eedd3535fc4680d7c1abb1a0f8cc9373d Mon Sep 17 00:00:00 2001 From: Srivardhan Hebbar Date: Thu, 10 Dec 2015 16:44:27 +0900 Subject: [PATCH] eina: Adding test case for base64 decode function. Summary: Depends on D3381 Signed-off-by: Srivardhan Hebbar Reviewers: cedric, jpeg Subscribers: jpeg Differential Revision: https://phab.enlightenment.org/D3382 --- src/tests/eina/eina_test_str.c | 34 +++++++++++++++++++++++++++------- 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/src/tests/eina/eina_test_str.c b/src/tests/eina/eina_test_str.c index 03f254cf6d..d13b32b2c1 100644 --- a/src/tests/eina/eina_test_str.c +++ b/src/tests/eina/eina_test_str.c @@ -365,13 +365,13 @@ START_TEST(str_strftime) } END_TEST -START_TEST(str_base64_encode) +START_TEST(str_base64_encode_decode) { /* All cases are taken from https://en.wikipedia.org/wiki/Base64 */ static const struct { - char *str; - char *expected; - unsigned int len; + char *decoded_str; + char *encoded_str; + int len; Eina_Bool not; } tests[] = { { "any carnal pleasure.", "YW55IGNhcm5hbCBwbGVhc3VyZS4=", 20 }, @@ -389,15 +389,35 @@ START_TEST(str_base64_encode) { "abc123!?$*&()'-=@~", "YWJjMTIzIT8kKiYoKSctPUB+", 18 } }; unsigned int i; + int len; + unsigned char *decoded; for (i = 0; i < sizeof (tests) / sizeof (tests[0]); i++) { char *encoded; - encoded = eina_str_base64_encode((unsigned char*) tests[i].str, tests[i].len); - fail_if(strcmp(encoded, tests[i].expected)); + encoded = eina_str_base64_encode((unsigned char*) tests[i].decoded_str, tests[i].len); + fail_if(strcmp(encoded, tests[i].encoded_str)); + + decoded = eina_str_base64_decode(tests[i].encoded_str, &len); + fail_if(memcmp(decoded, tests[i].decoded_str, tests[i].len)); + + fprintf(stderr, "len = %d, tests[%d].len = %d\n", len, i, tests[i].len); + fail_if(len != tests[i].len); + free(encoded); + free(decoded); } + + //Failure scenarios. + decoded = eina_str_base64_decode(NULL, &len); + fail_if(decoded); + + decoded = eina_str_base64_decode("TWFu", NULL); + fail_if(memcmp(decoded, "Man", 3)); + + decoded = eina_str_base64_decode("abc", &len); + fail_if(decoded); } END_TEST @@ -440,7 +460,7 @@ eina_test_str(TCase *tc) tcase_add_test(tc, str_join_len); tcase_add_test(tc, str_memdup); tcase_add_test(tc, str_strftime); - tcase_add_test(tc, str_base64_encode); + tcase_add_test(tc, str_base64_encode_decode); #ifdef HAVE_ICONV tcase_add_test(tc, str_convert); #endif