TEST(StringSetTest, ClearTheSet) {
  // Tests that the set in cleared.
  set.Clear();
  EXPECT_EQ(0, set.Count());
  EXPECT_NE(3, set.Count());
  
}
// Takes two string sets and returns the union set.
StringSet StringSet::Union(StringSet in_set) {
  StringSet result;
  for (int i = 0; i < this->Count(); ++i)
    result.Add(this->GetString(i));
  for (int i = 0; i < in_set.Count(); ++i)
    if (!result.Contains(in_set.GetString(i)))
      result.Add(in_set.GetString(i));
  return result;
}
TEST(StringSetTest, UnionOfTwoStringSets) {
  // Tests the Unions of two sets, including all strings.
  StringSet first, second;
  first.Add("First string.");
  first.Add("Second string.");
  first.Add("Third string.");
  second.Add("First string.");
  second.Add("Second string.");
  StringSet third = first.Union(second);
  EXPECT_TRUE(third.Contains("First string."));
  EXPECT_TRUE(third.Contains("Second string."));
  EXPECT_TRUE(third.Contains("Third string."));
  EXPECT_EQ(3, third.Count());
}
TEST(StringSetTest, IntersectionOfTwoStrings) {
  // Tests the intersection of two set, including only strings occuring
  // in both sets.
  StringSet first, second;
  first.Add("First string.");
  first.Add("Second string.");
  first.Add("Third string.");
  second.Add("First string.");
  second.Add("Second string.");
  StringSet intersection = first.Intersection(second);
  EXPECT_TRUE(intersection.Contains("First string."));
  EXPECT_TRUE(intersection.Contains("Second string."));
  EXPECT_FALSE(intersection.Contains("Third string."));
  EXPECT_EQ(2, intersection.Count());
}
TEST(StringSetTest, Count3Strings) {
  // Tests the count function.
  set.Add("String number 2.");
  set.Add("String number 3.");
  EXPECT_EQ(3, set.Count());
}
TEST(StringSetTest, Count1String) {
  // Tests the count function.
  EXPECT_EQ(1, set.Count());
}