home *** CD-ROM | disk | FTP | other *** search
/ GEMini Atari / GEMini_Atari_CD-ROM_Walnut_Creek_December_1993.iso / files / gnu / g__lib / tqueue.cc < prev    next >
Encoding:
C/C++ Source or Header  |  1993-07-23  |  3.4 KB  |  179 lines

  1. /*
  2.   test of Queues
  3. */
  4.  
  5. #include <stream.h>
  6. #include <assert.h>
  7. #include "int.Queue.h"
  8.  
  9. #define tassert(ex) {if ((ex)) cerr << #ex << "\n"; \
  10.                        else _assert(#ex, __FILE__,__LINE__); }
  11.  
  12.  
  13. int SIZE;
  14.  
  15. void print(intQueue& a)
  16. {
  17.   int maxprint = 20;
  18.   cout << "[";
  19.   int k = 0;
  20.   while (!a.empty() && k++ < maxprint)
  21.     cout << a.deq() << " ";
  22.   if (k == maxprint) 
  23.     cout << "]\n";
  24.   else
  25.   {
  26.     while (!a.empty()) a.del_front();
  27.     cout << "...]\n";
  28.   }
  29.   assert(a.empty());
  30. }
  31.  
  32. #include "int.XPQueue.h"
  33.  
  34. void XPtest () 
  35. {
  36.   intXPQueue q(SIZE/2);
  37.   assert(q.OK());
  38.   for (int i = 0; i < SIZE; ++i)
  39.     q.enq(i);
  40.   assert(q.length() == SIZE);
  41.   assert(q.front() == 0);
  42.   assert(!q.full());
  43.   intXPQueue q1(SIZE*2);
  44.   for (i = 0; i < SIZE; ++i)
  45.   {
  46.     int x = q.deq();
  47.     assert(x == i);
  48.     q1.enq(x);
  49.   }
  50.   assert(q.empty());
  51.   assert(q1.length() == SIZE);
  52.   assert(q1.front() == 0);
  53.   assert(q.OK());
  54.   assert(q1.OK());
  55.   intXPQueue q2 (q1);
  56.   assert(q2.length() == SIZE);
  57.   assert(q2.front() == 0);
  58.   assert(q2.OK());
  59.   q1.clear();
  60.   assert(q1.empty());
  61.   q1 = q2;
  62.   assert(q1.length() == SIZE);
  63.   assert(q1.front() == 0);
  64.   assert(q1.OK());
  65.   q1.del_front();
  66.   assert(q1.length() == (SIZE-1));
  67.   assert(q1.front() == 1);
  68.   cout << "q1:"; print(q1);
  69.   assert(q.OK());
  70.   assert(q1.OK());
  71.   assert(q2.OK());
  72. }
  73.  
  74. #include "int.VQueue.h"
  75.  
  76. void Vtest () 
  77. {
  78.   intVQueue q(SIZE);
  79.   assert(q.OK());
  80.   for (int i = 0; i < SIZE; ++i)
  81.     q.enq(i);
  82.   assert(q.length() == SIZE);
  83.   assert(q.front() == 0);
  84.   assert(q.full());
  85.   intVQueue q1(SIZE);
  86.   for (i = 0; i < SIZE; ++i)
  87.   {
  88.     int x = q.deq();
  89.     assert(x == i);
  90.     q1.enq(x);
  91.   }
  92.   assert(q.empty());
  93.   assert(q1.length() == SIZE);
  94.   assert(q1.front() == 0);
  95.   assert(q.OK());
  96.   assert(q1.OK());
  97.   intVQueue q2 (q1);
  98.   assert(q2.length() == SIZE);
  99.   assert(q2.front() == 0);
  100.   assert(q2.OK());
  101.   q1.clear();
  102.   assert(q1.empty());
  103.   q1 = q2;
  104.   assert(q1.length() == SIZE);
  105.   assert(q1.front() == 0);
  106.   assert(q1.OK());
  107.   q1.del_front();
  108.   assert(q1.length() == (SIZE-1));
  109.   assert(q1.front() == 1);
  110.   cout << "q1:"; print(q1);
  111.   assert(q.OK());
  112.   assert(q1.OK());
  113.   assert(q2.OK());
  114. }
  115.  
  116. #include "int.SLQueue.h"
  117.  
  118. void SLtest () 
  119. {
  120.   intXPQueue q;
  121.   assert(q.OK());
  122.   for (int i = 0; i < SIZE; ++i)
  123.     q.enq(i);
  124.   assert(q.length() == SIZE);
  125.   assert(q.front() == 0);
  126.   assert(!q.full());
  127.   intXPQueue q1;
  128.   for (i = 0; i < SIZE; ++i)
  129.   {
  130.     int x = q.deq();
  131.     assert(x == i);
  132.     q1.enq(x);
  133.   }
  134.   assert(q.empty());
  135.   assert(q1.length() == SIZE);
  136.   assert(q1.front() == 0);
  137.   assert(q.OK());
  138.   assert(q1.OK());
  139.   intXPQueue q2 (q1);
  140.   assert(q2.length() == SIZE);
  141.   assert(q2.front() == 0);
  142.   assert(q2.OK());
  143.   q1.clear();
  144.   assert(q1.empty());
  145.   q1 = q2;
  146.   assert(q1.length() == SIZE);
  147.   assert(q1.front() == 0);
  148.   assert(q1.OK());
  149.   q1.del_front();
  150.   assert(q1.length() == (SIZE-1));
  151.   assert(q1.front() == 1);
  152.   cout << "q1:"; print(q1);
  153.   assert(q.OK());
  154.   assert(q1.OK());
  155.   assert(q2.OK());
  156. }
  157.  
  158.  
  159. main(int argv, char** argc)
  160. {
  161.   if (argv > 1)
  162.   {
  163.     SIZE = abs(atoi(argc[1]));
  164.     SIZE &= ~1;
  165.   }
  166.   else
  167.     SIZE = 100;
  168.   start_timer();
  169.   cout << "XP queues:\n"; XPtest();
  170.   cout << "\ntime = " << return_elapsed_time(0.0) << "\n";
  171.   start_timer();
  172.   cout << "V queues:\n"; Vtest();
  173.   cout << "\ntime = " << return_elapsed_time(0.0) << "\n";
  174.   start_timer();
  175.   cout << "SL queues:\n"; SLtest();
  176.   cout << "\ntime = " << return_elapsed_time(0.0) << "\n";
  177.   cout << "\nEnd of test\n";
  178. }
  179.