This repository has been archived by the owner on Aug 5, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.cpp
153 lines (124 loc) · 4.34 KB
/
main.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
//
// Copied from the template and slightly added. Version 1.0
//
#include <iostream>
#include "pqueue2.h"
#include <time.h>
using namespace std;
#define MAX 100000
#define TestC 10
char *randomString(int size) {
char *str = (char *) malloc((size + 1) * sizeof(char));
for (int i = 0; i < size; i++) {
str[i] = (char) ((rand() % 26) + 'A');
}
str[size] = '\0';
return str;
}
void time(void);
int main() { //TESTREIBER
srand(time(NULL));
int i, j = 0;
char *strings[MAX];
PriorityQueue<string> *pq = new PriorityQueue<string>(2);
cout << "-------- Testtreiber Start ---------" << endl;
//Array könnte zu klein sein, da die Größe des Arrays 2 beträgt und wir 6 Elemente einfügen
try {
for (int k = 0; k < 6; k++) {
pq->insert(to_string(k), rand() % 100);
}
} catch (MyException e) {
cout << e.msg() << endl;
}
cout << "Es sollte kein Fehler ausgegeben werden. Fall 0 abgeschlossen" << endl << endl;
//Es werden 7 von 6 Elemente entfernt.
try {
for (int l = 0; l < 7; l++) {
pq->extractMin();
}
} catch (MyException e) {
cout << e.msg() << endl;
}
cout << "Es sollte ein Fehler ausgegeben werden. Fall 1 abgeschlosssen" << endl << endl;
//Einfüngen und löschen von einem Element wird geprüft.
try {
pq->insert("Hello World", 20);
pq->remove("Hello World");
} catch (MyException e) {
cout << e.msg() << endl;
}
cout << "Es sollte kein Fehler ausgegeben werden. Fall 2 abgeschlossen" << endl << endl;
//Entfernen eines Elements, welches nicht verfügbar ist.
try {
pq->remove("YAHWS");
} catch (MyException e) {
cout << e.msg() << endl;
}
cout << "Es sollte ein Fehler ausgegeben werden. Fall 3 abgeschlossen" << endl << endl;
//Testen der Decreasekey funktion
try {
pq->insert("Text 1", 10);
pq->insert("Text 2", 20);
pq->insert("Text 3", 30);
pq->decreaseKey("Text 2", 5);
cout << "Erwartet: Text 2 - Ausgabe:" << pq->extractMin() << endl;
cout << "Erwartet: Text 1 - Ausgabe:" << pq->extractMin() << endl;
cout << "Erwartet: Text 3 - Ausgabe:" << pq->extractMin() << endl;
} catch (MyException e) {
cout << e.msg() << endl;
}
cout << "Es sollte kein Fehler ausgegebn werden. Fall 4 abgeschlossen" << endl << endl;
try {
cout << "Erwartet: Das Array ist leer - Ausgabe: "; //Text ist im Buffer
if (pq->isEmpty())
cout << "Das Array ist leer" << endl;
else
cout << "Das Array ist nicht leer" << endl;
pq->insert("Hello World", 100);
cout << "Erwartet: Das Array ist nicht leer - Ausgabe: ";
if (pq->isEmpty())
cout << "Das Array ist leer." << endl;
else
cout << "Das Array ist nicht leer." << endl;
} catch (MyException e) {
cout << e.msg() << endl;
}
cout << "Es sollte kein Fehler ausgegeben werden. Fall 5 abgeschlossen" << endl << endl;
cout << "-------- Testtreiber Ende -------------" << endl << endl;
//time(); // Wenn Zeitmessung benötigt wieder einkommentieren
return 0;
}
void time() {
try {
int i;
char *strings[MAX];
clock_t tic, toc;
srand(time(NULL));
for (i = 0; i < MAX; i++) {
strings[i] = randomString(8);
}
PriorityQueue<string> *pq = new PriorityQueue<string>();
tic = clock();
for (i = 0; i < MAX; i++) {
pq->insert(strings[i], rand() % 100);
}
toc = clock();
printf("Insertion time: %.10f\n", (float) (toc - tic) / CLOCKS_PER_SEC);
printf("Debugger: Tic: %f - Toc: %f\n", (float) tic / CLOCKS_PER_SEC,
(float) toc / CLOCKS_PER_SEC); //Added for debugging reasons
tic = clock();
for (i = 0; i < MAX; i++) {
pq->extractMin();
}
toc = clock();
printf("Extract time: %.10f\n", (float) (toc - tic) / CLOCKS_PER_SEC);
printf("Debugger: Tic: %f - Toc: %f\n", (float) tic / CLOCKS_PER_SEC,
(float) toc / CLOCKS_PER_SEC); //Added for debugging reasons
delete pq;
for (i = 0; i < MAX; i++) {
free(strings[i]);
}
} catch (MyException e) {
cout << e.msg() << endl;
}
}