aboutsummaryrefslogtreecommitdiff
path: root/EASTL/test/source/TestSet.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'EASTL/test/source/TestSet.cpp')
-rw-r--r--EASTL/test/source/TestSet.cpp48
1 files changed, 46 insertions, 2 deletions
diff --git a/EASTL/test/source/TestSet.cpp b/EASTL/test/source/TestSet.cpp
index 1adc12f..9a590c2 100644
--- a/EASTL/test/source/TestSet.cpp
+++ b/EASTL/test/source/TestSet.cpp
@@ -162,16 +162,60 @@ int TestSet()
{ // set erase_if tests
set<int> s = {0, 1, 2, 3, 4};
- eastl::erase_if(s, [](auto i) { return i % 2 == 0;});
+ auto numErased = eastl::erase_if(s, [](auto i) { return i % 2 == 0;});
VERIFY((s == set<int>{1,3}));
+ VERIFY(numErased == 3);
}
{ // multiset erase_if tests
multiset<int> s = {0, 0, 0, 0, 0, 1, 1, 1, 2, 3, 3, 3, 4};
- eastl::erase_if(s, [](auto i) { return i % 2 == 0;});
+ auto numErased = eastl::erase_if(s, [](auto i) { return i % 2 == 0;});
VERIFY((s == multiset<int>{1, 1, 1, 3, 3, 3}));
+ VERIFY(numErased == 7);
}
+#if defined(EA_COMPILER_HAS_THREE_WAY_COMPARISON)
+ { // Test set <=>
+ set<int> s1 = {0, 1, 2, 3, 4};
+ set<int> s2 = {4, 3, 2, 1, 0};
+ set<int> s3 = {1, 2, 3, 4, 5, 6, 7, 8, 9};
+ set<int> s4 = {1, 2, 3, 4, 5, 6};
+ set<int> s5 = {9};
+
+ VERIFY(s1 == s2);
+ VERIFY(s1 != s3);
+ VERIFY(s3 > s4);
+ VERIFY(s5 > s4);
+ VERIFY(s5 > s3);
+
+ VERIFY((s1 <=> s2) == 0);
+ VERIFY((s1 <=> s3) != 0);
+ VERIFY((s3 <=> s4) > 0);
+ VERIFY((s5 <=> s4) > 0);
+ VERIFY((s5 <=> s3) > 0);
+ }
+
+ { // Test multiset <=>
+ multiset<int> s1 = {0, 0, 0, 1, 1, 2, 3, 3, 4};
+ multiset<int> s2 = {4, 3, 3, 2, 1, 1, 0, 0, 0};
+ multiset<int> s3 = {1, 1, 2, 2, 3, 4, 5, 5, 6, 7, 8, 9, 9};
+ multiset<int> s4 = {1, 1, 2, 2, 3, 4, 5, 5, 6};
+ multiset<int> s5 = {9};
+
+ VERIFY(s1 == s2);
+ VERIFY(s1 != s3);
+ VERIFY(s3 > s4);
+ VERIFY(s5 > s4);
+ VERIFY(s5 > s3);
+
+ VERIFY((s1 <=> s2) == 0);
+ VERIFY((s1 <=> s3) != 0);
+ VERIFY((s3 <=> s4) > 0);
+ VERIFY((s5 <=> s4) > 0);
+ VERIFY((s5 <=> s3) > 0);
+ }
+#endif
+
{
// user reported regression: ensure container elements are NOT
// moved from during the eastl::set construction process.