/* * testStack.c - Testsuite fuer den nicht-begrenzten Stack * * Blatt 2, Aufgabe 1, Grundlagen der Informatik 2 fuer E-Techniker * SoSe 2002, (c) Jan Bredereke * * $Id: testStack.c,v 1.3 2002/05/29 15:33:07 brederek Exp $ */ #include #include "unboundedStack.h" int main() { stackH s1; stackH s2; struct stackItem tmpObj; struct stackItem tmpObj2; int cnt; int ok; printf("Erzeuge einen Stack."); s1 = createStack(); printf("Stack leer? - %s\n", (isEmpty(s1) ? "OK": "Fehler!")); printf("Erzeuge einen Datensatz.\n"); tmpObj.artikeltyp[0] = '\0'; tmpObj.artikelId = 0; tmpObj.artikelvolumen = 0; printf("Push Datensatz auf Stack.\n"); push(s1, tmpObj); printf("Stack nicht leer? - %s\n", (!isEmpty(s1) ? "OK": "Fehler!")); tmpObj2 = peek(s1); printf("Peek liefert Datensatz zurueck? - %s\n", (!memcmp((void *) &tmpObj2, (void *) &tmpObj, sizeof(struct stackItem)) ? "OK": "Fehler!")); tmpObj2 = pop(s1); printf("Pop liefert Datensatz zurueck? - %s\n", (!memcmp((void *) &tmpObj2, (void *) &tmpObj, sizeof(struct stackItem)) ? "OK": "Fehler!")); printf("Stack wieder leer? - %s\n", (isEmpty(s1) ? "OK": "Fehler!")); printf("Push Datensatz wieder auf Stack.\n"); push(s1, tmpObj); printf("Erzeuge zweiten Stack (Gegenseitige Beeinflussung?).\n"); s2 = createStack(); printf("Zweiter Stack leer? - %s\n", (isEmpty(s2) ? "OK": "Fehler!")); tmpObj2 = pop(s1); printf("Pop vom ersten Stack liefert Datensatz zurueck? - %s\n", (!memcmp((void *) &tmpObj2, (void *) &tmpObj, sizeof(struct stackItem)) ? "OK": "Fehler!")); printf("Push 10000 Datensaetze auf (ersten) Stack.\n"); for (cnt = 1; cnt <= 10000; cnt++) { tmpObj.artikelId = cnt; tmpObj.artikelvolumen = cnt; push(s1, tmpObj); } printf("Peek/Pop 10000 Datensaetze, kommen die richtigen zurueck? - "); ok = 1; for (cnt = 10000; cnt >= 1; cnt--) { tmpObj2 = peek(s1); tmpObj = pop(s1); if (memcmp((void *) &tmpObj2, (void *) &tmpObj, sizeof(struct stackItem))) { printf("Fehler bei peek in Datensatz %d!\n", cnt); } if ((tmpObj.artikelId != cnt) || (tmpObj.artikelvolumen != cnt)) { printf("Fehler in Datensatz %d!\n", cnt); ok = 0; break; } } if (ok) { printf("OK\n"); } printf("Stack wieder leer? - %s\n", (isEmpty(s1) ? "OK": "Fehler!")); }