forked from enlightenment/efl
Test rework #16: Emile
This commit is contained in:
parent
9dcad9fd9e
commit
41e626c190
|
@ -81,7 +81,10 @@ check_PROGRAMS += tests/emile/emile_suite
|
||||||
TESTS += tests/emile/emile_suite
|
TESTS += tests/emile/emile_suite
|
||||||
|
|
||||||
tests_emile_emile_suite_SOURCES = \
|
tests_emile_emile_suite_SOURCES = \
|
||||||
tests/emile/emile_suite.c
|
tests/emile/emile_suite.c \
|
||||||
|
tests/emile/emile_test_base.c \
|
||||||
|
tests/emile/emile_test_base64.c \
|
||||||
|
tests/emile/emile_suite.h
|
||||||
|
|
||||||
tests_emile_emile_suite_CPPFLAGS = -I$(top_builddir)/src/lib/efl \
|
tests_emile_emile_suite_CPPFLAGS = -I$(top_builddir)/src/lib/efl \
|
||||||
-DTESTS_WD=\"`pwd`\" \
|
-DTESTS_WD=\"`pwd`\" \
|
||||||
|
|
|
@ -1,231 +1,28 @@
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
#endif /* ifdef HAVE_CONFIG_H */
|
|
||||||
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
|
|
||||||
#include <check.h>
|
|
||||||
|
|
||||||
#include <Eina.h>
|
|
||||||
#include <Emile.h>
|
|
||||||
|
|
||||||
START_TEST(emile_test_init)
|
|
||||||
{
|
|
||||||
fail_if(emile_init() <= 0);
|
|
||||||
fail_if(emile_shutdown() != 0);
|
|
||||||
}
|
|
||||||
END_TEST
|
|
||||||
|
|
||||||
/* All cases are taken from https://en.wikipedia.org/wiki/Base64 */
|
|
||||||
static const struct {
|
|
||||||
char *decoded_str;
|
|
||||||
char *encoded_normal;
|
|
||||||
char *encoded_url;
|
|
||||||
unsigned int len;
|
|
||||||
Eina_Bool not;
|
|
||||||
} base64_tests[] = {
|
|
||||||
{ "any carnal pleasure.", "YW55IGNhcm5hbCBwbGVhc3VyZS4=", "YW55IGNhcm5hbCBwbGVhc3VyZS4", 20 },
|
|
||||||
{ "any carnal pleasure.", "YW55IGNhcm5hbCBwbGVhc3VyZQ==", "YW55IGNhcm5hbCBwbGVhc3VyZQ", 19 },
|
|
||||||
{ "any carnal pleasure.", "YW55IGNhcm5hbCBwbGVhc3Vy", "YW55IGNhcm5hbCBwbGVhc3Vy", 18 },
|
|
||||||
{ "any carnal pleasure.", "YW55IGNhcm5hbCBwbGVhc3U=", "YW55IGNhcm5hbCBwbGVhc3U", 17 },
|
|
||||||
{ "any carnal pleasure.", "YW55IGNhcm5hbCBwbGVhcw==", "YW55IGNhcm5hbCBwbGVhcw", 16 },
|
|
||||||
{ "pleasure.", "cGxlYXN1cmUu", "cGxlYXN1cmUu", 9 },
|
|
||||||
{ "leasure.", "bGVhc3VyZS4=", "bGVhc3VyZS4", 8 },
|
|
||||||
{ "easure.", "ZWFzdXJlLg==", "ZWFzdXJlLg", 7 },
|
|
||||||
{ "asure.", "YXN1cmUu", "YXN1cmUu", 6 },
|
|
||||||
{ "sure.", "c3VyZS4=", "c3VyZS4", 5 },
|
|
||||||
/* The following 2 cases are manually generated for -/ testing*/
|
|
||||||
{ "aabc123!?", "YWFiYzEyMyE/", "YWFiYzEyMyE_", 9 },
|
|
||||||
{ "abc123!?$*&()'-=@~", "YWJjMTIzIT8kKiYoKSctPUB+", "YWJjMTIzIT8kKiYoKSctPUB-", 18 }
|
|
||||||
};
|
|
||||||
|
|
||||||
START_TEST(emile_test_base64)
|
|
||||||
{
|
|
||||||
Eina_Binbuf *buffer, *decoded;
|
|
||||||
Eina_Strbuf *str, *encoded;
|
|
||||||
unsigned int i;
|
|
||||||
|
|
||||||
buffer = eina_binbuf_new();
|
|
||||||
str = eina_strbuf_new();
|
|
||||||
|
|
||||||
for (i = 0; i < sizeof (base64_tests) / sizeof (base64_tests[0]); i++)
|
|
||||||
{
|
|
||||||
eina_binbuf_append_length(buffer, (const unsigned char *) base64_tests[i].decoded_str, base64_tests[i].len);
|
|
||||||
eina_strbuf_append(str, base64_tests[i].encoded_normal);
|
|
||||||
|
|
||||||
encoded = emile_base64_encode(buffer);
|
|
||||||
fail_if(strcmp(eina_strbuf_string_get(encoded), base64_tests[i].encoded_normal));
|
|
||||||
|
|
||||||
decoded = emile_base64_decode(str);
|
|
||||||
fail_if(memcmp(eina_binbuf_string_get(decoded), base64_tests[i].decoded_str, base64_tests[i].len));
|
|
||||||
|
|
||||||
fail_if(eina_binbuf_length_get(decoded) != base64_tests[i].len);
|
|
||||||
|
|
||||||
eina_strbuf_free(encoded);
|
|
||||||
eina_binbuf_free(decoded);
|
|
||||||
|
|
||||||
eina_binbuf_reset(buffer);
|
|
||||||
eina_strbuf_reset(str);
|
|
||||||
}
|
|
||||||
|
|
||||||
//Failure scenarios.
|
|
||||||
decoded = emile_base64_decode(NULL);
|
|
||||||
fail_if(decoded);
|
|
||||||
|
|
||||||
eina_strbuf_append(str, "TWFu");
|
|
||||||
decoded = emile_base64_decode(str);
|
|
||||||
eina_strbuf_reset(str);
|
|
||||||
|
|
||||||
fail_if(memcmp(eina_binbuf_string_get(decoded), "Man", 3));
|
|
||||||
eina_binbuf_free(decoded);
|
|
||||||
|
|
||||||
eina_strbuf_append(str, "abc");
|
|
||||||
decoded = emile_base64_decode(str);
|
|
||||||
eina_strbuf_reset(str);
|
|
||||||
fail_if(decoded);
|
|
||||||
}
|
|
||||||
END_TEST
|
|
||||||
|
|
||||||
START_TEST(emile_test_base64url)
|
|
||||||
{
|
|
||||||
Eina_Binbuf *buffer, *decoded;
|
|
||||||
Eina_Strbuf *str, *encoded;
|
|
||||||
unsigned int i;
|
|
||||||
|
|
||||||
buffer = eina_binbuf_new();
|
|
||||||
str = eina_strbuf_new();
|
|
||||||
|
|
||||||
for (i = 0; i < sizeof (base64_tests) / sizeof (base64_tests[0]); i++)
|
|
||||||
{
|
|
||||||
eina_binbuf_append_length(buffer, (const unsigned char *) base64_tests[i].decoded_str, base64_tests[i].len);
|
|
||||||
eina_strbuf_append(str, base64_tests[i].encoded_url);
|
|
||||||
|
|
||||||
encoded = emile_base64url_encode(buffer);
|
|
||||||
fail_if(strcmp(eina_strbuf_string_get(encoded), base64_tests[i].encoded_url));
|
|
||||||
|
|
||||||
decoded = emile_base64url_decode(str);
|
|
||||||
fail_if(memcmp(eina_binbuf_string_get(decoded), base64_tests[i].decoded_str, base64_tests[i].len));
|
|
||||||
|
|
||||||
fail_if(eina_binbuf_length_get(decoded) != base64_tests[i].len);
|
|
||||||
|
|
||||||
eina_strbuf_free(encoded);
|
|
||||||
eina_binbuf_free(decoded);
|
|
||||||
|
|
||||||
eina_binbuf_reset(buffer);
|
|
||||||
eina_strbuf_reset(str);
|
|
||||||
}
|
|
||||||
|
|
||||||
//Failure scenarios.
|
|
||||||
decoded = emile_base64url_decode(NULL);
|
|
||||||
fail_if(decoded);
|
|
||||||
|
|
||||||
eina_strbuf_append(str, "TWFu");
|
|
||||||
decoded = emile_base64url_decode(str);
|
|
||||||
fail_if(memcmp(eina_binbuf_string_get(decoded), "Man", 3));
|
|
||||||
}
|
|
||||||
END_TEST
|
|
||||||
|
|
||||||
static void
|
|
||||||
emile_base_test(TCase *tc)
|
|
||||||
{
|
|
||||||
tcase_add_test(tc, emile_test_init);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
emile_base64_test(TCase *tc)
|
|
||||||
{
|
|
||||||
tcase_add_test(tc, emile_test_base64);
|
|
||||||
tcase_add_test(tc, emile_test_base64url);
|
|
||||||
}
|
|
||||||
|
|
||||||
static const struct
|
|
||||||
{
|
|
||||||
const char *name;
|
|
||||||
void (*build)(TCase *tc);
|
|
||||||
} tests[] = {
|
|
||||||
{ "Emile_Base", emile_base_test },
|
|
||||||
{ "Emile_Base64", emile_base64_test }
|
|
||||||
};
|
|
||||||
|
|
||||||
static void
|
|
||||||
_list_tests(void)
|
|
||||||
{
|
|
||||||
unsigned int i;
|
|
||||||
|
|
||||||
fputs("Available tests cases :\n", stderr);
|
|
||||||
for (i = 0; i < sizeof(tests) / sizeof(tests[0]); i++)
|
|
||||||
fprintf(stderr, "\t%s\n", tests[i].name);
|
|
||||||
}
|
|
||||||
|
|
||||||
static Eina_Bool
|
|
||||||
_use_test(const char *name, int argc, const char *argv[])
|
|
||||||
{
|
|
||||||
argc--;
|
|
||||||
argv--;
|
|
||||||
|
|
||||||
if (argc < 1)
|
|
||||||
return EINA_TRUE;
|
|
||||||
|
|
||||||
for (; argc > 1; argc--, argv++)
|
|
||||||
if (strcmp(name, *argv) == 0)
|
|
||||||
return EINA_TRUE;
|
|
||||||
return EINA_FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static Suite *
|
|
||||||
emile_suite_build(int argc, const char **argv)
|
|
||||||
{
|
|
||||||
TCase *tc;
|
|
||||||
Suite *s;
|
|
||||||
unsigned int i;
|
|
||||||
|
|
||||||
s = suite_create("Emile");
|
|
||||||
|
|
||||||
for (i = 0; i < sizeof(tests) / sizeof(tests[0]); ++i)
|
|
||||||
{
|
|
||||||
if (!_use_test(tests[i].name, argc, argv))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
tc = tcase_create(tests[i].name);
|
|
||||||
tests[i].build(tc);
|
|
||||||
suite_add_tcase(s, tc);
|
|
||||||
#ifndef _WIN32
|
|
||||||
tcase_set_timeout(tc, 0);
|
|
||||||
#endif
|
#endif
|
||||||
}
|
|
||||||
|
|
||||||
return s;
|
#include "emile_suite.h"
|
||||||
}
|
#include "../efl_check.h"
|
||||||
|
|
||||||
|
static const Efl_Test_Case etc[] = {
|
||||||
|
{ "Emile_Base", emile_test_base },
|
||||||
|
{ "Emile_Base64", emile_test_base64 },
|
||||||
|
{ NULL, NULL }
|
||||||
|
};
|
||||||
|
|
||||||
int
|
int
|
||||||
main(int argc, char *argv[])
|
main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
SRunner *sr;
|
|
||||||
Suite *s;
|
|
||||||
int failed_count;
|
int failed_count;
|
||||||
int j;
|
|
||||||
|
|
||||||
for (j = 1; j < argc; j++)
|
if (!_efl_test_option_disp(argc, argv, etc))
|
||||||
if ((strcmp(argv[j], "-h") == 0) || (strcmp(argv[j], "--help") == 0))
|
return 0;
|
||||||
{
|
|
||||||
fprintf(stderr, "Usage:\n\t%s [test_case1 .. [test_caseN]]\n", argv[0]);
|
|
||||||
_list_tests();
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
else if ((strcmp(argv[j], "-l") == 0) || (strcmp(argv[j], "--list") == 0))
|
|
||||||
{
|
|
||||||
_list_tests();
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
s = emile_suite_build(argc, (const char **)argv);
|
putenv("EFL_RUN_IN_TREE=1");
|
||||||
sr = srunner_create(s);
|
|
||||||
|
|
||||||
srunner_set_xml(sr, TESTS_BUILD_DIR "/check-results.xml");
|
failed_count = _efl_suite_build_and_run(argc - 1, (const char **)argv + 1,
|
||||||
srunner_run_all(sr, CK_ENV);
|
"Emile", etc);
|
||||||
failed_count = srunner_ntests_failed(sr);
|
|
||||||
srunner_free(sr);
|
|
||||||
|
|
||||||
return (failed_count == 0) ? 0 : 255;
|
return (failed_count == 0) ? 0 : 255;
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
#ifndef _EMILE_SUITE_H
|
||||||
|
#define _EMILE_SUITE_H
|
||||||
|
|
||||||
|
#include <check.h>
|
||||||
|
|
||||||
|
void emile_test_base(TCase *tc);
|
||||||
|
void emile_test_base64(TCase *tc);
|
||||||
|
|
||||||
|
#endif /* _EMILE_SUITE_H */
|
|
@ -0,0 +1,20 @@
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
# include <config.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <Eina.h>
|
||||||
|
#include <Emile.h>
|
||||||
|
|
||||||
|
#include "emile_suite.h"
|
||||||
|
|
||||||
|
START_TEST(emile_test_init)
|
||||||
|
{
|
||||||
|
fail_if(emile_init() <= 0);
|
||||||
|
fail_if(emile_shutdown() != 0);
|
||||||
|
}
|
||||||
|
END_TEST
|
||||||
|
|
||||||
|
void emile_test_base(TCase *tc)
|
||||||
|
{
|
||||||
|
tcase_add_test(tc, emile_test_init);
|
||||||
|
}
|
|
@ -0,0 +1,124 @@
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
# include <config.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <Eina.h>
|
||||||
|
#include <Emile.h>
|
||||||
|
|
||||||
|
#include "emile_suite.h"
|
||||||
|
|
||||||
|
/* All cases are taken from https://en.wikipedia.org/wiki/Base64 */
|
||||||
|
static const struct {
|
||||||
|
char *decoded_str;
|
||||||
|
char *encoded_normal;
|
||||||
|
char *encoded_url;
|
||||||
|
unsigned int len;
|
||||||
|
Eina_Bool not;
|
||||||
|
} base64_tests[] = {
|
||||||
|
{ "any carnal pleasure.", "YW55IGNhcm5hbCBwbGVhc3VyZS4=", "YW55IGNhcm5hbCBwbGVhc3VyZS4", 20 },
|
||||||
|
{ "any carnal pleasure.", "YW55IGNhcm5hbCBwbGVhc3VyZQ==", "YW55IGNhcm5hbCBwbGVhc3VyZQ", 19 },
|
||||||
|
{ "any carnal pleasure.", "YW55IGNhcm5hbCBwbGVhc3Vy", "YW55IGNhcm5hbCBwbGVhc3Vy", 18 },
|
||||||
|
{ "any carnal pleasure.", "YW55IGNhcm5hbCBwbGVhc3U=", "YW55IGNhcm5hbCBwbGVhc3U", 17 },
|
||||||
|
{ "any carnal pleasure.", "YW55IGNhcm5hbCBwbGVhcw==", "YW55IGNhcm5hbCBwbGVhcw", 16 },
|
||||||
|
{ "pleasure.", "cGxlYXN1cmUu", "cGxlYXN1cmUu", 9 },
|
||||||
|
{ "leasure.", "bGVhc3VyZS4=", "bGVhc3VyZS4", 8 },
|
||||||
|
{ "easure.", "ZWFzdXJlLg==", "ZWFzdXJlLg", 7 },
|
||||||
|
{ "asure.", "YXN1cmUu", "YXN1cmUu", 6 },
|
||||||
|
{ "sure.", "c3VyZS4=", "c3VyZS4", 5 },
|
||||||
|
/* The following 2 cases are manually generated for -/ testing*/
|
||||||
|
{ "aabc123!?", "YWFiYzEyMyE/", "YWFiYzEyMyE_", 9 },
|
||||||
|
{ "abc123!?$*&()'-=@~", "YWJjMTIzIT8kKiYoKSctPUB+", "YWJjMTIzIT8kKiYoKSctPUB-", 18 }
|
||||||
|
};
|
||||||
|
|
||||||
|
START_TEST(emile_test_base64_normal)
|
||||||
|
{
|
||||||
|
Eina_Binbuf *buffer, *decoded;
|
||||||
|
Eina_Strbuf *str, *encoded;
|
||||||
|
unsigned int i;
|
||||||
|
|
||||||
|
buffer = eina_binbuf_new();
|
||||||
|
str = eina_strbuf_new();
|
||||||
|
|
||||||
|
for (i = 0; i < sizeof (base64_tests) / sizeof (base64_tests[0]); i++)
|
||||||
|
{
|
||||||
|
eina_binbuf_append_length(buffer, (const unsigned char *) base64_tests[i].decoded_str, base64_tests[i].len);
|
||||||
|
eina_strbuf_append(str, base64_tests[i].encoded_normal);
|
||||||
|
|
||||||
|
encoded = emile_base64_encode(buffer);
|
||||||
|
fail_if(strcmp(eina_strbuf_string_get(encoded), base64_tests[i].encoded_normal));
|
||||||
|
|
||||||
|
decoded = emile_base64_decode(str);
|
||||||
|
fail_if(memcmp(eina_binbuf_string_get(decoded), base64_tests[i].decoded_str, base64_tests[i].len));
|
||||||
|
|
||||||
|
fail_if(eina_binbuf_length_get(decoded) != base64_tests[i].len);
|
||||||
|
|
||||||
|
eina_strbuf_free(encoded);
|
||||||
|
eina_binbuf_free(decoded);
|
||||||
|
|
||||||
|
eina_binbuf_reset(buffer);
|
||||||
|
eina_strbuf_reset(str);
|
||||||
|
}
|
||||||
|
|
||||||
|
//Failure scenarios.
|
||||||
|
decoded = emile_base64_decode(NULL);
|
||||||
|
fail_if(decoded);
|
||||||
|
|
||||||
|
eina_strbuf_append(str, "TWFu");
|
||||||
|
decoded = emile_base64_decode(str);
|
||||||
|
eina_strbuf_reset(str);
|
||||||
|
|
||||||
|
fail_if(memcmp(eina_binbuf_string_get(decoded), "Man", 3));
|
||||||
|
eina_binbuf_free(decoded);
|
||||||
|
|
||||||
|
eina_strbuf_append(str, "abc");
|
||||||
|
decoded = emile_base64_decode(str);
|
||||||
|
eina_strbuf_reset(str);
|
||||||
|
fail_if(decoded);
|
||||||
|
}
|
||||||
|
END_TEST
|
||||||
|
|
||||||
|
START_TEST(emile_test_base64_url)
|
||||||
|
{
|
||||||
|
Eina_Binbuf *buffer, *decoded;
|
||||||
|
Eina_Strbuf *str, *encoded;
|
||||||
|
unsigned int i;
|
||||||
|
|
||||||
|
buffer = eina_binbuf_new();
|
||||||
|
str = eina_strbuf_new();
|
||||||
|
|
||||||
|
for (i = 0; i < sizeof (base64_tests) / sizeof (base64_tests[0]); i++)
|
||||||
|
{
|
||||||
|
eina_binbuf_append_length(buffer, (const unsigned char *) base64_tests[i].decoded_str, base64_tests[i].len);
|
||||||
|
eina_strbuf_append(str, base64_tests[i].encoded_url);
|
||||||
|
|
||||||
|
encoded = emile_base64url_encode(buffer);
|
||||||
|
fail_if(strcmp(eina_strbuf_string_get(encoded), base64_tests[i].encoded_url));
|
||||||
|
|
||||||
|
decoded = emile_base64url_decode(str);
|
||||||
|
fail_if(memcmp(eina_binbuf_string_get(decoded), base64_tests[i].decoded_str, base64_tests[i].len));
|
||||||
|
|
||||||
|
fail_if(eina_binbuf_length_get(decoded) != base64_tests[i].len);
|
||||||
|
|
||||||
|
eina_strbuf_free(encoded);
|
||||||
|
eina_binbuf_free(decoded);
|
||||||
|
|
||||||
|
eina_binbuf_reset(buffer);
|
||||||
|
eina_strbuf_reset(str);
|
||||||
|
}
|
||||||
|
|
||||||
|
//Failure scenarios.
|
||||||
|
decoded = emile_base64url_decode(NULL);
|
||||||
|
fail_if(decoded);
|
||||||
|
|
||||||
|
eina_strbuf_append(str, "TWFu");
|
||||||
|
decoded = emile_base64url_decode(str);
|
||||||
|
fail_if(memcmp(eina_binbuf_string_get(decoded), "Man", 3));
|
||||||
|
}
|
||||||
|
END_TEST
|
||||||
|
|
||||||
|
void
|
||||||
|
emile_test_base64(TCase *tc)
|
||||||
|
{
|
||||||
|
tcase_add_test(tc, emile_test_base64_normal);
|
||||||
|
tcase_add_test(tc, emile_test_base64_url);
|
||||||
|
}
|
Loading…
Reference in New Issue