aboutsummaryrefslogtreecommitdiff
path: root/EASTL/test/source/TestList.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'EASTL/test/source/TestList.cpp')
-rw-r--r--EASTL/test/source/TestList.cpp103
1 files changed, 99 insertions, 4 deletions
diff --git a/EASTL/test/source/TestList.cpp b/EASTL/test/source/TestList.cpp
index 8a5e057..001b79a 100644
--- a/EASTL/test/source/TestList.cpp
+++ b/EASTL/test/source/TestList.cpp
@@ -975,20 +975,115 @@ int TestList()
{
eastl::list<int> l = {1, 2, 3, 4, 5, 6, 7, 8, 9};
- eastl::erase(l, 3);
- eastl::erase(l, 5);
- eastl::erase(l, 7);
+ auto numErased = eastl::erase(l, 3);
+ VERIFY(numErased == 1);
+ numErased = eastl::erase(l, 5);
+ VERIFY(numErased == 1);
+ numErased = eastl::erase(l, 7);
+ VERIFY(numErased == 1);
VERIFY((l == eastl::list<int>{1, 2, 4, 6, 8, 9}));
}
{
eastl::list<int> l = {1, 2, 3, 4, 5, 6, 7, 8, 9};
- eastl::erase_if(l, [](auto i) { return i % 2 == 0; });
+ auto numErased = eastl::erase_if(l, [](auto i) { return i % 2 == 0; });
VERIFY((l == eastl::list<int>{1, 3, 5, 7, 9}));
+ VERIFY(numErased == 4);
}
}
+ { // Test global operators
+ {
+ eastl::list<int> list1 = {0, 1, 2, 3, 4, 5};
+ eastl::list<int> list2 = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
+ eastl::list<int> list3 = {5, 6, 7, 8};
+
+ VERIFY(list1 == list1);
+ VERIFY(!(list1 != list1));
+
+ VERIFY(list1 != list2);
+ VERIFY(list2 != list3);
+ VERIFY(list1 != list3);
+
+ VERIFY(list1 < list2);
+ VERIFY(list1 <= list2);
+
+ VERIFY(list2 > list1);
+ VERIFY(list2 >= list1);
+
+ VERIFY(list3 > list1);
+ VERIFY(list3 > list2);
+ }
+
+ // three way comparison operator
+#if defined(EA_COMPILER_HAS_THREE_WAY_COMPARISON)
+ {
+ eastl::list<int> list1 = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
+ eastl::list<int> list2 = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
+
+ // Verify equality between list1 and list2
+ VERIFY((list1 <=> list2) == 0);
+ VERIFY(!((list1 <=> list2) != 0));
+ VERIFY((list1 <=> list2) <= 0);
+ VERIFY((list1 <=> list2) >= 0);
+ VERIFY(!((list1 <=> list2) < 0));
+ VERIFY(!((list1 <=> list2) > 0));
+
+ list1.push_back(100); // Make list1 less than list2.
+ list2.push_back(101);
+
+ // Verify list1 < list2
+ VERIFY(!((list1 <=> list2) == 0));
+ VERIFY((list1 <=> list2) != 0);
+ VERIFY((list1 <=> list2) <= 0);
+ VERIFY(!((list1 <=> list2) >= 0));
+ VERIFY(((list1 <=> list2) < 0));
+ VERIFY(!((list1 <=> list2) > 0));
+
+ for (int i = 0; i < 3; i++) // Make the length of list2 less than list1
+ list2.pop_back();
+
+ // Verify list2.size() < list1.size() and list2 is a subset of list1
+ VERIFY(!((list1 <=> list2) == 0));
+ VERIFY((list1 <=> list2) != 0);
+ VERIFY((list1 <=> list2) >= 0);
+ VERIFY(!((list1 <=> list2) <= 0));
+ VERIFY(((list1 <=> list2) > 0));
+ VERIFY(!((list1 <=> list2) < 0));
+ }
+
+ {
+ eastl::list<int> list1 = {1, 2, 3, 4, 5, 6, 7};
+ eastl::list<int> list2 = {7, 6, 5, 4, 3, 2, 1};
+ eastl::list<int> list3 = {1, 2, 3, 4};
+
+ struct weak_ordering_list
+ {
+ eastl::list<int> list;
+ inline std::weak_ordering operator<=>(const weak_ordering_list& b) const { return list <=> b.list; }
+ };
+
+ VERIFY(synth_three_way{}(weak_ordering_list{list1}, weak_ordering_list{list2}) == std::weak_ordering::less);
+ VERIFY(synth_three_way{}(weak_ordering_list{list3}, weak_ordering_list{list1}) == std::weak_ordering::less);
+ VERIFY(synth_three_way{}(weak_ordering_list{list2}, weak_ordering_list{list1}) == std::weak_ordering::greater);
+ VERIFY(synth_three_way{}(weak_ordering_list{list2}, weak_ordering_list{list3}) == std::weak_ordering::greater);
+ VERIFY(synth_three_way{}(weak_ordering_list{list1}, weak_ordering_list{list1}) == std::weak_ordering::equivalent);
+
+ struct strong_ordering_list
+ {
+ eastl::list<int> list;
+ inline std::strong_ordering operator<=>(const strong_ordering_list& b) const { return list <=> b.list; }
+ };
+
+ VERIFY(synth_three_way{}(strong_ordering_list{list1}, strong_ordering_list{list2}) == std::strong_ordering::less);
+ VERIFY(synth_three_way{}(strong_ordering_list{list3}, strong_ordering_list{list1}) == std::strong_ordering::less);
+ VERIFY(synth_three_way{}(strong_ordering_list{list2}, strong_ordering_list{list1}) == std::strong_ordering::greater);
+ VERIFY(synth_three_way{}(strong_ordering_list{list2}, strong_ordering_list{list3}) == std::strong_ordering::greater);
+ VERIFY(synth_three_way{}(strong_ordering_list{list1}, strong_ordering_list{list1}) == std::strong_ordering::equal);
+ }
+#endif
+ }
return nErrorCount;
}