]> git.llucax.com Git - z.facultad/75.42/calculadora.git/blob - dllist_test.c
Se agregan reglas para pruebas al Makefile.
[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;
41     int a=1, b=2, c=3, d=4, e=5, f=6, g=7, h=8;
42
43     printf("Chequeo de inicialización: ");
44     assert(DLList_init(&lista));
45     printf("OK!\n");
46
47     printf("Chequeo si está vacía: ");
48     assert(DLList_empty(&lista));
49     printf("OK!\n");
50
51     printf("Chequeo si no tiene más elementos: ");
52     assert(!DLList_have_more(&lista));
53     printf("OK!\n");
54
55     printf("Agrego elemento '%i' al inicio: ", a);
56     assert(DLList_unshift(&lista, &a));
57     printf("OK!\n");
58
59     printf("Chequeo que no esté vacía: ");
60     assert(!DLList_empty(&lista));
61     printf("OK!\n");
62
63     printf("Agrego elemento '%i' al final: ", b);
64     assert(DLList_push(&lista, &b));
65     printf("OK!\n");
66
67     printf("Chequeo que no esté vacía: ");
68     assert(!DLList_empty(&lista));
69     printf("OK!\n");
70
71     printf("Agrego elemento '%i' al inicio: ", c);
72     assert(DLList_unshift(&lista, &c));
73     printf("OK!\n");
74
75     printf("Agrego elemento '%i' al inicio: ", d);
76     assert(DLList_unshift(&lista, &d));
77     printf("OK!\n");
78
79     printf("Agrego elemento '%i' al final: ", e);
80     assert(DLList_push(&lista, &e));
81     printf("OK!\n");
82
83     printf("Agrego elemento '%i' al final: ", f);
84     assert(DLList_push(&lista, &f));
85     printf("OK!\n");
86
87     printf("Chequeo elemento actual: ");
88     assert(DLList_current(&lista) == &f);
89     printf("OK!\n");
90
91     printf("Agrego elemento '%i' al final: ", g);
92     assert(DLList_push(&lista, &g));
93     printf("OK!\n");
94
95     printf("Agrego elemento '%i' al inicio: ", h);
96     assert(DLList_unshift(&lista, &h));
97     printf("OK!\n");
98
99     printf("Obtengo el primer elemento: ");
100     assert(DLList_begin(&lista) == &h);
101     printf("OK!\n");
102
103     printf("Chequeo si hay más elementos: ");
104     assert(DLList_have_more(&lista));
105     printf("OK!\n");
106
107     printf("Obtengo el elemento anterior elemento: ");
108     assert(DLList_prev(&lista) == NULL);
109     printf("OK!\n");
110
111     printf("Chequeo que no haya más elementos: ");
112     assert(!DLList_have_more(&lista));
113     printf("OK!\n");
114
115     printf("Obtengo el último elemento: ");
116     assert(DLList_end(&lista) == &g);
117     printf("OK!\n");
118
119     printf("Chequeo si hay más elementos: ");
120     assert(DLList_have_more(&lista));
121     printf("OK!\n");
122
123     printf("Obtengo el próximo elemento elemento: ");
124     assert(DLList_next(&lista) == NULL);
125     printf("OK!\n");
126
127     printf("Chequeo que no haya más elementos: ");
128     assert(!DLList_have_more(&lista));
129     printf("OK!\n");
130
131     printf("Recorro la lista...\n");
132     printf("Elemento 1: ");
133     assert(DLList_begin(&lista) == &h);
134     printf("OK!\n");
135     printf("Elemento 2: ");
136     assert(DLList_next(&lista) == &d);
137     printf("OK!\n");
138     printf("Elemento 3: ");
139     assert(DLList_next(&lista) == &c);
140     printf("OK!\n");
141     printf("Elemento 4: ");
142     assert(DLList_next(&lista) == &a);
143     printf("OK!\n");
144     printf("Elemento 5: ");
145     assert(DLList_next(&lista) == &b);
146     printf("OK!\n");
147     printf("Elemento 6: ");
148     assert(DLList_next(&lista) == &e);
149     printf("OK!\n");
150     printf("Elemento actual (6): ");
151     assert(DLList_current(&lista) == &e);
152     printf("OK!\n");
153     printf("Elemento anterior (5): ");
154     assert(DLList_prev(&lista) == &b);
155     printf("OK!\n");
156     printf("Elemento siguiente (6 de nuevo): ");
157     assert(DLList_next(&lista) == &e);
158     printf("OK!\n");
159     printf("Elemento 7: ");
160     assert(DLList_next(&lista) == &f);
161     printf("OK!\n");
162     printf("Elemento 8: ");
163     assert(DLList_next(&lista) == &g);
164     printf("OK!\n");
165     printf("Elemento 9: ");
166     assert(DLList_next(&lista) == NULL);
167     printf("OK!\n");
168     printf("Chequeo que no haya más elementos: ");
169     assert(!DLList_have_more(&lista));
170     printf("OK!\n");
171
172     printf("Saco el primer elemento: ");
173     assert(DLList_shift(&lista) == &h);
174     printf("OK!\n");
175     printf("Chequeo elemento actual: ");
176     assert(DLList_current(&lista) == &d);
177     printf("OK!\n");
178
179     printf("Saco el último elemento: ");
180     assert(DLList_pop(&lista) == &g);
181     printf("OK!\n");
182     printf("Chequeo elemento actual: ");
183     assert(DLList_current(&lista) == &f);
184     printf("OK!\n");
185
186     printf("Saco el último elemento: ");
187     assert(DLList_pop(&lista) == &f);
188     printf("OK!\n");
189     printf("Chequeo elemento actual: ");
190     assert(DLList_current(&lista) == &e);
191     printf("OK!\n");
192
193     printf("Saco el último elemento: ");
194     assert(DLList_pop(&lista) == &e);
195     printf("OK!\n");
196     printf("Chequeo elemento actual: ");
197     assert(DLList_current(&lista) == &b);
198     printf("OK!\n");
199
200     printf("Saco el primer elemento: ");
201     assert(DLList_shift(&lista) == &d);
202     printf("OK!\n");
203     printf("Chequeo elemento actual: ");
204     assert(DLList_current(&lista) == &c);
205     printf("OK!\n");
206
207     printf("Saco el primer elemento: ");
208     assert(DLList_shift(&lista) == &c);
209     printf("OK!\n");
210     printf("Chequeo elemento actual: ");
211     assert(DLList_current(&lista) == &a);
212     printf("OK!\n");
213
214     printf("Saco el primer elemento: ");
215     assert(DLList_shift(&lista) == &a);
216     printf("OK!\n");
217     printf("Chequeo elemento actual: ");
218     assert(DLList_current(&lista) == &b);
219     printf("OK!\n");
220
221     printf("Saco el primer elemento: ");
222     assert(DLList_shift(&lista) == &b);
223     printf("OK!\n");
224     printf("Chequeo elemento actual: ");
225     assert(DLList_current(&lista) == NULL);
226     printf("OK!\n");
227     printf("Chequeo si está vacía: ");
228     assert(DLList_empty(&lista));
229     printf("OK!\n");
230
231     return EXIT_SUCCESS;
232 }
233