timer: add hook for allocation functions.
[ccan] / junkcode / dongre.avinash@gmail.com-clibutils / test / t_c_slist.c
1 /** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **\r
2  *  This file is part of clib library\r
3  *  Copyright (C) 2011 Avinash Dongre ( dongre.avinash@gmail.com )\r
4  *\r
5  *  Permission is hereby granted, free of charge, to any person obtaining a copy\r
6  *  of this software and associated documentation files (the "Software"), to deal\r
7  *  in the Software without restriction, including without limitation the rights\r
8  *  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r
9  *  copies of the Software, and to permit persons to whom the Software is\r
10  *  furnished to do so, subject to the following conditions:\r
11  * \r
12  *  The above copyright notice and this permission notice shall be included in\r
13  *  all copies or substantial portions of the Software.\r
14  * \r
15  *  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r
16  *  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r
17  *  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r
18  *  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r
19  *  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r
20  *  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r
21  *  THE SOFTWARE.\r
22  ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **/\r
23 \r
24 #include "c_lib.h"\r
25 \r
26 #include <stdlib.h>\r
27 #include <string.h>\r
28 #include <stdio.h>\r
29 #include <assert.h>\r
30 \r
31 static void \r
32 free_element ( void *ptr ) {\r
33     if ( ptr )\r
34         free ( ptr);\r
35 }\r
36 \r
37 void\r
38 add_elements_to_list( struct clib_slist* ll, int x, int y ) {\r
39     int i = 0;\r
40     for ( i = x; i <= y; i++ ) { \r
41         int *v = ( int *) malloc ( sizeof ( int ));\r
42         memcpy ( v, &i, sizeof ( int ));\r
43         push_back_clib_slist ( ll, v , sizeof(v));\r
44         free ( v );\r
45     }\r
46 }\r
47 void\r
48 print_e ( void *ptr ) {\r
49     if ( ptr )\r
50         printf ( "%d\n", *(int*)ptr);\r
51 }\r
52 \r
53 static int \r
54 compare_element ( void *left, void *right ) {\r
55     int *l = (int*) left;\r
56     int *r = (int*) right;\r
57     return *l == *r ;\r
58 }\r
59 \r
60 \r
61 void\r
62 test_clib_slist() {\r
63     int i = 0;\r
64     int *v;\r
65     void* outValue;\r
66     struct clib_slist* list = new_clib_slist(free_element,compare_element);\r
67 \r
68     add_elements_to_list(list,1, 10 );\r
69     for_each_clib_slist(list, print_e);\r
70 \r
71     i = 55;\r
72     v = ( int *) malloc ( sizeof ( int ));\r
73     memcpy ( v, &i, sizeof ( int ));\r
74     insert_clib_slist(list,5, v,sizeof(v));\r
75     free ( v );\r
76     for_each_clib_slist(list, print_e);\r
77 \r
78     remove_clib_slist(list,5);\r
79     for_each_clib_slist(list, print_e);\r
80 \r
81     remove_clib_slist(list,0);\r
82     for_each_clib_slist(list, print_e);\r
83 \r
84     remove_clib_slist(list,100);\r
85     for_each_clib_slist(list, print_e);\r
86 \r
87     i = 1;\r
88     v = ( int *) malloc ( sizeof ( int ));\r
89     memcpy ( v, &i, sizeof ( int ));\r
90     insert_clib_slist(list,1,v,sizeof(v));\r
91     free ( v );\r
92     for_each_clib_slist(list, print_e);\r
93 \r
94     i = 11;\r
95     v = ( int *) malloc ( sizeof ( int ));\r
96     memcpy ( v, &i, sizeof ( int ));\r
97     insert_clib_slist(list,11,v,sizeof(v));\r
98     free ( v );\r
99     for_each_clib_slist(list, print_e);\r
100 \r
101     i = 12;\r
102     v = ( int *) malloc ( sizeof ( int ));\r
103     memcpy ( v, &i, sizeof ( int ));\r
104     insert_clib_slist(list,200,v,sizeof(v));\r
105     free ( v );\r
106     for_each_clib_slist(list, print_e);\r
107 \r
108     remove_clib_slist(list,list->size);\r
109     for_each_clib_slist(list, print_e);\r
110 \r
111     i = 10;\r
112     if ( clib_true == find_clib_slist ( list, &i, &outValue)) {\r
113         assert ( i == *(int*)outValue );\r
114         free ( outValue );\r
115     }\r
116     i = 100;\r
117     assert ( clib_false == find_clib_slist ( list, &i, &outValue));\r
118 \r
119     delete_clib_slist ( list );\r
120 \r
121 }\r