aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/libraries/eina/src/tests/eina_test_lalloc.c
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/eina/src/tests/eina_test_lalloc.c')
-rw-r--r--libraries/eina/src/tests/eina_test_lalloc.c89
1 files changed, 89 insertions, 0 deletions
diff --git a/libraries/eina/src/tests/eina_test_lalloc.c b/libraries/eina/src/tests/eina_test_lalloc.c
new file mode 100644
index 0000000..13fd607
--- /dev/null
+++ b/libraries/eina/src/tests/eina_test_lalloc.c
@@ -0,0 +1,89 @@
1/* EINA - EFL data type library
2 * Copyright (C) 2008 Cedric Bail
3 *
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
8 *
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
13 *
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library;
16 * if not, see <http://www.gnu.org/licenses/>.
17 */
18
19#ifdef HAVE_CONFIG_H
20# include "config.h"
21#endif
22
23#include <stdlib.h>
24#include <stdio.h>
25
26#include "eina_suite.h"
27#include "Eina.h"
28
29typedef struct _Eina_Lazy_Allocator_Test Eina_Lazy_Allocator_Test;
30struct _Eina_Lazy_Allocator_Test
31{
32 void *data;
33 int num;
34};
35
36static Eina_Bool
37_test_alloc(Eina_Lazy_Allocator_Test *elat, int num)
38{
39 if (elat->num == 10 && num == 1)
40 return EINA_FALSE;
41
42 if (elat->num == 122 && num == 128)
43 return EINA_FALSE;
44
45 elat->num += num;
46 elat->data = realloc(elat->data, elat->num);
47
48 return EINA_TRUE;
49}
50
51static void
52_test_free(Eina_Lazy_Allocator_Test *elat)
53{
54 free(elat->data);
55 elat->data = NULL;
56 elat->num = 0;
57}
58
59START_TEST(eina_lalloc_simple)
60{
61 Eina_Lazy_Allocator_Test *elat;
62 Eina_Lalloc *test;
63 int i;
64
65 elat = calloc(1, sizeof (Eina_Lazy_Allocator_Test));
66 fail_if(!elat);
67
68 test = eina_lalloc_new(elat, EINA_LALLOC_ALLOC(
69 _test_alloc), EINA_LALLOC_FREE(_test_free), 10);
70 fail_if(!test);
71
72 for (i = 0; i < 10; ++i)
73 fail_if(eina_lalloc_element_add(test) != EINA_TRUE);
74 fail_if(eina_lalloc_element_add(test) != EINA_FALSE);
75 fail_if(eina_lalloc_elements_add(test, 5) != EINA_TRUE);
76 for (i = 0; i < 21; ++i)
77 fail_if(eina_lalloc_element_add(test) != EINA_TRUE);
78
79 fail_if(eina_lalloc_elements_add(test, 50) != EINA_FALSE);
80
81 eina_lalloc_free(test);
82}
83END_TEST
84
85void
86eina_test_lalloc(TCase *tc)
87{
88 tcase_add_test(tc, eina_lalloc_simple);
89}