forked from enlightenment/efl
parent
e6550be4e6
commit
1548221768
|
@ -176,6 +176,7 @@ src/modules/Makefile
|
|||
src/modules/mp/Makefile
|
||||
src/modules/mp/chained_pool/Makefile
|
||||
src/modules/mp/ememoa_fixed/Makefile
|
||||
src/tests/Makefile
|
||||
])
|
||||
|
||||
AC_OUTPUT
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
SUBDIRS = lib include modules
|
||||
SUBDIRS = lib include modules tests
|
||||
|
||||
MAINTAINERCLEANFILES = Makefile.in
|
||||
|
|
|
@ -0,0 +1,20 @@
|
|||
MAINTAINERCLEANFILES = Makefile.in
|
||||
|
||||
AM_CPPFLAGS = \
|
||||
-I$(top_srcdir)/src/lib \
|
||||
-I$(top_srcdir)/src/include \
|
||||
@CHECK_CFLAGS@
|
||||
|
||||
|
||||
if EINA_ENABLE_TESTS
|
||||
|
||||
check_PROGRAMS = eina_suite
|
||||
|
||||
eina_suite_SOURCES = eina_suite.c eina_test_stringshare.c eina_test_array.c
|
||||
eina_suite_LDADD = @CHECK_LIBS@ $(top_builddir)/src/lib/libeina.la
|
||||
|
||||
EXTRA_DIST = eina_suite.h
|
||||
|
||||
endif
|
||||
|
||||
|
|
@ -0,0 +1,52 @@
|
|||
#include "eina_suite.h"
|
||||
|
||||
typedef struct _Eina_Test_Case Eina_Test_Case;
|
||||
struct _Eina_Test_Case
|
||||
{
|
||||
const char *test_case;
|
||||
void (*build)(TCase *tc);
|
||||
};
|
||||
|
||||
static const Eina_Test_Case etc[] = {
|
||||
{ "Array", eina_test_array },
|
||||
{ "String Share", eina_test_stringshare },
|
||||
{ NULL, NULL }
|
||||
};
|
||||
|
||||
Suite *
|
||||
eina_build_suite(void)
|
||||
{
|
||||
TCase *tc;
|
||||
Suite *s;
|
||||
int i;
|
||||
|
||||
s = suite_create("Eina");
|
||||
|
||||
for (i = 0; etc[i].test_case != NULL; ++i)
|
||||
{
|
||||
tc = tcase_create(etc[i].test_case);
|
||||
|
||||
etc[i].build(tc);
|
||||
|
||||
suite_add_tcase(s, tc);
|
||||
}
|
||||
|
||||
return s;
|
||||
}
|
||||
|
||||
int
|
||||
main(void)
|
||||
{
|
||||
Suite *s;
|
||||
SRunner *sr;
|
||||
int failed_count;
|
||||
|
||||
|
||||
s = eina_build_suite();
|
||||
sr = srunner_create(s);
|
||||
srunner_run_all(sr, CK_NORMAL);
|
||||
failed_count = srunner_ntests_failed(sr);
|
||||
srunner_free(sr);
|
||||
|
||||
return (failed_count == 0) ? 0 : 255;
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
#ifndef EINA_SUITE_H_
|
||||
#define EINA_SUITE_H_
|
||||
|
||||
#include <check.h>
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
# include "config.h"
|
||||
#endif
|
||||
|
||||
void eina_test_stringshare(TCase *tc);
|
||||
void eina_test_array(TCase *tc);
|
||||
|
||||
#endif /* EINA_SUITE_H_ */
|
|
@ -0,0 +1,147 @@
|
|||
#include <stdio.h>
|
||||
|
||||
#include "eina_suite.h"
|
||||
#include "eina_array.h"
|
||||
|
||||
START_TEST(eina_array_simple)
|
||||
{
|
||||
Eina_Array *ea;
|
||||
char *tmp;
|
||||
unsigned int i;
|
||||
|
||||
ea = eina_array_new(11);
|
||||
fail_if(!ea);
|
||||
|
||||
for (i = 0; i < 200; ++i)
|
||||
{
|
||||
tmp = malloc(sizeof(char) * 10);
|
||||
fail_if(!tmp);
|
||||
snprintf(tmp, 10, "%i", i);
|
||||
|
||||
eina_array_append(ea, tmp);
|
||||
}
|
||||
|
||||
fail_if(eina_array_get(ea, 10) == NULL);
|
||||
fail_if(atoi(eina_array_get(ea, 10)) != 10);
|
||||
|
||||
EINA_ARRAY_ITER_NEXT(ea, i, tmp)
|
||||
{
|
||||
fail_if((unsigned int) atoi(tmp) != i);
|
||||
free(tmp);
|
||||
}
|
||||
|
||||
fail_if(i != 200);
|
||||
|
||||
eina_array_clean(ea);
|
||||
eina_array_flush(ea);
|
||||
eina_array_free(ea);
|
||||
}
|
||||
END_TEST
|
||||
|
||||
START_TEST(eina_array_static)
|
||||
{
|
||||
Eina_Array sea = { NULL, 0, 0, 0 };
|
||||
char *tmp;
|
||||
unsigned int i;
|
||||
|
||||
eina_array_setup(&sea, 10);
|
||||
|
||||
for (i = 0; i < 200; ++i)
|
||||
{
|
||||
tmp = malloc(sizeof(char) * 10);
|
||||
fail_if(!tmp);
|
||||
snprintf(tmp, 10, "%i", i);
|
||||
|
||||
eina_array_append(&sea, tmp);
|
||||
}
|
||||
|
||||
fail_if(eina_array_get(&sea, 10) == NULL);
|
||||
fail_if(atoi(eina_array_get(&sea, 10)) != 10);
|
||||
|
||||
EINA_ARRAY_ITER_NEXT(&sea, i, tmp)
|
||||
{
|
||||
fail_if((unsigned int) atoi(tmp) != i);
|
||||
free(tmp);
|
||||
}
|
||||
|
||||
fail_if(i != 200);
|
||||
|
||||
eina_array_clean(&sea);
|
||||
eina_array_flush(&sea);
|
||||
}
|
||||
END_TEST
|
||||
|
||||
Eina_Bool
|
||||
keep_int(void *data, void *gdata)
|
||||
{
|
||||
int *tmp = data;
|
||||
|
||||
fail_if(gdata);
|
||||
fail_if(!tmp);
|
||||
|
||||
if (*tmp == 0) return EINA_FALSE;
|
||||
return EINA_TRUE;
|
||||
}
|
||||
|
||||
START_TEST(eina_array_remove_stuff)
|
||||
{
|
||||
Eina_Array *ea;
|
||||
int *tmp;
|
||||
unsigned int i;
|
||||
|
||||
ea = eina_array_new(64);
|
||||
fail_if(!ea);
|
||||
|
||||
for (i = 0; i < 1000; ++i)
|
||||
{
|
||||
tmp = malloc(sizeof(int));
|
||||
fail_if(!tmp);
|
||||
*tmp = i;
|
||||
|
||||
eina_array_append(ea, tmp);
|
||||
}
|
||||
|
||||
// Remove the first 10 items
|
||||
for (i = 0; i < 10; ++i)
|
||||
{
|
||||
tmp = eina_array_get(ea, i);
|
||||
fail_if(!tmp);
|
||||
*tmp = 0;
|
||||
}
|
||||
eina_array_remove(ea, keep_int, NULL);
|
||||
|
||||
fail_if(eina_array_count(ea) != 990);
|
||||
EINA_ARRAY_ITER_NEXT(ea, i, tmp)
|
||||
fail_if(*tmp == 0);
|
||||
|
||||
// Remove the last items
|
||||
for (i = 980; i < 990; ++i)
|
||||
{
|
||||
tmp = eina_array_get(ea, i);
|
||||
fail_if(!tmp);
|
||||
*tmp = 0;
|
||||
}
|
||||
eina_array_remove(ea, keep_int, NULL);
|
||||
|
||||
// Remove all items
|
||||
fail_if(eina_array_count(ea) != 980);
|
||||
EINA_ARRAY_ITER_NEXT(ea, i, tmp)
|
||||
{
|
||||
fail_if(*tmp == 0);
|
||||
*tmp = 0;
|
||||
}
|
||||
eina_array_remove(ea, keep_int, NULL);
|
||||
|
||||
fail_if(eina_array_count(ea) != 0);
|
||||
|
||||
eina_array_free(ea);
|
||||
}
|
||||
END_TEST
|
||||
|
||||
void
|
||||
eina_test_array(TCase *tc)
|
||||
{
|
||||
tcase_add_test(tc, eina_array_simple);
|
||||
tcase_add_test(tc, eina_array_static);
|
||||
tcase_add_test(tc, eina_array_remove_stuff);
|
||||
}
|
|
@ -0,0 +1,125 @@
|
|||
#include <stdlib.h>
|
||||
#include <time.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#include "eina_suite.h"
|
||||
#include "eina_stringshare.h"
|
||||
#include "eina_array.h"
|
||||
|
||||
START_TEST(eina_stringshare_init_shutdown)
|
||||
{
|
||||
eina_stringshare_init();
|
||||
eina_stringshare_init();
|
||||
eina_stringshare_shutdown();
|
||||
eina_stringshare_init();
|
||||
eina_stringshare_init();
|
||||
eina_stringshare_shutdown();
|
||||
eina_stringshare_shutdown();
|
||||
eina_stringshare_shutdown();
|
||||
}
|
||||
END_TEST
|
||||
|
||||
#define TEST0 "test/0"
|
||||
#define TEST1 "test/1"
|
||||
|
||||
START_TEST(eina_stringshare_simple)
|
||||
{
|
||||
const char *t0;
|
||||
const char *t1;
|
||||
|
||||
eina_stringshare_init();
|
||||
|
||||
t0 = eina_stringshare_add(TEST0);
|
||||
t1 = eina_stringshare_add(TEST1);
|
||||
|
||||
fail_if(t0 == NULL);
|
||||
fail_if(t1 == NULL);
|
||||
fail_if(strcmp(t0, TEST0) != 0);
|
||||
fail_if(strcmp(t1, TEST1) != 0);
|
||||
|
||||
eina_stringshare_del(t0);
|
||||
eina_stringshare_del(t1);
|
||||
|
||||
eina_stringshare_shutdown();
|
||||
}
|
||||
END_TEST
|
||||
|
||||
START_TEST(eina_stringshare_test_share)
|
||||
{
|
||||
const char *t0;
|
||||
const char *t1;
|
||||
|
||||
eina_stringshare_init();
|
||||
|
||||
t0 = eina_stringshare_add(TEST0);
|
||||
t1 = eina_stringshare_add(TEST0);
|
||||
|
||||
fail_if(t0 == NULL);
|
||||
fail_if(t1 == NULL);
|
||||
fail_if(strcmp(t0, TEST0) != 0);
|
||||
fail_if(strcmp(t1, TEST0) != 0);
|
||||
fail_if(t0 != t1);
|
||||
|
||||
eina_stringshare_del(t0);
|
||||
eina_stringshare_del(t1);
|
||||
|
||||
eina_stringshare_shutdown();
|
||||
}
|
||||
END_TEST
|
||||
|
||||
START_TEST(eina_stringshare_collision)
|
||||
{
|
||||
Eina_Array *ea;
|
||||
char buffer[50];
|
||||
int i;
|
||||
|
||||
srand(time(NULL));
|
||||
|
||||
eina_stringshare_init();
|
||||
|
||||
ea = eina_array_new(256);
|
||||
fail_if(!ea);
|
||||
|
||||
for (i = 0; i < 10000; ++i)
|
||||
{
|
||||
snprintf(buffer, 1024, "%i", rand());
|
||||
eina_array_append(ea, (void*) eina_stringshare_add(buffer));
|
||||
if (rand() > RAND_MAX / 2) eina_stringshare_add(buffer);
|
||||
}
|
||||
|
||||
for (i = 0; i < 10000; ++i)
|
||||
{
|
||||
snprintf(buffer, 1024, "%i", 60000 - i);
|
||||
eina_array_append(ea, (void*) eina_stringshare_add(buffer));
|
||||
eina_stringshare_add(buffer);
|
||||
}
|
||||
|
||||
for (i = 0; i < 200; ++i)
|
||||
eina_stringshare_del(eina_array_get(ea, i));
|
||||
|
||||
eina_stringshare_shutdown();
|
||||
|
||||
eina_array_free(ea);
|
||||
}
|
||||
END_TEST
|
||||
|
||||
START_TEST(eina_stringshare_not_owned)
|
||||
{
|
||||
eina_stringshare_init();
|
||||
|
||||
eina_stringshare_add(TEST0);
|
||||
eina_stringshare_del(TEST0);
|
||||
|
||||
eina_stringshare_shutdown();
|
||||
}
|
||||
END_TEST
|
||||
|
||||
void
|
||||
eina_test_stringshare(TCase *tc)
|
||||
{
|
||||
tcase_add_test(tc, eina_stringshare_init_shutdown);
|
||||
tcase_add_test(tc, eina_stringshare_simple);
|
||||
tcase_add_test(tc, eina_stringshare_test_share);
|
||||
tcase_add_test(tc, eina_stringshare_collision);
|
||||
tcase_add_test(tc, eina_stringshare_not_owned);
|
||||
}
|
Loading…
Reference in New Issue