1 /* vim: set et sts=4 sw=4 fdm=indent fdn=1 fo+=t tw=80:
3 * Taller de Programación (75.42).
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/).
12 * Creado: sáb sep 20 19:42:44 ART 2003
19 * Hace varios chequeos para probar si anda bien la
20 * \ref DLList "lista doblemente enlazada".
30 * Programa para probar la DLList.
32 * \return EXIT_SUCCESS o código de error devuelto por abort() si hubo un
37 int a=1, b=2, c=3, d=4, e=5, f=6, g=7, h=8;
39 printf("Chequeo si está vacía: ");
40 assert(lista.empty());
43 printf("Chequeo si no tiene más elementos: ");
44 assert(!lista.have_more());
47 printf("Agrego elemento '%i' al inicio: ", a);
48 assert(lista.unshift(&a));
51 printf("Chequeo que no esté vacía: ");
52 assert(!lista.empty());
55 printf("Agrego elemento '%i' al final: ", b);
56 assert(lista.push(&b));
59 printf("Chequeo que no esté vacía: ");
60 assert(!lista.empty());
63 printf("Agrego elemento '%i' al inicio: ", c);
64 assert(lista.unshift(&c));
67 printf("Agrego elemento '%i' al inicio: ", d);
68 assert(lista.unshift(&d));
71 printf("Agrego elemento '%i' al final: ", e);
72 assert(lista.push(&e));
75 printf("Agrego elemento '%i' al final: ", f);
76 assert(lista.push(&f));
79 printf("Chequeo elemento actual: ");
80 assert(lista.current() == &f);
83 printf("Agrego elemento '%i' al final: ", g);
84 assert(lista.push(&g));
87 printf("Agrego elemento '%i' al inicio: ", h);
88 assert(lista.unshift(&h));
91 printf("Obtengo el primer elemento: ");
92 assert(lista.begin() == &h);
95 printf("Chequeo si hay más elementos: ");
96 assert(lista.have_more());
99 printf("Obtengo el elemento anterior elemento: ");
100 assert(lista.prev() == NULL);
103 printf("Chequeo que no haya más elementos: ");
104 assert(!lista.have_more());
107 printf("Obtengo el último elemento: ");
108 assert(lista.end() == &g);
111 printf("Chequeo si hay más elementos: ");
112 assert(lista.have_more());
115 printf("Obtengo el próximo elemento elemento: ");
116 assert(lista.next() == NULL);
119 printf("Chequeo que no haya más elementos: ");
120 assert(!lista.have_more());
123 printf("Recorro la lista...\n");
124 printf("Elemento 1: ");
125 assert(lista.begin() == &h);
127 printf("Elemento 2: ");
128 assert(lista.next() == &d);
130 printf("Elemento 3: ");
131 assert(lista.next() == &c);
133 printf("Elemento 4: ");
134 assert(lista.next() == &a);
136 printf("Elemento 5: ");
137 assert(lista.next() == &b);
139 printf("Elemento 6: ");
140 assert(lista.next() == &e);
142 printf("Elemento actual (6): ");
143 assert(lista.current() == &e);
145 printf("Elemento anterior (5): ");
146 assert(lista.prev() == &b);
148 printf("Elemento siguiente (6 de nuevo): ");
149 assert(lista.next() == &e);
151 printf("Elemento 7: ");
152 assert(lista.next() == &f);
154 printf("Elimino elemento 7: ");
155 assert(lista.remove_current() == &f);
157 printf("Me dejó en el elmento 8 (ahora 7): ");
158 assert(lista.current() == &g);
160 printf("Elemento 8: ");
161 assert(lista.next() == NULL);
163 printf("Chequeo que no haya más elementos: ");
164 assert(!lista.have_more());
167 printf("Saco el primer elemento: ");
168 assert(lista.shift() == &h);
170 printf("Chequeo elemento actual: ");
171 assert(lista.current() == &d);
174 printf("Saco el último elemento: ");
175 assert(lista.pop() == &g);
177 printf("Chequeo elemento actual: ");
178 assert(lista.current() == &e);
181 printf("Saco el último elemento: ");
182 assert(lista.pop() == &e);
184 printf("Chequeo elemento actual: ");
185 assert(lista.current() == &b);
188 printf("Saco el último elemento: ");
189 assert(lista.pop() == &b);
191 printf("Chequeo elemento actual: ");
192 assert(lista.current() == &a);
195 printf("Saco el primer elemento: ");
196 assert(lista.shift() == &d);
198 printf("Chequeo elemento actual: ");
199 assert(lista.current() == &c);
202 printf("Saco el primer elemento: ");
203 assert(lista.shift() == &c);
205 printf("Chequeo elemento actual: ");
206 assert(lista.current() == &a);
209 printf("Saco el primer elemento: ");
210 assert(lista.shift() == &a);
212 printf("Chequeo elemento actual: ");
213 assert(lista.current() == NULL);
216 printf("Chequeo si está vacía: ");
217 assert(lista.empty());