11 Heap<Data>::Node heap_node;
13 bool operator < (Data &d)
24 static const int heap_size = 10000;
33 for (int i = 0; i < heap_size; i++) {
35 d->data = random() & 0x7fffffff;
39 unsigned int last = 0;
41 for (int i = 0; i < heap_size; i++) {
42 Data *d = heap.get_top();
44 printf("FAILED: returned NULL early\n");
48 if (d->magic != 0xdeadbeef) {
49 printf("FAILED: garbage data returned\n");
53 if (d->data >= 0x80000000) {
54 printf("FAILED: duplicate or garbage data returned\n");
61 printf("FAILED: not monotonically increasing\n");
69 for (int i = 0; i < heap_size; i++) {
71 d->data = random() & 0x7fffffff;
77 for (int i = 0; i < heap_size; i++) {
78 Data *d = heap.get_top();
80 printf("FAILED: with requeue: returned NULL early\n");
84 if (d->magic != 0xdeadbeef) {
85 printf("FAILED: with requeue: garbage data returned\n");
89 if (d->data >= 0x80000000) {
90 printf("FAILED: with requeue: duplicate or garbage data returned\n");
97 printf("FAILED: with requeue: not monotonically increasing\n");
102 d->data = 0x80000000;
104 for (int j = 0; j < 10; j++) {
105 d = &data[random() % heap_size];
107 if (d->data == 0x80000000)
110 d->data = random() & 0x7fffffff;