]> git.llucax.com Git - z.facultad/75.42/calculadora.git/blob - dllist_test.c
Se mejora la salida del memdebug y se hace que solo imprima la memoria alocada a
[z.facultad/75.42/calculadora.git] / dllist_test.c
1 /* vim: set et sts=4 sw=4 fdm=indent fdl=1 fdn=0 fo+=t:
2  *
3  * Taller de Programación (75.42).
4  *
5  * Ejercicio Número 2:
6  * Programa calculadora.
7  *
8  * Copyleft 2003 - Leandro Lucarella <llucare@fi.uba.ar>
9  * Puede copiar, modificar y distribuir este programa bajo los términos de
10  * la licencia GPL (http://www.gnu.org/).
11  *
12  * Creado: sáb ago 30 18:24:31 ART 2003
13  *
14  * $Id$
15  */
16
17 /**
18  * \file
19  *      Hace varios chequeos para probar si anda bien la
20  *      \ref DLList "lista doblemente enlazada".
21  */
22
23 #include "dllist.h"
24
25 /* Para utilizar printf() */
26 #include <stdio.h>
27 /* Para utilizar EXIT_SUCCES */
28 #include <stdlib.h>
29 /* Para utilizar assert() */
30 #include <assert.h>
31
32 /**
33  * Programa para probar la DLList.
34  *
35  * \return EXIT_SUCCESS o código de error devuelto por abort() si hubo un
36  *         error.
37  */
38 int main(void) {
39     /* Declaración de variables. */
40     DLList* lista = NULL;
41     int a=1, b=2, c=3, d=4, e=5, f=6, g=7, h=8;
42
43     printf("Chequeo de creación: ");
44     lista = DLList_new();
45     assert(lista != NULL);
46     printf("OK!\n");
47
48     printf("Chequeo si está vacía: ");
49     assert(DLList_empty(lista));
50     printf("OK!\n");
51
52     printf("Chequeo si no tiene más elementos: ");
53     assert(!DLList_have_more(lista));
54     printf("OK!\n");
55
56     printf("Agrego elemento '%i' al inicio: ", a);
57     assert(DLList_unshift(lista, &a));
58     printf("OK!\n");
59
60     printf("Chequeo que no esté vacía: ");
61     assert(!DLList_empty(lista));
62     printf("OK!\n");
63
64     printf("Agrego elemento '%i' al final: ", b);
65     assert(DLList_push(lista, &b));
66     printf("OK!\n");
67
68     printf("Chequeo que no esté vacía: ");
69     assert(!DLList_empty(lista));
70     printf("OK!\n");
71
72     printf("Agrego elemento '%i' al inicio: ", c);
73     assert(DLList_unshift(lista, &c));
74     printf("OK!\n");
75
76     printf("Agrego elemento '%i' al inicio: ", d);
77     assert(DLList_unshift(lista, &d));
78     printf("OK!\n");
79
80     printf("Agrego elemento '%i' al final: ", e);
81     assert(DLList_push(lista, &e));
82     printf("OK!\n");
83
84     printf("Agrego elemento '%i' al final: ", f);
85     assert(DLList_push(lista, &f));
86     printf("OK!\n");
87
88     printf("Chequeo elemento actual: ");
89     assert(DLList_current(lista) == &f);
90     printf("OK!\n");
91
92     printf("Agrego elemento '%i' al final: ", g);
93     assert(DLList_push(lista, &g));
94     printf("OK!\n");
95
96     printf("Agrego elemento '%i' al inicio: ", h);
97     assert(DLList_unshift(lista, &h));
98     printf("OK!\n");
99
100     printf("Obtengo el primer elemento: ");
101     assert(DLList_begin(lista) == &h);
102     printf("OK!\n");
103
104     printf("Chequeo si hay más elementos: ");
105     assert(DLList_have_more(lista));
106     printf("OK!\n");
107
108     printf("Obtengo el elemento anterior elemento: ");
109     assert(DLList_prev(lista) == NULL);
110     printf("OK!\n");
111
112     printf("Chequeo que no haya más elementos: ");
113     assert(!DLList_have_more(lista));
114     printf("OK!\n");
115
116     printf("Obtengo el último elemento: ");
117     assert(DLList_end(lista) == &g);
118     printf("OK!\n");
119
120     printf("Chequeo si hay más elementos: ");
121     assert(DLList_have_more(lista));
122     printf("OK!\n");
123
124     printf("Obtengo el próximo elemento elemento: ");
125     assert(DLList_next(lista) == NULL);
126     printf("OK!\n");
127
128     printf("Chequeo que no haya más elementos: ");
129     assert(!DLList_have_more(lista));
130     printf("OK!\n");
131
132     printf("Recorro la lista...\n");
133     printf("Elemento 1: ");
134     assert(DLList_begin(lista) == &h);
135     printf("OK!\n");
136     printf("Elemento 2: ");
137     assert(DLList_next(lista) == &d);
138     printf("OK!\n");
139     printf("Elemento 3: ");
140     assert(DLList_next(lista) == &c);
141     printf("OK!\n");
142     printf("Elemento 4: ");
143     assert(DLList_next(lista) == &a);
144     printf("OK!\n");
145     printf("Elemento 5: ");
146     assert(DLList_next(lista) == &b);
147     printf("OK!\n");
148     printf("Elemento 6: ");
149     assert(DLList_next(lista) == &e);
150     printf("OK!\n");
151     printf("Elemento actual (6): ");
152     assert(DLList_current(lista) == &e);
153     printf("OK!\n");
154     printf("Elemento anterior (5): ");
155     assert(DLList_prev(lista) == &b);
156     printf("OK!\n");
157     printf("Elemento siguiente (6 de nuevo): ");
158     assert(DLList_next(lista) == &e);
159     printf("OK!\n");
160     printf("Elemento 7: ");
161     assert(DLList_next(lista) == &f);
162     printf("OK!\n");
163     printf("Elimino elemento 7: ");
164     assert(DLList_remove_current(lista) == &f);
165     printf("OK!\n");
166     printf("Me dejó en el elmento 8 (ahora 7): ");
167     assert(DLList_current(lista) == &g);
168     printf("OK!\n");
169     printf("Elemento 8: ");
170     assert(DLList_next(lista) == NULL);
171     printf("OK!\n");
172     printf("Chequeo que no haya más elementos: ");
173     assert(!DLList_have_more(lista));
174     printf("OK!\n");
175
176     printf("Saco el primer elemento: ");
177     assert(DLList_shift(lista) == &h);
178     printf("OK!\n");
179     printf("Chequeo elemento actual: ");
180     assert(DLList_current(lista) == &d);
181     printf("OK!\n");
182
183     printf("Saco el último elemento: ");
184     assert(DLList_pop(lista) == &g);
185     printf("OK!\n");
186     printf("Chequeo elemento actual: ");
187     assert(DLList_current(lista) == &e);
188     printf("OK!\n");
189
190     printf("Saco el último elemento: ");
191     assert(DLList_pop(lista) == &e);
192     printf("OK!\n");
193     printf("Chequeo elemento actual: ");
194     assert(DLList_current(lista) == &b);
195     printf("OK!\n");
196
197     printf("Saco el último elemento: ");
198     assert(DLList_pop(lista) == &b);
199     printf("OK!\n");
200     printf("Chequeo elemento actual: ");
201     assert(DLList_current(lista) == &a);
202     printf("OK!\n");
203
204     printf("Saco el primer elemento: ");
205     assert(DLList_shift(lista) == &d);
206     printf("OK!\n");
207     printf("Chequeo elemento actual: ");
208     assert(DLList_current(lista) == &c);
209     printf("OK!\n");
210
211     printf("Saco el primer elemento: ");
212     assert(DLList_shift(lista) == &c);
213     printf("OK!\n");
214     printf("Chequeo elemento actual: ");
215     assert(DLList_current(lista) == &a);
216     printf("OK!\n");
217
218     printf("Saco el primer elemento: ");
219     assert(DLList_shift(lista) == &a);
220     printf("OK!\n");
221     printf("Chequeo elemento actual: ");
222     assert(DLList_current(lista) == NULL);
223     printf("OK!\n");
224
225     printf("Chequeo si está vacía: ");
226     assert(DLList_empty(lista));
227     printf("OK!\n");
228
229     DLList_delete(lista);
230
231     return EXIT_SUCCESS;
232 }
233