diff --git a/libcxx/test/std/containers/associative/map/map.access/iterator.pass.cpp b/libcxx/test/std/containers/associative/map/map.access/iterator.pass.cpp --- a/libcxx/test/std/containers/associative/map/map.access/iterator.pass.cpp +++ b/libcxx/test/std/containers/associative/map/map.access/iterator.pass.cpp @@ -77,6 +77,16 @@ i->second = 2.5; assert(i->second == 2.5); } + assert(i == m.end()); + for (int j = m.size(); j >= 1; --j) + { + --i; + assert(i->first == j); + assert(i->second == 2.5); + i->second = 1; + assert(i->second == 1); + } + assert(i == m.begin()); } { typedef std::pair V; @@ -119,6 +129,14 @@ assert(i->first == j); assert(i->second == 1); } + assert(i == m.end()); + for (int j = m.size(); j >= 1; --j) + { + --i; + assert(i->first == j); + assert(i->second == 1); + } + assert(i == m.begin()); } #if TEST_STD_VER >= 11 { @@ -164,6 +182,16 @@ i->second = 2.5; assert(i->second == 2.5); } + assert(i == m.end()); + for (int j = m.size(); j >= 1; --j) + { + --i; + assert(i->first == j); + assert(i->second == 2.5); + i->second = 1; + assert(i->second == 1); + } + assert(i == m.begin()); } { typedef std::pair V; @@ -206,6 +234,14 @@ assert(i->first == j); assert(i->second == 1); } + assert(i == m.end()); + for (int j = m.size(); j >= 1; --j) + { + --i; + assert(i->first == j); + assert(i->second == 1); + } + assert(i == m.begin()); } #endif #if TEST_STD_VER > 11 diff --git a/libcxx/test/std/containers/associative/multimap/iterator.pass.cpp b/libcxx/test/std/containers/associative/multimap/iterator.pass.cpp --- a/libcxx/test/std/containers/associative/multimap/iterator.pass.cpp +++ b/libcxx/test/std/containers/associative/multimap/iterator.pass.cpp @@ -78,6 +78,17 @@ i->second = 2.5; assert(i->second == 2.5); } + assert(i == m.end()); + for (int j = 8; j >= 1; --j) + for (double d = 1; d <= 2; d += .5) + { + --i; + assert(i->first == j); + assert(i->second == 2.5); + i->second = d; + assert(i->second == d); + } + assert(i == m.begin()); } { typedef std::pair V; @@ -121,6 +132,15 @@ assert(i->first == j); assert(i->second == d); } + assert(i == m.end()); + for (int j = 8; j >= 1; --j) + for (double d = 2; d >= 1; d -= .5) + { + --i; + assert(i->first == j); + assert(i->second == d); + } + assert(i == m.begin()); } #if TEST_STD_VER >= 11 { @@ -167,6 +187,17 @@ i->second = 2.5; assert(i->second == 2.5); } + assert(i == m.end()); + for (int j = 8; j >= 1; --j) + for (double d = 1; d <= 2; d += .5) + { + --i; + assert(i->first == j); + assert(i->second == 2.5); + i->second = d; + assert(i->second == d); + } + assert(i == m.begin()); } { typedef std::pair V; @@ -210,6 +241,15 @@ assert(i->first == j); assert(i->second == d); } + assert(i == m.end()); + for (int j = 8; j >= 1; --j) + for (double d = 2; d >= 1; d -= .5) + { + --i; + assert(i->first == j); + assert(i->second == d); + } + assert(i == m.begin()); } #endif #if TEST_STD_VER > 11 diff --git a/libcxx/test/std/containers/associative/multiset/iterator.pass.cpp b/libcxx/test/std/containers/associative/multiset/iterator.pass.cpp --- a/libcxx/test/std/containers/associative/multiset/iterator.pass.cpp +++ b/libcxx/test/std/containers/associative/multiset/iterator.pass.cpp @@ -73,6 +73,13 @@ for (int j = 1; j <= 8; ++j) for (int n = 0; n < 3; ++n, ++i) assert(*i == j); + assert(i == m.end()); + for (int j = 8; j >= 1; --j) + for (int n = 0; n < 3; ++n) { + --i; + assert(*i == j); + } + assert(i == m.begin()); } { typedef int V; @@ -113,6 +120,13 @@ for (int j = 1; j <= 8; ++j) for (int k = 0; k < 3; ++k, ++i) assert(*i == j); + assert(i == m.end()); + for (int j = 8; j >= 1; --j) + for (int k = 0; k < 3; ++k) { + --i; + assert(*i == j); + } + assert(i == m.begin()); } #if TEST_STD_VER >= 11 { @@ -154,6 +168,13 @@ for (int j = 1; j <= 8; ++j) for (int n = 0; n < 3; ++n, ++i) assert(*i == j); + assert(i == m.end()); + for (int j = 8; j >= 1; --j) + for (int n = 0; n < 3; ++n) { + --i; + assert(*i == j); + } + assert(i == m.begin()); } { typedef int V; @@ -194,6 +215,13 @@ for (int j = 1; j <= 8; ++j) for (int k = 0; k < 3; ++k, ++i) assert(*i == j); + assert(i == m.end()); + for (int j = 8; j >= 1; --j) + for (int k = 0; k < 3; ++k) { + --i; + assert(*i == j); + } + assert(i == m.begin()); } #endif #if TEST_STD_VER > 11 diff --git a/libcxx/test/std/containers/associative/set/iterator.pass.cpp b/libcxx/test/std/containers/associative/set/iterator.pass.cpp --- a/libcxx/test/std/containers/associative/set/iterator.pass.cpp +++ b/libcxx/test/std/containers/associative/set/iterator.pass.cpp @@ -72,6 +72,12 @@ assert(i == k); for (int j = 1; static_cast(j) <= m.size(); ++j, ++i) assert(*i == j); + assert(i == m.end()); + for (int j = m.size(); j >= 1; --j) { + --i; + assert(*i == j); + } + assert(i == m.begin()); } { typedef int V; @@ -111,6 +117,12 @@ i = m.begin(); for (int j = 1; static_cast(j) <= m.size(); ++j, ++i) assert(*i == j); + assert(i == m.end()); + for (int j = m.size(); j >= 1; --j) { + --i; + assert(*i == j); + } + assert(i == m.begin()); } #if TEST_STD_VER >= 11 { @@ -151,6 +163,12 @@ assert(i == k); for (int j = 1; static_cast(j) <= m.size(); ++j, ++i) assert(*i == j); + assert(i == m.end()); + for (int j = m.size(); j >= 1; --j) { + --i; + assert(*i == j); + } + assert(i == m.begin()); } { typedef int V; @@ -190,6 +208,12 @@ i = m.begin(); for (int j = 1; static_cast(j) <= m.size(); ++j, ++i) assert(*i == j); + assert(i == m.end()); + for (int j = m.size(); j >= 1; --j) { + --i; + assert(*i == j); + } + assert(i == m.begin()); } #endif #if TEST_STD_VER > 11