Example #1
0
static void
default_ctor() {
    Set<int> set;
    ASSERT_always_require2(set.isEmpty(), "a default-constructed set is empty");
    ASSERT_always_require2(set.size() == 0, "a default-constructed set has no members");
    ASSERT_always_require2(set.hull().isEmpty(), "a default-constructed set is empty");
    ASSERT_always_require2(!set.exists(0), "member zero has not been inserted yet");
    ASSERT_always_require2(!set.exists(1), "member one has not been inserted yet");
    ASSERT_always_require2(!set.exists(2), "member two has not been inserted yet");
}
/**********************************************************************
* Difference (-)
* finds the unique numbers in the left.
***********************************************************************/
Set Set::operator - (const Set &rSide)
{
   int i;
   int test;
   Set final;

   for (i = 0; i < used; i++)
   {
      test = set[i];

      if (rSide.exists(test) == false)
      {
         final.add(test);
      }
   }
Example #3
0
static void
testInsertErase() {
    Set<int> set;
    bool inserted = set.insert(0);
    ASSERT_always_require2(inserted, "member should have been inserted");
    ASSERT_always_require2(!set.isEmpty(), "a singleton set is not empty");
    ASSERT_always_require2(set.size() == 1, "a singleton set has one member");
    ASSERT_always_require2(set.hull().size() == 1, "singleton set has a singleton hull");
    ASSERT_always_require2(set.exists(0), "member zero has been inserted");
    ASSERT_always_require2(!set.exists(1), "member one has not been inserted yet");
    ASSERT_always_require2(!set.exists(2), "member two has not been inserted yet");

    inserted = set.insert(0); // again
    ASSERT_always_require2(!inserted, "member should have already existed");
    ASSERT_always_require2(!set.isEmpty(), "a singleton set is not empty");
    ASSERT_always_require2(set.size() == 1, "a singleton set has one member");
    ASSERT_always_require2(set.hull().size() == 1, "singleton set has a singleton hull");
    ASSERT_always_require2(set.exists(0), "member zero has been inserted");
    ASSERT_always_require2(!set.exists(1), "member one has not been inserted yet");
    ASSERT_always_require2(!set.exists(2), "member two has not been inserted yet");

    inserted = set.insert(1);
    ASSERT_always_require2(inserted, "member should have been inserted");
    ASSERT_always_require2(!set.isEmpty(), "a two-member set is not empty");
    ASSERT_always_require2(set.size() == 2, "a two-member set has two members");
    ASSERT_always_require2(set.hull().size() == 2, "hull of set {0,1} is [0..1]");
    ASSERT_always_require2(set.exists(0), "member zero has been inserted");
    ASSERT_always_require2(set.exists(1), "member one has been inserted");
    ASSERT_always_require2(!set.exists(2), "member two has not been inserted yet");
    
    inserted = set.insert(2);
    ASSERT_always_require2(inserted, "member should have been inserted");
    ASSERT_always_require2(!set.isEmpty(), "a three-member set is not empty");
    ASSERT_always_require2(set.size() == 3, "a three-member set has three members");
    ASSERT_always_require2(set.hull().size() == 3, "hull of set {0,1,2} is [0..2]");
    ASSERT_always_require2(set.exists(0), "member zero has been inserted");
    ASSERT_always_require2(set.exists(1), "member one has been inserted");
    ASSERT_always_require2(set.exists(2), "member two has been inserted");
    
    bool erased = set.erase(1);
    ASSERT_always_require2(erased, "member should have been erased");
    ASSERT_always_require2(!set.isEmpty(), "a two-member set is not empty");
    ASSERT_always_require2(set.size() == 2, "a two-member set has three members");
    ASSERT_always_require2(set.hull().size() == 3, "hull of set {0,2} is [0..2]");
    ASSERT_always_require2(set.exists(0), "member zero has been inserted");
    ASSERT_always_require2(!set.exists(1), "member one has been erased");
    ASSERT_always_require2(set.exists(2), "member two has been inserted");
    
    erased = set.erase(1); // again
    ASSERT_always_require2(!erased, "member has already been erased");
    ASSERT_always_require2(!set.isEmpty(), "a two-member set is not empty");
    ASSERT_always_require2(set.size() == 2, "a two-member set has three members");
    ASSERT_always_require2(set.hull().size() == 3, "hull of set {0,2} is [0..2]");
    ASSERT_always_require2(set.exists(0), "member zero has been inserted");
    ASSERT_always_require2(!set.exists(1), "member one has been erased");
    ASSERT_always_require2(set.exists(2), "member two has been inserted");

    set.clear();
    ASSERT_always_require2(set.isEmpty(), "a cleared set is empty");
    ASSERT_always_require2(set.size() == 0, "a cleared set has no members");
    ASSERT_always_require2(set.hull().isEmpty(), "a cleared set is empty");
    ASSERT_always_require2(!set.exists(0), "member zero has been cleared");
    ASSERT_always_require2(!set.exists(1), "member one has been cleared");
    ASSERT_always_require2(!set.exists(2), "member two has been cleared");
}