]> git.llucax.com Git - z.facultad/75.42/euler-oo.git/blob - dllist_test.cpp
Typo arreglado.
[z.facultad/75.42/euler-oo.git] / dllist_test.cpp
1 /* vim: set et sts=4 sw=4 fdm=indent fdn=1 fo+=t tw=80:
2  *
3  * Taller de Programación (75.42).
4  *
5  * Ejercicio Número 3:
6  * Lista de figuras.
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 sep 20 19:42:44 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 #include <cstdlib>
26 #include <cstdio>
27 #include <cassert>
28
29 /**
30  * Programa para probar la DLList.
31  *
32  * \return EXIT_SUCCESS o código de error devuelto por abort() si hubo un
33  *         error.
34  */
35 int main(void) {
36     DLList lista;
37     int a=1, b=2, c=3, d=4, e=5, f=6, g=7, h=8;
38
39     printf("Chequeo si está vacía: ");
40     assert(lista.empty());
41     printf("OK!\n");
42
43     printf("Chequeo si no tiene más elementos: ");
44     assert(!lista.have_more());
45     printf("OK!\n");
46
47     printf("Agrego elemento '%i' al inicio: ", a);
48     assert(lista.unshift(&a));
49     printf("OK!\n");
50
51     printf("Chequeo que no esté vacía: ");
52     assert(!lista.empty());
53     printf("OK!\n");
54
55     printf("Agrego elemento '%i' al final: ", b);
56     assert(lista.push(&b));
57     printf("OK!\n");
58
59     printf("Chequeo que no esté vacía: ");
60     assert(!lista.empty());
61     printf("OK!\n");
62
63     printf("Agrego elemento '%i' al inicio: ", c);
64     assert(lista.unshift(&c));
65     printf("OK!\n");
66
67     printf("Agrego elemento '%i' al inicio: ", d);
68     assert(lista.unshift(&d));
69     printf("OK!\n");
70
71     printf("Agrego elemento '%i' al final: ", e);
72     assert(lista.push(&e));
73     printf("OK!\n");
74
75     printf("Agrego elemento '%i' al final: ", f);
76     assert(lista.push(&f));
77     printf("OK!\n");
78
79     printf("Chequeo elemento actual: ");
80     assert(lista.current() == &f);
81     printf("OK!\n");
82
83     printf("Agrego elemento '%i' al final: ", g);
84     assert(lista.push(&g));
85     printf("OK!\n");
86
87     printf("Agrego elemento '%i' al inicio: ", h);
88     assert(lista.unshift(&h));
89     printf("OK!\n");
90
91     printf("Obtengo el primer elemento: ");
92     assert(lista.begin() == &h);
93     printf("OK!\n");
94
95     printf("Chequeo si hay más elementos: ");
96     assert(lista.have_more());
97     printf("OK!\n");
98
99     printf("Obtengo el elemento anterior elemento: ");
100     assert(lista.prev() == NULL);
101     printf("OK!\n");
102
103     printf("Chequeo que no haya más elementos: ");
104     assert(!lista.have_more());
105     printf("OK!\n");
106
107     printf("Obtengo el último elemento: ");
108     assert(lista.end() == &g);
109     printf("OK!\n");
110
111     printf("Chequeo si hay más elementos: ");
112     assert(lista.have_more());
113     printf("OK!\n");
114
115     printf("Obtengo el próximo elemento elemento: ");
116     assert(lista.next() == NULL);
117     printf("OK!\n");
118
119     printf("Chequeo que no haya más elementos: ");
120     assert(!lista.have_more());
121     printf("OK!\n");
122
123     printf("Recorro la lista...\n");
124     printf("Elemento 1: ");
125     assert(lista.begin() == &h);
126     printf("OK!\n");
127     printf("Elemento 2: ");
128     assert(lista.next() == &d);
129     printf("OK!\n");
130     printf("Elemento 3: ");
131     assert(lista.next() == &c);
132     printf("OK!\n");
133     printf("Elemento 4: ");
134     assert(lista.next() == &a);
135     printf("OK!\n");
136     printf("Elemento 5: ");
137     assert(lista.next() == &b);
138     printf("OK!\n");
139     printf("Elemento 6: ");
140     assert(lista.next() == &e);
141     printf("OK!\n");
142     printf("Elemento actual (6): ");
143     assert(lista.current() == &e);
144     printf("OK!\n");
145     printf("Elemento anterior (5): ");
146     assert(lista.prev() == &b);
147     printf("OK!\n");
148     printf("Elemento siguiente (6 de nuevo): ");
149     assert(lista.next() == &e);
150     printf("OK!\n");
151     printf("Elemento 7: ");
152     assert(lista.next() == &f);
153     printf("OK!\n");
154     printf("Elimino elemento 7: ");
155     assert(lista.remove_current() == &f);
156     printf("OK!\n");
157     printf("Me dejó en el elmento 8 (ahora 7): ");
158     assert(lista.current() == &g);
159     printf("OK!\n");
160     printf("Elemento 8: ");
161     assert(lista.next() == NULL);
162     printf("OK!\n");
163     printf("Chequeo que no haya más elementos: ");
164     assert(!lista.have_more());
165     printf("OK!\n");
166
167     printf("Saco el primer elemento: ");
168     assert(lista.shift() == &h);
169     printf("OK!\n");
170     printf("Chequeo elemento actual: ");
171     assert(lista.current() == &d);
172     printf("OK!\n");
173
174     printf("Saco el último elemento: ");
175     assert(lista.pop() == &g);
176     printf("OK!\n");
177     printf("Chequeo elemento actual: ");
178     assert(lista.current() == &e);
179     printf("OK!\n");
180
181     printf("Saco el último elemento: ");
182     assert(lista.pop() == &e);
183     printf("OK!\n");
184     printf("Chequeo elemento actual: ");
185     assert(lista.current() == &b);
186     printf("OK!\n");
187
188     printf("Saco el último elemento: ");
189     assert(lista.pop() == &b);
190     printf("OK!\n");
191     printf("Chequeo elemento actual: ");
192     assert(lista.current() == &a);
193     printf("OK!\n");
194
195     printf("Saco el primer elemento: ");
196     assert(lista.shift() == &d);
197     printf("OK!\n");
198     printf("Chequeo elemento actual: ");
199     assert(lista.current() == &c);
200     printf("OK!\n");
201
202     printf("Saco el primer elemento: ");
203     assert(lista.shift() == &c);
204     printf("OK!\n");
205     printf("Chequeo elemento actual: ");
206     assert(lista.current() == &a);
207     printf("OK!\n");
208
209     printf("Saco el primer elemento: ");
210     assert(lista.shift() == &a);
211     printf("OK!\n");
212     printf("Chequeo elemento actual: ");
213     assert(lista.current() == NULL);
214     printf("OK!\n");
215
216     printf("Chequeo si está vacía: ");
217     assert(lista.empty());
218     printf("OK!\n");
219
220     return EXIT_SUCCESS;
221 }
222