home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / yacl-012.zip / basedemo / bitset / bittest.cxx next >
C/C++ Source or Header  |  1994-10-14  |  4KB  |  134 lines

  1.  
  2.  
  3.  
  4. // Test program for BitSets
  5. //
  6. //  M. A. Sridhar 5/5/94
  7.  
  8. #include "base/bitset.h"
  9. #include "base/intset.h"
  10. #include <iostream.h>
  11.  
  12. void TestBigSet ()
  13. {
  14.     CL_BitSet bigSet (15, 80000, 256000); // Create a humongous set
  15.     long i;
  16.     for (i = 79999; i < 80004; i++)
  17.         cout << i << " is" << (bigSet.Includes (i) ? " " : " not ")
  18.              << "in the set." << endl;
  19. }
  20.  
  21. void ItrTest ()
  22. {
  23.     CL_BitSet set;
  24.     set = set + 15 + 45 + 12 + 31 + 16 + 77 + 11 + 32 + 34;
  25.     cout << "ItrTest: set is " << set << endl;
  26.     CL_BitSetIterator itr (set);
  27.     short l;
  28.  
  29.     l = 3; itr.BeginFromRank (l); cout << "BeginFromRank " << l << endl;
  30.     while (itr.More())
  31.         cout << "next: " << itr.Next() << endl;
  32.  
  33.     l = 0; itr.BeginFromRank (l); cout << "BeginFromRank " << l << endl;
  34.     while (itr.More())
  35.         cout << "next: " << itr.Next() << endl;
  36.  
  37.     l = 1; itr.BeginFromRank (l); cout << "BeginFromRank " << l << endl;
  38.     while (itr.More())
  39.         cout << "next: " << itr.Next() << endl;
  40.  
  41.     l = 20; itr.BeginFromRank (l); cout << "BeginFromRank " << l << endl;
  42.     while (itr.More())
  43.         cout << "next: " << itr.Next() << endl;
  44.  
  45.     l = 9; itr.BeginFromRank (l); cout << "BeginFromRank " << l << endl;
  46.     while (itr.More())
  47.         cout << "next: " << itr.Next() << endl;
  48.  
  49.     l = 10; itr.BeginFromRank (l); cout << "BeginFromRank " << l << endl;
  50.     while (itr.More())
  51.         cout << "next: " << itr.Next() << endl;
  52.  
  53. }
  54.  
  55.  
  56. void SuccessorTest ()
  57. {
  58.     CL_BitSet set;
  59.     set = set + 15 + 45 + 12 + 31 + 16 + 77 + 11 + 32 + 34;
  60.     cout << "SuccessorTest: set is " << set << endl;
  61.     long l;
  62.  
  63.     l = 0; cout << "Successor of " << l << " is " << set.Successor(l) << endl;
  64.     l = 14; cout << "Successor of " << l << " is " << set.Successor(l) << endl;
  65.     l = 15; cout << "Successor of " << l << " is " << set.Successor(l) << endl;
  66.     l = 16; cout << "Successor of " << l << " is " << set.Successor(l) << endl;
  67.     l = 31; cout << "Successor of " << l << " is " << set.Successor(l) << endl;
  68.     l = 32; cout << "Successor of " << l << " is " << set.Successor(l) << endl;
  69.     l = 76; cout << "Successor of " << l << " is " << set.Successor(l) << endl;
  70.     l = 77; cout << "Successor of " << l << " is " << set.Successor(l) << endl;
  71.     l = 85; cout << "Successor of " << l << " is " << set.Successor(l) << endl;
  72.     l = 128; cout << "Successor of " << l << " is " << set.Successor(l) << endl;
  73.     l = 1000; cout << "Successor of " << l << " is " << set.Successor(l) << endl;
  74. }
  75.  
  76. void main ()
  77. {
  78.     SuccessorTest ();
  79.     ItrTest ();
  80.     CL_BitSet set1 = CL_BitSet (25) + 1 + 3 + 15 + 21 + 7;
  81.     CL_BitSet set2;
  82.     set2 = set2 + 2 + 3 +  1 +  15;
  83.     TestBigSet ();
  84.     
  85.     CL_String strg = set2.AsString();
  86.     cout << "set2: " << strg << endl;
  87.  
  88.     strg = set1.AsString ();
  89.     cout << "set1: " <<  strg << endl;
  90.  
  91.     CL_BitSet set5 (5, 15, 30);
  92.     cout << "Set5: " << set5 << endl;
  93.  
  94.     cout << "Complement of set5: " << ~set5 << endl;
  95.     CL_BitSet set3;
  96.     set3 = set1 * set2;
  97.  
  98.     CL_IntegerSet set = set1.AsSet ();
  99.     cout << "Set1:" << endl;
  100.     short i;
  101.     for (i = 0; i < set.Size(); i++)
  102.         cout << " " << set.ItemWithRank (i);
  103.     cout << endl;
  104.  
  105.     long r = 3;
  106.     cout << "Element of rank " << r << " in set2 is "
  107.         << set2.ItemWithRank(r) << endl;
  108.     cout << "Set2:" << endl;
  109.     for (i = 0; i < set2.Size(); i++)
  110.         cout <<  " " << set2.ItemWithRank(i);
  111.     cout << endl;
  112.             
  113.     set = set3.AsSet ();
  114.     cout << "Set3:" << endl;
  115.     CL_BitSetIterator itr1 (set3);
  116.     for (i = 0; i < set.Size(); i++)
  117.         cout <<  " " << itr1.Next();
  118.     cout << endl;
  119.             
  120.     CL_BitSetIterator itr (set1);
  121.     cout << "set1 via iterator:" << endl;
  122.     for (itr.Reset(); (i = itr.Next()) >= 0; ) {
  123.         cout << "i = " << i << endl;
  124.     }
  125.  
  126.     cout <<  endl << "set3: smallest " << set3.Smallest()
  127.          << " largest " << set3.Largest() << endl;
  128.     cout <<  endl;
  129.     cout << "set1: smallest " << set1.Smallest()
  130.          << " largest " << set1.Largest() << endl;
  131.     cout << "set5: smallest " << set5.Smallest()
  132.          << " largest " << set5.Largest() << endl;
  133. }
  134.