[libc++] Add a regression test for erasing from a vector
authorArthur O'Dwyer <arthur.j.odwyer@gmail.com>
Tue, 29 Sep 2020 16:17:26 +0000 (12:17 -0400)
committerLouis Dionne <ldionne@apple.com>
Tue, 29 Sep 2020 16:19:05 +0000 (12:19 -0400)
After rebasing my trivially-relocatable branch, this behavior was broken...
but no libc++ unit test caught it! Add a regression test specifically for
erasing out of a vector.

Differential Revision: https://reviews.llvm.org/D88421

libcxx/test/std/containers/sequences/vector/vector.modifiers/erase_iter.pass.cpp

index fb9b4bf..1d58d31 100644 (file)
@@ -36,6 +36,21 @@ bool Throws::sThrows = false;
 int main(int, char**)
 {
     {
+    int a1[] = {1, 2, 3, 4, 5};
+    std::vector<int> l1(a1, a1+5);
+    l1.erase(l1.begin());
+    assert(is_contiguous_container_asan_correct(l1));
+    assert(l1 == std::vector<int>(a1+1, a1+5));
+    }
+    {
+    int a1[] = {1, 2, 3, 4, 5};
+    int e1[] = {1, 3, 4, 5};
+    std::vector<int> l1(a1, a1+5);
+    l1.erase(l1.begin() + 1);
+    assert(is_contiguous_container_asan_correct(l1));
+    assert(l1 == std::vector<int>(e1, e1+4));
+    }
+    {
     int a1[] = {1, 2, 3};
     std::vector<int> l1(a1, a1+3);
     std::vector<int>::const_iterator i = l1.begin();