Implementa teste para lista
[cascardo/declara.git] / listtest.c
1 /*
2  *  Copyright (C) 2012-2015  Thadeu Lima de Souza Cascardo <cascardo@minaslivre.org>
3  *
4  *  This program is free software; you can redistribute it and/or modify
5  *  it under the terms of the GNU General Public License as published by
6  *  the Free Software Foundation; either version 3 of the License, or
7  *  (at your option) any later version.
8  *
9  *  This program 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
12  *  GNU General Public License for more details.
13  *
14  *  You should have received a copy of the GNU General Public License along
15  *  with this program; if not, write to the Free Software Foundation, Inc.,
16  *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
17  */
18
19 #include <list.h>
20 #include <stdio.h>
21 #include <string.h>
22 #include <stdlib.h>
23
24 static char *names[] = {
25         "backwards",
26         "end to start",
27         "finish",
28         "english",
29 };
30
31 int main(int argc, char **argv)
32 {
33         struct list *l;
34         int i;
35         int arraylen;
36
37         arraylen = sizeof(names)/sizeof(names[0]);
38
39         l = list_new();
40         list_add(&l, "GNU");
41         list_free(l, NULL);
42         printf("Single static list test pass\n");
43         fflush(stdout);
44
45         l = list_new();
46         for (i = 0; i < arraylen; i++) {
47                 list_add(&l, strdup(names[i]));
48         }
49         for (i = 0; i < arraylen; i++) {
50                 if (strcmp(list_get(l, i), names[i]))
51                         return 1;
52         }
53         list_free(l, free);
54         printf("Multiple add ordering list test pass\n");
55         fflush(stdout);
56
57         l = list_new();
58         for (i = 0; i < arraylen; i++) {
59                 list_insert(&l, 0, strdup(names[i]));
60         }
61         for (i = 0; i < arraylen; i++) {
62                 if (strcmp(list_get(l, i), names[arraylen - i - 1]))
63                         return 1;
64         }
65         list_free(l, free);
66         printf("Multiple insertion at start ordering list test pass\n");
67         fflush(stdout);
68
69         l = list_new();
70         for (i = 0; i < arraylen; i++) {
71                 list_insert(&l, i, strdup(names[i]));
72         }
73         for (i = 0; i < arraylen; i++) {
74                 if (strcmp(list_get(l, i), names[i]))
75                         return 1;
76         }
77         list_free(l, free);
78         printf("Multiple insertion at end ordering list test pass\n");
79         fflush(stdout);
80
81         return 0;
82 }