TEST(TSet, can_use_sum_for_five_elems) { const int size = 10; TSet set(size), expSet(size); set = set + 1 + 2 + 3 + 4 + 5; expSet.InsElem(1); expSet.InsElem(2); expSet.InsElem(3); expSet.InsElem(4); expSet.InsElem(5); EXPECT_EQ(set, expSet); }
TEST(TSet, triple_one_string_and) { const int size = 4; TSet set1(size), set2(size), set3(size), tmp(size), expSet(size); set1.InsElem(2); set2.InsElem(2); set3.InsElem(2); expSet = set1 * set2; expSet = expSet * set3; tmp = set1*set2*set3; EXPECT_EQ(expSet, tmp); }
TEST(TSet, can_use_sum_for_three_sets) { const int size = 10; TSet set0(size), set1(size), set2(size), set3(size), expSet(size); set0.InsElem(1); set1.InsElem(3); set2.InsElem(5); set3 = set0 + set1 + set2; expSet.InsElem(1); expSet.InsElem(3); expSet.InsElem(5); EXPECT_EQ(expSet, set3); }
TEST(TSet, check_negation_operator) { const int size = 4; TSet set(size), set1(size), expSet(size); // set1 = {1, 3} set.InsElem(1); set.InsElem(3); set1 = ~set; // expSet = {0, 2} expSet.InsElem(0); expSet.InsElem(2); EXPECT_EQ(expSet, set1); }
TEST(TSet, can_use_difference_for_five_elems) { const int size = 10; TSet set(size), expSet(size); for (int i = 0; i < size; i++) set.InsElem(i); set = set - 1 - 2 - 3 - 4 - 5; expSet.InsElem(0); expSet.InsElem(6); expSet.InsElem(7); expSet.InsElem(8); expSet.InsElem(9); EXPECT_EQ(set, expSet); }
TEST(TSet, can_intersect_two_sets_of_equal_size) { const int size = 5; TSet set1(size), set2(size), set3(size), expSet(size); // set1 = {1, 2, 4} set1.InsElem(1); set1.InsElem(2); set1.InsElem(4); // set2 = {0, 1, 2} set2.InsElem(0); set2.InsElem(1); set2.InsElem(2); set3 = set1 * set2; // expSet = {1, 2} expSet.InsElem(1); expSet.InsElem(2); EXPECT_EQ(expSet, set3); }
TEST(TSet, product_of_sets) { const int size = 10; TSet set0(size), set1(size), set2(size), set3(size), expSet(size); set0.InsElem(0); set0.InsElem(1); set0.InsElem(3); set0.InsElem(5); set1.InsElem(0); set1.InsElem(3); set1.InsElem(4); set1.InsElem(5); set2.InsElem(0); set2.InsElem(1); set2.InsElem(5); set2.InsElem(6); set2.InsElem(7); set3 = set0 * set1 * set2; expSet.InsElem(0); expSet.InsElem(5); EXPECT_EQ(expSet, set3); }
TEST(TSet, can_combine_two_sets_of_non_equal_size) { const int size1 = 5, size2 = 7; TSet set1(size1), set2(size2), set3(size1), expSet(size2); // set1 = {1, 2, 4} set1.InsElem(1); set1.InsElem(2); set1.InsElem(4); // set2 = {0, 1, 2, 6} set2.InsElem(0); set2.InsElem(1); set2.InsElem(2); set2.InsElem(6); set3 = set1 + set2; // expSet = {0, 1, 2, 4, 6} expSet.InsElem(0); expSet.InsElem(1); expSet.InsElem(2); expSet.InsElem(4); expSet.InsElem(6); EXPECT_EQ(expSet, set3); }