Now using 2 spaces instead of tabs. Fix copyright years. Improve documentation
[cgds.git] / test / t.PriorityQueue.c
index 8cabc1e..f408f89 100644 (file)
 
 void t_priorityqueue_clear()
 {
-       PriorityQueue* pq = priorityqueue_new(int, MIN_T, 2);
+  PriorityQueue* pq = priorityqueue_new(int, MIN_T, 2);
 
-       // NOTE: items with same priorities are supported;
-       // since it is unused in this test, we arbitrarily choose 0.0
-       priorityqueue_insert(pq, 0, 0.0);
-       priorityqueue_insert(pq, 0, 0.0);
-       priorityqueue_insert(pq, 0, 0.0);
+  // NOTE: items with same priorities are supported;
+  // since it is unused in this test, we arbitrarily choose 0.0
+  priorityqueue_insert(pq, 0, 0.0);
+  priorityqueue_insert(pq, 0, 0.0);
+  priorityqueue_insert(pq, 0, 0.0);
 
-       priorityqueue_clear(pq);
-       lu_assert(priorityqueue_empty(pq));
+  priorityqueue_clear(pq);
+  lu_assert(priorityqueue_empty(pq));
 
-       priorityqueue_destroy(pq);
+  priorityqueue_destroy(pq);
 }
 
 void t_priorityqueue_size()
 {
-       PriorityQueue* pq = priorityqueue_new(double, MAX_T, 3);
+  PriorityQueue* pq = priorityqueue_new(double, MAX_T, 3);
 
-       priorityqueue_insert(pq, 0.0, 0.0);
-       priorityqueue_insert(pq, 0.0, 0.0);
-       priorityqueue_insert(pq, 0.0, 0.0);
-       lu_assert_int_eq(priorityqueue_size(pq), 3);
+  priorityqueue_insert(pq, 0.0, 0.0);
+  priorityqueue_insert(pq, 0.0, 0.0);
+  priorityqueue_insert(pq, 0.0, 0.0);
+  lu_assert_int_eq(priorityqueue_size(pq), 3);
 
-       priorityqueue_insert(pq, 0.0, 0.0);
-       priorityqueue_insert(pq, 0.0, 0.0);
-       lu_assert_int_eq(priorityqueue_size(pq), 5);
+  priorityqueue_insert(pq, 0.0, 0.0);
+  priorityqueue_insert(pq, 0.0, 0.0);
+  lu_assert_int_eq(priorityqueue_size(pq), 5);
 
-       priorityqueue_insert(pq, 0.0, 0.0);
-       priorityqueue_insert(pq, 0.0, 0.0);
-       priorityqueue_insert(pq, 0.0, 0.0);
-       lu_assert_int_eq(priorityqueue_size(pq), 8);
+  priorityqueue_insert(pq, 0.0, 0.0);
+  priorityqueue_insert(pq, 0.0, 0.0);
+  priorityqueue_insert(pq, 0.0, 0.0);
+  lu_assert_int_eq(priorityqueue_size(pq), 8);
 
-       priorityqueue_destroy(pq);
+  priorityqueue_destroy(pq);
 }
 
 void t_priorityqueue_push_pop_basic()
 {
-       PriorityQueue* pq = priorityqueue_new(int, MIN_T, 3);
-
-       priorityqueue_insert(pq, 1, 1.0);
-       priorityqueue_insert(pq, 2, 3.0);
-       priorityqueue_insert(pq, 3, 2.0);
-       priorityqueue_insert(pq, 4, 4.0);
-       priorityqueue_insert(pq, 5, 0.0);
-
-       int a;
-       priorityqueue_peek(pq, a);
-       lu_assert_int_eq(a, 5); //5 has "highest" priority (0.0, MIN_T)
-       priorityqueue_pop(pq);
-       priorityqueue_peek(pq, a);
-       lu_assert_int_eq(a, 1); //1 -> 1.0
-       priorityqueue_pop(pq);
-       priorityqueue_peek(pq, a);
-       lu_assert_int_eq(a, 3); //3 -> 2.0
-       priorityqueue_pop(pq);
-       priorityqueue_peek(pq, a);
-       lu_assert_int_eq(a, 2); //2 -> 3.0
-       priorityqueue_pop(pq);
-       priorityqueue_peek(pq, a);
-       lu_assert_int_eq(a, 4); //4 -> 4.0
-       priorityqueue_pop(pq);
-       lu_assert(priorityqueue_empty(pq));
-
-       pq->heap->hType = MAX_T; //HACK... (why not?)
-       priorityqueue_insert(pq, 1, 1.0);
-       priorityqueue_insert(pq, 2, 3.0);
-       priorityqueue_insert(pq, 3, 2.0);
-       priorityqueue_insert(pq, 4, 4.0);
-       priorityqueue_insert(pq, 5, 0.0);
-       priorityqueue_insert(pq, 6, 0.0);
-       priorityqueue_insert(pq, 7, 6.0);
-       priorityqueue_remove(pq, 6);
-       priorityqueue_remove(pq, 7);
-       priorityqueue_set(pq, 3, 5.0);
-       priorityqueue_set(pq, 5, 2.0);
-
-       priorityqueue_peek(pq, a);
-       lu_assert_int_eq(a, 3); //3 has highest priority (5.0, MAX_T)
-       priorityqueue_pop(pq);
-       priorityqueue_peek(pq, a);
-       lu_assert_int_eq(a, 4); //4 -> 4.0
-       priorityqueue_pop(pq);
-       priorityqueue_peek(pq, a);
-       lu_assert_int_eq(a, 2); //2 -> 3.0
-       priorityqueue_pop(pq);
-       priorityqueue_peek(pq, a);
-       lu_assert_int_eq(a, 5); //5 -> 2.0
-       priorityqueue_pop(pq);
-       priorityqueue_peek(pq, a);
-       lu_assert_int_eq(a, 1); // 1 -> 1.0
-       priorityqueue_pop(pq);
-
-       lu_assert(priorityqueue_empty(pq));
-       priorityqueue_destroy(pq);
+  PriorityQueue* pq = priorityqueue_new(int, MIN_T, 3);
+
+  priorityqueue_insert(pq, 1, 1.0);
+  priorityqueue_insert(pq, 2, 3.0);
+  priorityqueue_insert(pq, 3, 2.0);
+  priorityqueue_insert(pq, 4, 4.0);
+  priorityqueue_insert(pq, 5, 0.0);
+
+  int a;
+  priorityqueue_peek(pq, a);
+  lu_assert_int_eq(a, 5); //5 has "highest" priority (0.0, MIN_T)
+  priorityqueue_pop(pq);
+  priorityqueue_peek(pq, a);
+  lu_assert_int_eq(a, 1); //1 -> 1.0
+  priorityqueue_pop(pq);
+  priorityqueue_peek(pq, a);
+  lu_assert_int_eq(a, 3); //3 -> 2.0
+  priorityqueue_pop(pq);
+  priorityqueue_peek(pq, a);
+  lu_assert_int_eq(a, 2); //2 -> 3.0
+  priorityqueue_pop(pq);
+  priorityqueue_peek(pq, a);
+  lu_assert_int_eq(a, 4); //4 -> 4.0
+  priorityqueue_pop(pq);
+  lu_assert(priorityqueue_empty(pq));
+
+  pq->heap->hType = MAX_T; //HACK... (why not?)
+  priorityqueue_insert(pq, 1, 1.0);
+  priorityqueue_insert(pq, 2, 3.0);
+  priorityqueue_insert(pq, 3, 2.0);
+  priorityqueue_insert(pq, 4, 4.0);
+  priorityqueue_insert(pq, 5, 0.0);
+  priorityqueue_insert(pq, 6, 0.0);
+  priorityqueue_insert(pq, 7, 6.0);
+  priorityqueue_remove(pq, 6);
+  priorityqueue_remove(pq, 7);
+  priorityqueue_set(pq, 3, 5.0);
+  priorityqueue_set(pq, 5, 2.0);
+
+  priorityqueue_peek(pq, a);
+  lu_assert_int_eq(a, 3); //3 has highest priority (5.0, MAX_T)
+  priorityqueue_pop(pq);
+  priorityqueue_peek(pq, a);
+  lu_assert_int_eq(a, 4); //4 -> 4.0
+  priorityqueue_pop(pq);
+  priorityqueue_peek(pq, a);
+  lu_assert_int_eq(a, 2); //2 -> 3.0
+  priorityqueue_pop(pq);
+  priorityqueue_peek(pq, a);
+  lu_assert_int_eq(a, 5); //5 -> 2.0
+  priorityqueue_pop(pq);
+  priorityqueue_peek(pq, a);
+  lu_assert_int_eq(a, 1); // 1 -> 1.0
+  priorityqueue_pop(pq);
+
+  lu_assert(priorityqueue_empty(pq));
+  priorityqueue_destroy(pq);
 }
 
 void t_priorityqueue_push_pop_evolved()
 {
-       int n = 10;
-
-       PriorityQueue* pq = priorityqueue_new(StructTest1, MAX_T, 2);
-       StructTest1* st1 = (StructTest1*) safe_malloc(n * sizeof (StructTest1));
-       for (int i = n - 1; i >= 0; i--)
-       {
-               st1[i].a = i;
-               st1[i].b = (double) rand() / RAND_MAX;
-               priorityqueue_insert(pq, *(st1 + i), i); //item i has priority i
-       }
-       for (int i = n - 1; i >= 0; i--)
-       {
-               StructTest1 st1Cell;
-               priorityqueue_peek(pq, st1Cell);
-               lu_assert_int_eq(st1Cell.a, i);
-               priorityqueue_pop(pq);
-       }
-       safe_free(st1);
-       priorityqueue_destroy(pq);
-
-       pq = priorityqueue_new(StructTest2*, MAX_T, 4);
-       StructTest2* st2 = (StructTest2*) safe_malloc(n * sizeof (StructTest2));
-       for (int i = n - 1; i >= 0; i--)
-       {
-               st2[i].a = (float) rand() / RAND_MAX;
-               st2[i].b = (StructTest1*) safe_malloc(sizeof (StructTest1));
-               st2[i].b->a = i;
-               st2[i].b->b = (double) rand() / RAND_MAX;
-               // item i has priority i+1 if i is even, i-1 if i is odd
-               // that is to say, priorities are 1 0 3 2 5 4 ...
-               priorityqueue_insert(pq, st2 + i, i % 2 == 0 ? i + 1 : i - 1);
-       }
-       for (int i = n - 1; i >= 0; i--)
-       {
-               StructTest2* st2Cell;
-               priorityqueue_peek(pq, st2Cell);
-               // NOTE: i |--> i%2==0 ? i+1 : i-1 is an involution
-               lu_assert_int_eq(st2Cell->b->a, i % 2 == 0 ? i + 1 : i - 1);
-               priorityqueue_pop(pq);
-               safe_free(st2Cell->b);
-       }
-       safe_free(st2);
-       priorityqueue_destroy(pq);
+  int n = 10;
+
+  PriorityQueue* pq = priorityqueue_new(StructTest1, MAX_T, 2);
+  StructTest1* st1 = (StructTest1*) safe_malloc(n * sizeof (StructTest1));
+  for (int i = n - 1; i >= 0; i--)
+  {
+    st1[i].a = i;
+    st1[i].b = (double) rand() / RAND_MAX;
+    priorityqueue_insert(pq, *(st1 + i), i); //item i has priority i
+  }
+  for (int i = n - 1; i >= 0; i--)
+  {
+    StructTest1 st1Cell;
+    priorityqueue_peek(pq, st1Cell);
+    lu_assert_int_eq(st1Cell.a, i);
+    priorityqueue_pop(pq);
+  }
+  safe_free(st1);
+  priorityqueue_destroy(pq);
+
+  pq = priorityqueue_new(StructTest2*, MAX_T, 4);
+  StructTest2* st2 = (StructTest2*) safe_malloc(n * sizeof (StructTest2));
+  for (int i = n - 1; i >= 0; i--)
+  {
+    st2[i].a = (float) rand() / RAND_MAX;
+    st2[i].b = (StructTest1*) safe_malloc(sizeof (StructTest1));
+    st2[i].b->a = i;
+    st2[i].b->b = (double) rand() / RAND_MAX;
+    // item i has priority i+1 if i is even, i-1 if i is odd
+    // that is to say, priorities are 1 0 3 2 5 4 ...
+    priorityqueue_insert(pq, st2 + i, i % 2 == 0 ? i + 1 : i - 1);
+  }
+  for (int i = n - 1; i >= 0; i--)
+  {
+    StructTest2* st2Cell;
+    priorityqueue_peek(pq, st2Cell);
+    // NOTE: i |--> i%2==0 ? i+1 : i-1 is an involution
+    lu_assert_int_eq(st2Cell->b->a, i % 2 == 0 ? i + 1 : i - 1);
+    priorityqueue_pop(pq);
+    safe_free(st2Cell->b);
+  }
+  safe_free(st2);
+  priorityqueue_destroy(pq);
 }
 
 void t_priorityqueue_copy()
 {
-       int n = 10;
-
-       PriorityQueue* pq = priorityqueue_new(int, MIN_T, 3);
-       for (int i = 0; i < n; i++)
-               priorityqueue_insert(pq, rand() % 42, (double) rand() / RAND_MAX);
-       PriorityQueue* pqc = priorityqueue_copy(pq);
-
-       lu_assert_int_eq(priorityqueue_size(pq), priorityqueue_size(pqc));
-       int a, b;
-       for (int i = 0; i < n; i++)
-       {
-               priorityqueue_peek(pq, a);
-               priorityqueue_peek(pqc, b);
-               lu_assert_int_eq(a, b);
-               priorityqueue_pop(pq);
-               priorityqueue_pop(pqc);
-       }
-       priorityqueue_destroy(pq);
-       priorityqueue_destroy(pqc);
+  int n = 10;
+
+  PriorityQueue* pq = priorityqueue_new(int, MIN_T, 3);
+  for (int i = 0; i < n; i++)
+    priorityqueue_insert(pq, rand() % 42, (double) rand() / RAND_MAX);
+  PriorityQueue* pqc = priorityqueue_copy(pq);
+
+  lu_assert_int_eq(priorityqueue_size(pq), priorityqueue_size(pqc));
+  int a, b;
+  for (int i = 0; i < n; i++)
+  {
+    priorityqueue_peek(pq, a);
+    priorityqueue_peek(pqc, b);
+    lu_assert_int_eq(a, b);
+    priorityqueue_pop(pq);
+    priorityqueue_pop(pqc);
+  }
+  priorityqueue_destroy(pq);
+  priorityqueue_destroy(pqc);
 }