Author: marshall Date: Tue Nov 21 22:02:27 2017 New Revision: 318818 URL: http://llvm.org/viewvc/llvm-project?rev=318818&view=rev Log: Add some tests for operations on const associative containers. Part of LWG#2542
Modified: libcxx/trunk/test/std/containers/associative/map/map.cons/compare.pass.cpp libcxx/trunk/test/std/containers/associative/multimap/multimap.cons/compare.pass.cpp libcxx/trunk/test/std/containers/associative/multiset/equal_range.pass.cpp libcxx/trunk/test/std/containers/associative/multiset/multiset.cons/compare.pass.cpp libcxx/trunk/test/std/containers/associative/set/set.cons/compare.pass.cpp libcxx/trunk/test/std/containers/test_compare.h Modified: libcxx/trunk/test/std/containers/associative/map/map.cons/compare.pass.cpp URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/containers/associative/map/map.cons/compare.pass.cpp?rev=318818&r1=318817&r2=318818&view=diff ============================================================================== --- libcxx/trunk/test/std/containers/associative/map/map.cons/compare.pass.cpp (original) +++ libcxx/trunk/test/std/containers/associative/map/map.cons/compare.pass.cpp Tue Nov 21 22:02:27 2017 @@ -13,6 +13,8 @@ // explicit map(const key_compare& comp); +// key_compare key_comp() const; + #include <map> #include <cassert> @@ -23,7 +25,7 @@ int main() { { typedef test_compare<std::less<int> > C; - std::map<int, double, C> m(C(3)); + const std::map<int, double, C> m(C(3)); assert(m.empty()); assert(m.begin() == m.end()); assert(m.key_comp() == C(3)); @@ -31,7 +33,7 @@ int main() #if TEST_STD_VER >= 11 { typedef test_compare<std::less<int> > C; - std::map<int, double, C, min_allocator<std::pair<const int, double>>> m(C(3)); + const std::map<int, double, C, min_allocator<std::pair<const int, double>>> m(C(3)); assert(m.empty()); assert(m.begin() == m.end()); assert(m.key_comp() == C(3)); Modified: libcxx/trunk/test/std/containers/associative/multimap/multimap.cons/compare.pass.cpp URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/containers/associative/multimap/multimap.cons/compare.pass.cpp?rev=318818&r1=318817&r2=318818&view=diff ============================================================================== --- libcxx/trunk/test/std/containers/associative/multimap/multimap.cons/compare.pass.cpp (original) +++ libcxx/trunk/test/std/containers/associative/multimap/multimap.cons/compare.pass.cpp Tue Nov 21 22:02:27 2017 @@ -13,6 +13,8 @@ // explicit multimap(const key_compare& comp); +// key_compare key_comp() const; + #include <map> #include <cassert> @@ -23,7 +25,7 @@ int main() { { typedef test_compare<std::less<int> > C; - std::multimap<int, double, C> m(C(3)); + const std::multimap<int, double, C> m(C(3)); assert(m.empty()); assert(m.begin() == m.end()); assert(m.key_comp() == C(3)); @@ -31,7 +33,7 @@ int main() #if TEST_STD_VER >= 11 { typedef test_compare<std::less<int> > C; - std::multimap<int, double, C, min_allocator<std::pair<const int, double>>> m(C(3)); + const std::multimap<int, double, C, min_allocator<std::pair<const int, double>>> m(C(3)); assert(m.empty()); assert(m.begin() == m.end()); assert(m.key_comp() == C(3)); Modified: libcxx/trunk/test/std/containers/associative/multiset/equal_range.pass.cpp URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/containers/associative/multiset/equal_range.pass.cpp?rev=318818&r1=318817&r2=318818&view=diff ============================================================================== --- libcxx/trunk/test/std/containers/associative/multiset/equal_range.pass.cpp (original) +++ libcxx/trunk/test/std/containers/associative/multiset/equal_range.pass.cpp Tue Nov 21 22:02:27 2017 @@ -77,7 +77,7 @@ int main() 9, 9 }; - M m(ar, ar+sizeof(ar)/sizeof(ar[0])); + const M m(ar, ar+sizeof(ar)/sizeof(ar[0])); R r = m.equal_range(4); assert(r.first == next(m.begin(), 0)); assert(r.second == next(m.begin(), 0)); @@ -156,7 +156,7 @@ int main() 9, 9 }; - M m(ar, ar+sizeof(ar)/sizeof(ar[0])); + const M m(ar, ar+sizeof(ar)/sizeof(ar[0])); R r = m.equal_range(4); assert(r.first == next(m.begin(), 0)); assert(r.second == next(m.begin(), 0)); Modified: libcxx/trunk/test/std/containers/associative/multiset/multiset.cons/compare.pass.cpp URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/containers/associative/multiset/multiset.cons/compare.pass.cpp?rev=318818&r1=318817&r2=318818&view=diff ============================================================================== --- libcxx/trunk/test/std/containers/associative/multiset/multiset.cons/compare.pass.cpp (original) +++ libcxx/trunk/test/std/containers/associative/multiset/multiset.cons/compare.pass.cpp Tue Nov 21 22:02:27 2017 @@ -12,6 +12,10 @@ // class multiset // explicit multiset(const value_compare& comp); +// value_compare and key_compare are the same type for set/multiset + +// key_compare key_comp() const; +// value_compare value_comp() const; #include <set> #include <cassert> @@ -21,8 +25,9 @@ int main() { typedef test_compare<std::less<int> > C; - std::multiset<int, C> m(C(3)); + const std::multiset<int, C> m(C(3)); assert(m.empty()); assert(m.begin() == m.end()); assert(m.key_comp() == C(3)); + assert(m.value_comp() == C(3)); } Modified: libcxx/trunk/test/std/containers/associative/set/set.cons/compare.pass.cpp URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/containers/associative/set/set.cons/compare.pass.cpp?rev=318818&r1=318817&r2=318818&view=diff ============================================================================== --- libcxx/trunk/test/std/containers/associative/set/set.cons/compare.pass.cpp (original) +++ libcxx/trunk/test/std/containers/associative/set/set.cons/compare.pass.cpp Tue Nov 21 22:02:27 2017 @@ -11,7 +11,11 @@ // class set -// explicit set(const value_compare& comp); +// explicit set(const value_compare& comp) const; +// value_compare and key_compare are the same type for set/multiset + +// key_compare key_comp() const; +// value_compare value_comp() const; #include <set> #include <cassert> @@ -21,8 +25,9 @@ int main() { typedef test_compare<std::less<int> > C; - std::set<int, C> m(C(3)); + const std::set<int, C> m(C(3)); assert(m.empty()); assert(m.begin() == m.end()); assert(m.key_comp() == C(3)); + assert(m.value_comp() == C(3)); } Modified: libcxx/trunk/test/std/containers/test_compare.h URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/containers/test_compare.h?rev=318818&r1=318817&r2=318818&view=diff ============================================================================== --- libcxx/trunk/test/std/containers/test_compare.h (original) +++ libcxx/trunk/test/std/containers/test_compare.h Tue Nov 21 22:02:27 2017 @@ -33,4 +33,13 @@ public: {return data_ == c.data_;} }; + +template <class C> +class non_const_compare +{ +// operator() deliberately not marked as 'const' + bool operator()(const C& x,const C&y) { return x < y; } +}; + + #endif // TEST_COMPARE_H _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits