--- /dev/null
+//===----------------------------------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+#ifndef CHECK_CONSECUTIVE_H
+#define CHECK_CONSECUTIVE_H
+
+// <unordered_multiset>
+// <unordered_multimap>
+
+#include <cassert>
+#include <set>
+#include <stddef.h>
+
+// Check consecutive equal values in an unordered_multiset iterator
+template <typename Iter>
+void CheckConsecutiveValues(Iter pos, Iter end, typename Iter::value_type value, size_t count)
+{
+ for ( size_t i = 0; i < count; ++i )
+ {
+ assert(pos != end);
+ assert(*pos == value);
+ ++pos;
+ }
+ assert(pos == end || *pos != value);
+}
+
+// Check consecutive equal keys in an unordered_multimap iterator
+template <typename Iter>
+void CheckConsecutiveKeys(Iter pos, Iter end, typename Iter::value_type::first_type key, std::multiset<typename Iter::value_type::second_type>& values)
+{
+ while (!values.empty())
+ {
+ assert(pos != end);
+ assert(pos->first == key);
+ assert(values.find(pos->second) != values.end());
+ values.erase(values.find(pos->second));
+ ++pos;
+ }
+ assert(pos == end || pos->first != key);
+}
+
+#endif
#include <unordered_map>
#include <string>
+#include <set>
#include <cassert>
#include <cfloat>
#include <cmath>
#include <cstddef>
#include "test_macros.h"
+#include "../../../check_consecutive.h"
#include "../../../test_compare.h"
#include "../../../test_hash.h"
#include "test_allocator.h"
c = c0;
LIBCPP_ASSERT(c.bucket_count() == 7);
assert(c.size() == 6);
- C::const_iterator i = c.cbegin();
- assert(i->first == 1);
- assert(i->second == "one");
- ++i;
- assert(i->first == 1);
- assert(i->second == "four");
- ++i;
- assert(i->first == 2);
- assert(i->second == "two");
- ++i;
- assert(i->first == 2);
- assert(i->second == "four");
- ++i;
- assert(i->first == 3);
- assert(i->second == "three");
- ++i;
- assert(i->first == 4);
- assert(i->second == "four");
+ std::multiset<std::string> s;
+ s.insert("one");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(1), c.end(), 1, s);
+ s.insert("two");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(2), c.end(), 2, s);
+ s.insert("three");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(3), c.end(), 3, s);
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(4), c.end(), 4, s);
assert(c.hash_function() == test_hash<std::hash<int> >(8));
assert(c.key_eq() == test_compare<std::equal_to<int> >(9));
assert(c.get_allocator() == A(4));
c = c0;
assert(c.bucket_count() >= 7);
assert(c.size() == 6);
- C::const_iterator i = c.cbegin();
- assert(i->first == 1);
- assert(i->second == "one");
- ++i;
- assert(i->first == 1);
- assert(i->second == "four");
- ++i;
- assert(i->first == 2);
- assert(i->second == "two");
- ++i;
- assert(i->first == 2);
- assert(i->second == "four");
- ++i;
- assert(i->first == 3);
- assert(i->second == "three");
- ++i;
- assert(i->first == 4);
- assert(i->second == "four");
+ std::multiset<std::string> s;
+ s.insert("one");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(1), c.end(), 1, s);
+ s.insert("two");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(2), c.end(), 2, s);
+ s.insert("three");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(3), c.end(), 3, s);
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(4), c.end(), 4, s);
assert(c.hash_function() == test_hash<std::hash<int> >(8));
assert(c.key_eq() == test_compare<std::equal_to<int> >(9));
assert(c.get_allocator() == A(10));
c = c0;
LIBCPP_ASSERT(c.bucket_count() == 7);
assert(c.size() == 6);
- C::const_iterator i = c.cbegin();
- assert(i->first == 1);
- assert(i->second == "one");
- ++i;
- assert(i->first == 1);
- assert(i->second == "four");
- ++i;
- assert(i->first == 2);
- assert(i->second == "two");
- ++i;
- assert(i->first == 2);
- assert(i->second == "four");
- ++i;
- assert(i->first == 3);
- assert(i->second == "three");
- ++i;
- assert(i->first == 4);
- assert(i->second == "four");
+ std::multiset<std::string> s;
+ s.insert("one");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(1), c.end(), 1, s);
+ s.insert("two");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(2), c.end(), 2, s);
+ s.insert("three");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(3), c.end(), 3, s);
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(4), c.end(), 4, s);
assert(c.hash_function() == test_hash<std::hash<int> >(8));
assert(c.key_eq() == test_compare<std::equal_to<int> >(9));
assert(c.get_allocator() == A());
#include <unordered_map>
#include <string>
+#include <set>
#include <cassert>
#include <cfloat>
#include <cmath>
#include <cstddef>
+#include "../../../check_consecutive.h"
#include "../../../test_compare.h"
#include "../../../test_hash.h"
#include "test_allocator.h"
typedef std::pair<C::const_iterator, C::const_iterator> Eq;
Eq eq = c.equal_range(1);
assert(std::distance(eq.first, eq.second) == 2);
- C::const_iterator i = eq.first;
- assert(i->first == 1);
- assert(i->second == "one");
- ++i;
- assert(i->first == 1);
- assert(i->second == "four");
+ std::multiset<std::string> s;
+ s.insert("one");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(1), c.end(), 1, s);
eq = c.equal_range(2);
assert(std::distance(eq.first, eq.second) == 2);
- i = eq.first;
- assert(i->first == 2);
- assert(i->second == "two");
- ++i;
- assert(i->first == 2);
- assert(i->second == "four");
+ s.insert("two");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(2), c.end(), 2, s);
eq = c.equal_range(3);
assert(std::distance(eq.first, eq.second) == 1);
- i = eq.first;
+ C::const_iterator i = eq.first;
assert(i->first == 3);
assert(i->second == "three");
eq = c.equal_range(4);
typedef std::pair<C::const_iterator, C::const_iterator> Eq;
Eq eq = c.equal_range(1);
assert(std::distance(eq.first, eq.second) == 2);
- C::const_iterator i = eq.first;
- assert(i->first == 1);
- assert(i->second == "one");
- ++i;
- assert(i->first == 1);
- assert(i->second == "four");
+ std::multiset<std::string> s;
+ s.insert("one");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(1), c.end(), 1, s);
eq = c.equal_range(2);
assert(std::distance(eq.first, eq.second) == 2);
- i = eq.first;
- assert(i->first == 2);
- assert(i->second == "two");
- ++i;
- assert(i->first == 2);
- assert(i->second == "four");
+ s.insert("two");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(2), c.end(), 2, s);
eq = c.equal_range(3);
assert(std::distance(eq.first, eq.second) == 1);
- i = eq.first;
+ C::const_iterator i = eq.first;
assert(i->first == 3);
assert(i->second == "three");
eq = c.equal_range(4);
#include <unordered_map>
#include <string>
+#include <set>
#include <cassert>
#include <cfloat>
#include <cmath>
#include <cstddef>
#include "test_macros.h"
+#include "../../../check_consecutive.h"
#include "../../../test_compare.h"
#include "../../../test_hash.h"
#include "test_allocator.h"
typedef std::pair<C::const_iterator, C::const_iterator> Eq;
Eq eq = c.equal_range(1);
assert(std::distance(eq.first, eq.second) == 2);
- C::const_iterator i = eq.first;
- assert(i->first == 1);
- assert(i->second == "one");
- ++i;
- assert(i->first == 1);
- assert(i->second == "four");
+ std::multiset<std::string> s;
+ s.insert("one");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(1), c.end(), 1, s);
eq = c.equal_range(2);
assert(std::distance(eq.first, eq.second) == 2);
- i = eq.first;
- assert(i->first == 2);
- assert(i->second == "two");
- ++i;
- assert(i->first == 2);
- assert(i->second == "four");
+ s.insert("two");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(2), c.end(), 2, s);
eq = c.equal_range(3);
assert(std::distance(eq.first, eq.second) == 1);
- i = eq.first;
+ C::const_iterator i = eq.first;
assert(i->first == 3);
assert(i->second == "three");
eq = c.equal_range(4);
typedef std::pair<C::const_iterator, C::const_iterator> Eq;
Eq eq = c.equal_range(1);
assert(std::distance(eq.first, eq.second) == 2);
- C::const_iterator i = eq.first;
- assert(i->first == 1);
- assert(i->second == "one");
- ++i;
- assert(i->first == 1);
- assert(i->second == "four");
+ std::multiset<std::string> s;
+ s.insert("one");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(1), c.end(), 1, s);
eq = c.equal_range(2);
assert(std::distance(eq.first, eq.second) == 2);
- i = eq.first;
- assert(i->first == 2);
- assert(i->second == "two");
- ++i;
- assert(i->first == 2);
- assert(i->second == "four");
+ s.insert("two");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(2), c.end(), 2, s);
eq = c.equal_range(3);
assert(std::distance(eq.first, eq.second) == 1);
- i = eq.first;
+ C::const_iterator i = eq.first;
assert(i->first == 3);
assert(i->second == "three");
eq = c.equal_range(4);
typedef std::pair<C::const_iterator, C::const_iterator> Eq;
Eq eq = c.equal_range(1);
assert(std::distance(eq.first, eq.second) == 2);
- C::const_iterator i = eq.first;
- assert(i->first == 1);
- assert(i->second == "one");
- ++i;
- assert(i->first == 1);
- assert(i->second == "four");
+ std::multiset<std::string> s;
+ s.insert("one");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(1), c.end(), 1, s);
eq = c.equal_range(2);
assert(std::distance(eq.first, eq.second) == 2);
- i = eq.first;
- assert(i->first == 2);
- assert(i->second == "two");
- ++i;
- assert(i->first == 2);
- assert(i->second == "four");
+ s.insert("two");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(2), c.end(), 2, s);
eq = c.equal_range(3);
assert(std::distance(eq.first, eq.second) == 1);
- i = eq.first;
+ C::const_iterator i = eq.first;
assert(i->first == 3);
assert(i->second == "three");
eq = c.equal_range(4);
typedef std::pair<C::const_iterator, C::const_iterator> Eq;
Eq eq = c.equal_range(1);
assert(std::distance(eq.first, eq.second) == 2);
- C::const_iterator i = eq.first;
- assert(i->first == 1);
- assert(i->second == "one");
- ++i;
- assert(i->first == 1);
- assert(i->second == "four");
+ std::multiset<std::string> s;
+ s.insert("one");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(1), c.end(), 1, s);
eq = c.equal_range(2);
assert(std::distance(eq.first, eq.second) == 2);
- i = eq.first;
- assert(i->first == 2);
- assert(i->second == "two");
- ++i;
- assert(i->first == 2);
- assert(i->second == "four");
+ s.insert("two");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(2), c.end(), 2, s);
eq = c.equal_range(3);
assert(std::distance(eq.first, eq.second) == 1);
- i = eq.first;
+ C::const_iterator i = eq.first;
assert(i->first == 3);
assert(i->second == "three");
eq = c.equal_range(4);
#include <unordered_map>
#include <string>
+#include <set>
#include <cassert>
#include <cfloat>
#include <cmath>
#include <cstddef>
#include "test_macros.h"
+#include "../../../check_consecutive.h"
#include "../../../test_compare.h"
#include "../../../test_hash.h"
#include "test_allocator.h"
C c = c0;
LIBCPP_ASSERT(c.bucket_count() == 7);
assert(c.size() == 6);
- C::const_iterator i = c.cbegin();
- assert(i->first == 1);
- assert(i->second == "one");
- ++i;
- assert(i->first == 1);
- assert(i->second == "four");
- ++i;
- assert(i->first == 2);
- assert(i->second == "two");
- ++i;
- assert(i->first == 2);
- assert(i->second == "four");
- ++i;
- assert(i->first == 3);
- assert(i->second == "three");
- ++i;
- assert(i->first == 4);
- assert(i->second == "four");
+ std::multiset<std::string> s;
+ s.insert("one");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(1), c.end(), 1, s);
+ s.insert("two");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(2), c.end(), 2, s);
+ s.insert("three");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(3), c.end(), 3, s);
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(4), c.end(), 4, s);
assert(c.hash_function() == test_hash<std::hash<int> >(8));
assert(c.key_eq() == test_compare<std::equal_to<int> >(9));
assert(c.get_allocator() ==
C c = c0;
LIBCPP_ASSERT(c.bucket_count() == 7);
assert(c.size() == 6);
- C::const_iterator i = c.cbegin();
- assert(i->first == 1);
- assert(i->second == "one");
- ++i;
- assert(i->first == 1);
- assert(i->second == "four");
- ++i;
- assert(i->first == 2);
- assert(i->second == "two");
- ++i;
- assert(i->first == 2);
- assert(i->second == "four");
- ++i;
- assert(i->first == 3);
- assert(i->second == "three");
- ++i;
- assert(i->first == 4);
- assert(i->second == "four");
+ std::multiset<std::string> s;
+ s.insert("one");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(1), c.end(), 1, s);
+ s.insert("two");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(2), c.end(), 2, s);
+ s.insert("three");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(3), c.end(), 3, s);
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(4), c.end(), 4, s);
assert(c.hash_function() == test_hash<std::hash<int> >(8));
assert(c.key_eq() == test_compare<std::equal_to<int> >(9));
assert(c.get_allocator() ==
C c = c0;
LIBCPP_ASSERT(c.bucket_count() == 7);
assert(c.size() == 6);
- C::const_iterator i = c.cbegin();
- assert(i->first == 1);
- assert(i->second == "one");
- ++i;
- assert(i->first == 1);
- assert(i->second == "four");
- ++i;
- assert(i->first == 2);
- assert(i->second == "two");
- ++i;
- assert(i->first == 2);
- assert(i->second == "four");
- ++i;
- assert(i->first == 3);
- assert(i->second == "three");
- ++i;
- assert(i->first == 4);
- assert(i->second == "four");
+ std::multiset<std::string> s;
+ s.insert("one");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(1), c.end(), 1, s);
+ s.insert("two");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(2), c.end(), 2, s);
+ s.insert("three");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(3), c.end(), 3, s);
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(4), c.end(), 4, s);
assert(c.hash_function() == test_hash<std::hash<int> >(8));
assert(c.key_eq() == test_compare<std::equal_to<int> >(9));
assert(c.get_allocator() ==
#include <unordered_map>
#include <string>
+#include <set>
#include <cassert>
#include <cfloat>
#include <cmath>
#include <cstddef>
#include "test_macros.h"
+#include "../../../check_consecutive.h"
#include "../../../test_compare.h"
#include "../../../test_hash.h"
#include "test_allocator.h"
C c(c0, test_allocator<std::pair<const int, std::string> >(5));
LIBCPP_ASSERT(c.bucket_count() == 7);
assert(c.size() == 6);
- C::const_iterator i = c.cbegin();
- assert(i->first == 1);
- assert(i->second == "one");
- ++i;
- assert(i->first == 1);
- assert(i->second == "four");
- ++i;
- assert(i->first == 2);
- assert(i->second == "two");
- ++i;
- assert(i->first == 2);
- assert(i->second == "four");
- ++i;
- assert(i->first == 3);
- assert(i->second == "three");
- ++i;
- assert(i->first == 4);
- assert(i->second == "four");
+ std::multiset<std::string> s;
+ s.insert("one");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(1), c.end(), 1, s);
+ s.insert("two");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(2), c.end(), 2, s);
+ s.insert("three");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(3), c.end(), 3, s);
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(4), c.end(), 4, s);
assert(c.hash_function() == test_hash<std::hash<int> >(8));
assert(c.key_eq() == test_compare<std::equal_to<int> >(9));
assert(c.get_allocator() ==
C c(c0, min_allocator<std::pair<const int, std::string> >());
LIBCPP_ASSERT(c.bucket_count() == 7);
assert(c.size() == 6);
- C::const_iterator i = c.cbegin();
- assert(i->first == 1);
- assert(i->second == "one");
- ++i;
- assert(i->first == 1);
- assert(i->second == "four");
- ++i;
- assert(i->first == 2);
- assert(i->second == "two");
- ++i;
- assert(i->first == 2);
- assert(i->second == "four");
- ++i;
- assert(i->first == 3);
- assert(i->second == "three");
- ++i;
- assert(i->first == 4);
- assert(i->second == "four");
+ std::multiset<std::string> s;
+ s.insert("one");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(1), c.end(), 1, s);
+ s.insert("two");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(2), c.end(), 2, s);
+ s.insert("three");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(3), c.end(), 3, s);
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(4), c.end(), 4, s);
assert(c.hash_function() == test_hash<std::hash<int> >(8));
assert(c.key_eq() == test_compare<std::equal_to<int> >(9));
assert(c.get_allocator() ==
C c(c0, A{});
LIBCPP_ASSERT(c.bucket_count() == 7);
assert(c.size() == 6);
- C::const_iterator i = c.cbegin();
- assert(i->first == 1);
- assert(i->second == "one");
- ++i;
- assert(i->first == 1);
- assert(i->second == "four");
- ++i;
- assert(i->first == 2);
- assert(i->second == "two");
- ++i;
- assert(i->first == 2);
- assert(i->second == "four");
- ++i;
- assert(i->first == 3);
- assert(i->second == "three");
- ++i;
- assert(i->first == 4);
- assert(i->second == "four");
+ std::multiset<std::string> s;
+ s.insert("one");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(1), c.end(), 1, s);
+ s.insert("two");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(2), c.end(), 2, s);
+ s.insert("three");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(3), c.end(), 3, s);
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(4), c.end(), 4, s);
assert(c.hash_function() == test_hash<std::hash<int> >(8));
assert(c.key_eq() == test_compare<std::equal_to<int> >(9));
assert(c.get_allocator() == A{});
#include <unordered_map>
#include <string>
+#include <set>
#include <cassert>
#include <cfloat>
#include <cmath>
#include <cstddef>
#include "test_macros.h"
+#include "../../../check_consecutive.h"
#include "../../../test_compare.h"
#include "../../../test_hash.h"
#include "test_allocator.h"
typedef std::pair<C::const_iterator, C::const_iterator> Eq;
Eq eq = c.equal_range(1);
assert(std::distance(eq.first, eq.second) == 2);
- C::const_iterator i = eq.first;
- assert(i->first == 1);
- assert(i->second == "one");
- ++i;
- assert(i->first == 1);
- assert(i->second == "four");
+ std::multiset<std::string> s;
+ s.insert("one");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(1), c.end(), 1, s);
eq = c.equal_range(2);
assert(std::distance(eq.first, eq.second) == 2);
- i = eq.first;
- assert(i->first == 2);
- assert(i->second == "two");
- ++i;
- assert(i->first == 2);
- assert(i->second == "four");
+ s.insert("two");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(2), c.end(), 2, s);
eq = c.equal_range(3);
assert(std::distance(eq.first, eq.second) == 1);
- i = eq.first;
+ C::const_iterator i = eq.first;
assert(i->first == 3);
assert(i->second == "three");
eq = c.equal_range(4);
typedef std::pair<C::const_iterator, C::const_iterator> Eq;
Eq eq = c.equal_range(1);
assert(std::distance(eq.first, eq.second) == 2);
- C::const_iterator i = eq.first;
- assert(i->first == 1);
- assert(i->second == "one");
- ++i;
- assert(i->first == 1);
- assert(i->second == "four");
+ std::multiset<std::string> s;
+ s.insert("one");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(1), c.end(), 1, s);
eq = c.equal_range(2);
assert(std::distance(eq.first, eq.second) == 2);
- i = eq.first;
- assert(i->first == 2);
- assert(i->second == "two");
- ++i;
- assert(i->first == 2);
- assert(i->second == "four");
+ s.insert("two");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(2), c.end(), 2, s);
eq = c.equal_range(3);
assert(std::distance(eq.first, eq.second) == 1);
- i = eq.first;
+ C::const_iterator i = eq.first;
assert(i->first == 3);
assert(i->second == "three");
eq = c.equal_range(4);
typedef std::pair<C::const_iterator, C::const_iterator> Eq;
Eq eq = c.equal_range(1);
assert(std::distance(eq.first, eq.second) == 2);
- C::const_iterator i = eq.first;
- assert(i->first == 1);
- assert(i->second == "one");
- ++i;
- assert(i->first == 1);
- assert(i->second == "four");
+ std::multiset<std::string> s;
+ s.insert("one");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(1), c.end(), 1, s);
eq = c.equal_range(2);
assert(std::distance(eq.first, eq.second) == 2);
- i = eq.first;
- assert(i->first == 2);
- assert(i->second == "two");
- ++i;
- assert(i->first == 2);
- assert(i->second == "four");
+ s.insert("two");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(2), c.end(), 2, s);
eq = c.equal_range(3);
assert(std::distance(eq.first, eq.second) == 1);
- i = eq.first;
+ C::const_iterator i = eq.first;
assert(i->first == 3);
assert(i->second == "three");
eq = c.equal_range(4);
typedef std::pair<C::const_iterator, C::const_iterator> Eq;
Eq eq = c.equal_range(1);
assert(std::distance(eq.first, eq.second) == 2);
- C::const_iterator i = eq.first;
- assert(i->first == 1);
- assert(i->second == "one");
- ++i;
- assert(i->first == 1);
- assert(i->second == "four");
+ std::multiset<std::string> s;
+ s.insert("one");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(1), c.end(), 1, s);
eq = c.equal_range(2);
assert(std::distance(eq.first, eq.second) == 2);
- i = eq.first;
- assert(i->first == 2);
- assert(i->second == "two");
- ++i;
- assert(i->first == 2);
- assert(i->second == "four");
+ s.insert("two");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(2), c.end(), 2, s);
eq = c.equal_range(3);
assert(std::distance(eq.first, eq.second) == 1);
- i = eq.first;
+ C::const_iterator i = eq.first;
assert(i->first == 3);
assert(i->second == "three");
eq = c.equal_range(4);
#include <unordered_map>
#include <string>
+#include <set>
#include <cassert>
#include <cfloat>
#include <cmath>
#include <cstddef>
#include "test_macros.h"
+#include "../../../check_consecutive.h"
#include "../../../test_compare.h"
#include "../../../test_hash.h"
#include "test_allocator.h"
typedef std::pair<C::const_iterator, C::const_iterator> Eq;
Eq eq = c.equal_range(1);
assert(std::distance(eq.first, eq.second) == 2);
- C::const_iterator i = eq.first;
- assert(i->first == 1);
- assert(i->second == "one");
- ++i;
- assert(i->first == 1);
- assert(i->second == "four");
+ std::multiset<std::string> s;
+ s.insert("one");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(1), c.end(), 1, s);
eq = c.equal_range(2);
assert(std::distance(eq.first, eq.second) == 2);
- i = eq.first;
- assert(i->first == 2);
- assert(i->second == "two");
- ++i;
- assert(i->first == 2);
- assert(i->second == "four");
+ s.insert("two");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(2), c.end(), 2, s);
eq = c.equal_range(3);
assert(std::distance(eq.first, eq.second) == 1);
- i = eq.first;
+ C::const_iterator i = eq.first;
assert(i->first == 3);
assert(i->second == "three");
eq = c.equal_range(4);
typedef std::pair<C::const_iterator, C::const_iterator> Eq;
Eq eq = c.equal_range(1);
assert(std::distance(eq.first, eq.second) == 2);
- C::const_iterator i = eq.first;
- assert(i->first == 1);
- assert(i->second == "one");
- ++i;
- assert(i->first == 1);
- assert(i->second == "four");
+ std::multiset<std::string> s;
+ s.insert("one");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(1), c.end(), 1, s);
eq = c.equal_range(2);
assert(std::distance(eq.first, eq.second) == 2);
- i = eq.first;
- assert(i->first == 2);
- assert(i->second == "two");
- ++i;
- assert(i->first == 2);
- assert(i->second == "four");
+ s.insert("two");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(2), c.end(), 2, s);
eq = c.equal_range(3);
assert(std::distance(eq.first, eq.second) == 1);
- i = eq.first;
+ C::const_iterator i = eq.first;
assert(i->first == 3);
assert(i->second == "three");
eq = c.equal_range(4);
#include <unordered_map>
#include <string>
+#include <set>
#include <cassert>
#include <cfloat>
#include <cmath>
#include <cstddef>
#include "test_macros.h"
+#include "../../../check_consecutive.h"
#include "../../../test_compare.h"
#include "../../../test_hash.h"
#include "test_allocator.h"
typedef std::pair<C::const_iterator, C::const_iterator> Eq;
Eq eq = c.equal_range(1);
assert(std::distance(eq.first, eq.second) == 2);
- C::const_iterator i = eq.first;
- assert(i->first == 1);
- assert(i->second == "one");
- ++i;
- assert(i->first == 1);
- assert(i->second == "four");
+ std::multiset<std::string> s;
+ s.insert("one");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(1), c.end(), 1, s);
eq = c.equal_range(2);
assert(std::distance(eq.first, eq.second) == 2);
- i = eq.first;
- assert(i->first == 2);
- assert(i->second == "two");
- ++i;
- assert(i->first == 2);
- assert(i->second == "four");
+ s.insert("two");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(2), c.end(), 2, s);
eq = c.equal_range(3);
assert(std::distance(eq.first, eq.second) == 1);
- i = eq.first;
+ C::const_iterator i = eq.first;
assert(i->first == 3);
assert(i->second == "three");
eq = c.equal_range(4);
typedef std::pair<C::const_iterator, C::const_iterator> Eq;
Eq eq = c.equal_range(1);
assert(std::distance(eq.first, eq.second) == 2);
- C::const_iterator i = eq.first;
- assert(i->first == 1);
- assert(i->second == "one");
- ++i;
- assert(i->first == 1);
- assert(i->second == "four");
+ std::multiset<std::string> s;
+ s.insert("one");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(1), c.end(), 1, s);
eq = c.equal_range(2);
assert(std::distance(eq.first, eq.second) == 2);
- i = eq.first;
- assert(i->first == 2);
- assert(i->second == "two");
- ++i;
- assert(i->first == 2);
- assert(i->second == "four");
+ s.insert("two");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(2), c.end(), 2, s);
eq = c.equal_range(3);
assert(std::distance(eq.first, eq.second) == 1);
- i = eq.first;
+ C::const_iterator i = eq.first;
assert(i->first == 3);
assert(i->second == "three");
eq = c.equal_range(4);
#include <unordered_map>
#include <string>
+#include <set>
#include <cassert>
#include <cfloat>
#include <cmath>
#include <cstddef>
#include "test_macros.h"
+#include "../../../check_consecutive.h"
#include "../../../test_compare.h"
#include "../../../test_hash.h"
#include "test_allocator.h"
typedef std::pair<C::const_iterator, C::const_iterator> Eq;
Eq eq = c.equal_range(1);
assert(std::distance(eq.first, eq.second) == 2);
- C::const_iterator i = eq.first;
- assert(i->first == 1);
- assert(i->second == "one");
- ++i;
- assert(i->first == 1);
- assert(i->second == "four");
+ std::multiset<std::string> s;
+ s.insert("one");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(1), c.end(), 1, s);
eq = c.equal_range(2);
assert(std::distance(eq.first, eq.second) == 2);
- i = eq.first;
- assert(i->first == 2);
- assert(i->second == "two");
- ++i;
- assert(i->first == 2);
- assert(i->second == "four");
+ s.insert("two");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(2), c.end(), 2, s);
eq = c.equal_range(3);
assert(std::distance(eq.first, eq.second) == 1);
- i = eq.first;
+ C::const_iterator i = eq.first;
assert(i->first == 3);
assert(i->second == "three");
eq = c.equal_range(4);
typedef std::pair<C::const_iterator, C::const_iterator> Eq;
Eq eq = c.equal_range(1);
assert(std::distance(eq.first, eq.second) == 2);
- C::const_iterator i = eq.first;
- assert(i->first == 1);
- assert(i->second == "one");
- ++i;
- assert(i->first == 1);
- assert(i->second == "four");
+ std::multiset<std::string> s;
+ s.insert("one");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(1), c.end(), 1, s);
eq = c.equal_range(2);
assert(std::distance(eq.first, eq.second) == 2);
- i = eq.first;
- assert(i->first == 2);
- assert(i->second == "two");
- ++i;
- assert(i->first == 2);
- assert(i->second == "four");
+ s.insert("two");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(2), c.end(), 2, s);
eq = c.equal_range(3);
assert(std::distance(eq.first, eq.second) == 1);
- i = eq.first;
+ C::const_iterator i = eq.first;
assert(i->first == 3);
assert(i->second == "three");
eq = c.equal_range(4);
#include <unordered_map>
#include <string>
+#include <set>
#include <cassert>
#include <cfloat>
#include <cmath>
#include <cstddef>
#include "test_macros.h"
+#include "../../../check_consecutive.h"
#include "../../../test_compare.h"
#include "../../../test_hash.h"
#include "test_allocator.h"
typedef std::pair<C::const_iterator, C::const_iterator> Eq;
Eq eq = c.equal_range(1);
assert(std::distance(eq.first, eq.second) == 2);
- C::const_iterator i = eq.first;
- assert(i->first == 1);
- assert(i->second == "one");
- ++i;
- assert(i->first == 1);
- assert(i->second == "four");
+ std::multiset<std::string> s;
+ s.insert("one");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(1), c.end(), 1, s);
eq = c.equal_range(2);
assert(std::distance(eq.first, eq.second) == 2);
- i = eq.first;
- assert(i->first == 2);
- assert(i->second == "two");
- ++i;
- assert(i->first == 2);
- assert(i->second == "four");
+ s.insert("two");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(2), c.end(), 2, s);
eq = c.equal_range(3);
assert(std::distance(eq.first, eq.second) == 1);
- i = eq.first;
+ C::const_iterator i = eq.first;
assert(i->first == 3);
assert(i->second == "three");
eq = c.equal_range(4);
typedef std::pair<C::const_iterator, C::const_iterator> Eq;
Eq eq = c.equal_range(1);
assert(std::distance(eq.first, eq.second) == 2);
- C::const_iterator i = eq.first;
- assert(i->first == 1);
- assert(i->second == "one");
- ++i;
- assert(i->first == 1);
- assert(i->second == "four");
+ std::multiset<std::string> s;
+ s.insert("one");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(1), c.end(), 1, s);
eq = c.equal_range(2);
assert(std::distance(eq.first, eq.second) == 2);
- i = eq.first;
- assert(i->first == 2);
- assert(i->second == "two");
- ++i;
- assert(i->first == 2);
- assert(i->second == "four");
+ s.insert("two");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(2), c.end(), 2, s);
eq = c.equal_range(3);
assert(std::distance(eq.first, eq.second) == 1);
- i = eq.first;
+ C::const_iterator i = eq.first;
assert(i->first == 3);
assert(i->second == "three");
eq = c.equal_range(4);
typedef std::pair<C::const_iterator, C::const_iterator> Eq;
Eq eq = c.equal_range(1);
assert(std::distance(eq.first, eq.second) == 2);
- C::const_iterator i = eq.first;
- assert(i->first == 1);
- assert(i->second == "one");
- ++i;
- assert(i->first == 1);
- assert(i->second == "four");
+ std::multiset<std::string> s;
+ s.insert("one");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(1), c.end(), 1, s);
eq = c.equal_range(2);
assert(std::distance(eq.first, eq.second) == 2);
- i = eq.first;
- assert(i->first == 2);
- assert(i->second == "two");
- ++i;
- assert(i->first == 2);
- assert(i->second == "four");
+ s.insert("two");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(2), c.end(), 2, s);
eq = c.equal_range(3);
assert(std::distance(eq.first, eq.second) == 1);
- i = eq.first;
+ C::const_iterator i = eq.first;
assert(i->first == 3);
assert(i->second == "three");
eq = c.equal_range(4);
#include <unordered_map>
#include <string>
+#include <set>
#include <cassert>
#include <cfloat>
#include <cmath>
#include <cstddef>
#include "test_macros.h"
+#include "../../../check_consecutive.h"
#include "../../../test_compare.h"
#include "../../../test_hash.h"
#include "test_allocator.h"
typedef std::pair<C::const_iterator, C::const_iterator> Eq;
Eq eq = c.equal_range(1);
assert(std::distance(eq.first, eq.second) == 2);
- C::const_iterator i = eq.first;
- assert(i->first == 1);
- assert(i->second == "one");
- ++i;
- assert(i->first == 1);
- assert(i->second == "four");
+ std::multiset<std::string> s;
+ s.insert("one");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(1), c.end(), 1, s);
eq = c.equal_range(2);
assert(std::distance(eq.first, eq.second) == 2);
- i = eq.first;
- assert(i->first == 2);
- assert(i->second == "two");
- ++i;
- assert(i->first == 2);
- assert(i->second == "four");
+ s.insert("two");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(2), c.end(), 2, s);
eq = c.equal_range(3);
assert(std::distance(eq.first, eq.second) == 1);
- i = eq.first;
+ C::const_iterator i = eq.first;
assert(i->first == 3);
assert(i->second == "three");
eq = c.equal_range(4);
typedef std::pair<C::const_iterator, C::const_iterator> Eq;
Eq eq = c.equal_range(1);
assert(std::distance(eq.first, eq.second) == 2);
- C::const_iterator i = eq.first;
- assert(i->first == 1);
- assert(i->second == "one");
- ++i;
- assert(i->first == 1);
- assert(i->second == "four");
+ std::multiset<std::string> s;
+ s.insert("one");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(1), c.end(), 1, s);
eq = c.equal_range(2);
assert(std::distance(eq.first, eq.second) == 2);
- i = eq.first;
- assert(i->first == 2);
- assert(i->second == "two");
- ++i;
- assert(i->first == 2);
- assert(i->second == "four");
+ s.insert("two");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(2), c.end(), 2, s);
eq = c.equal_range(3);
assert(std::distance(eq.first, eq.second) == 1);
- i = eq.first;
+ C::const_iterator i = eq.first;
assert(i->first == 3);
assert(i->second == "three");
eq = c.equal_range(4);
#include <unordered_map>
#include <string>
+#include <set>
#include <cassert>
#include <cfloat>
#include <cmath>
#include <cstddef>
#include "test_macros.h"
+#include "../../../check_consecutive.h"
#include "../../../test_compare.h"
#include "../../../test_hash.h"
#include "test_allocator.h"
typedef std::pair<C::const_iterator, C::const_iterator> Eq;
Eq eq = c.equal_range(1);
assert(std::distance(eq.first, eq.second) == 2);
- C::const_iterator i = eq.first;
- assert(i->first == 1);
- assert(i->second == "one");
- ++i;
- assert(i->first == 1);
- assert(i->second == "four");
+ std::multiset<std::string> s;
+ s.insert("one");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(1), c.end(), 1, s);
eq = c.equal_range(2);
assert(std::distance(eq.first, eq.second) == 2);
- i = eq.first;
- assert(i->first == 2);
- assert(i->second == "two");
- ++i;
- assert(i->first == 2);
- assert(i->second == "four");
+ s.insert("two");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(2), c.end(), 2, s);
eq = c.equal_range(3);
assert(std::distance(eq.first, eq.second) == 1);
- i = eq.first;
+ C::const_iterator i = eq.first;
assert(i->first == 3);
assert(i->second == "three");
eq = c.equal_range(4);
typedef std::pair<C::const_iterator, C::const_iterator> Eq;
Eq eq = c.equal_range(1);
assert(std::distance(eq.first, eq.second) == 2);
- C::const_iterator i = eq.first;
- assert(i->first == 1);
- assert(i->second == "one");
- ++i;
- assert(i->first == 1);
- assert(i->second == "four");
+ std::multiset<std::string> s;
+ s.insert("one");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(1), c.end(), 1, s);
eq = c.equal_range(2);
assert(std::distance(eq.first, eq.second) == 2);
- i = eq.first;
- assert(i->first == 2);
- assert(i->second == "two");
- ++i;
- assert(i->first == 2);
- assert(i->second == "four");
+ s.insert("two");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(2), c.end(), 2, s);
eq = c.equal_range(3);
assert(std::distance(eq.first, eq.second) == 1);
- i = eq.first;
+ C::const_iterator i = eq.first;
assert(i->first == 3);
assert(i->second == "three");
eq = c.equal_range(4);
typedef std::pair<C::const_iterator, C::const_iterator> Eq;
Eq eq = c.equal_range(1);
assert(std::distance(eq.first, eq.second) == 2);
- C::const_iterator i = eq.first;
- assert(i->first == 1);
- assert(i->second == "one");
- ++i;
- assert(i->first == 1);
- assert(i->second == "four");
+ std::multiset<std::string> s;
+ s.insert("one");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(1), c.end(), 1, s);
eq = c.equal_range(2);
assert(std::distance(eq.first, eq.second) == 2);
- i = eq.first;
- assert(i->first == 2);
- assert(i->second == "two");
- ++i;
- assert(i->first == 2);
- assert(i->second == "four");
+ s.insert("two");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(2), c.end(), 2, s);
eq = c.equal_range(3);
assert(std::distance(eq.first, eq.second) == 1);
- i = eq.first;
+ C::const_iterator i = eq.first;
assert(i->first == 3);
assert(i->second == "three");
eq = c.equal_range(4);
typedef std::pair<C::const_iterator, C::const_iterator> Eq;
Eq eq = c.equal_range(1);
assert(std::distance(eq.first, eq.second) == 2);
- C::const_iterator i = eq.first;
- assert(i->first == 1);
- assert(i->second == "one");
- ++i;
- assert(i->first == 1);
- assert(i->second == "four");
+ std::multiset<std::string> s;
+ s.insert("one");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(1), c.end(), 1, s);
eq = c.equal_range(2);
assert(std::distance(eq.first, eq.second) == 2);
- i = eq.first;
- assert(i->first == 2);
- assert(i->second == "two");
- ++i;
- assert(i->first == 2);
- assert(i->second == "four");
+ s.insert("two");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(2), c.end(), 2, s);
eq = c.equal_range(3);
assert(std::distance(eq.first, eq.second) == 1);
- i = eq.first;
+ C::const_iterator i = eq.first;
assert(i->first == 3);
assert(i->second == "three");
eq = c.equal_range(4);
#include <unordered_map>
#include <string>
+#include <set>
#include <cassert>
#include <cfloat>
#include <cmath>
#include "test_macros.h"
#include "test_iterators.h"
+#include "../../../check_consecutive.h"
#include "../../../NotConstructible.h"
#include "../../../test_compare.h"
#include "../../../test_hash.h"
typedef std::pair<C::const_iterator, C::const_iterator> Eq;
Eq eq = c.equal_range(1);
assert(std::distance(eq.first, eq.second) == 2);
- C::const_iterator i = eq.first;
- assert(i->first == 1);
- assert(i->second == "one");
- ++i;
- assert(i->first == 1);
- assert(i->second == "four");
+ std::multiset<std::string> s;
+ s.insert("one");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(1), c.end(), 1, s);
eq = c.equal_range(2);
assert(std::distance(eq.first, eq.second) == 2);
- i = eq.first;
- assert(i->first == 2);
- assert(i->second == "two");
- ++i;
- assert(i->first == 2);
- assert(i->second == "four");
+ s.insert("two");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(2), c.end(), 2, s);
eq = c.equal_range(3);
assert(std::distance(eq.first, eq.second) == 1);
- i = eq.first;
+ C::const_iterator i = eq.first;
assert(i->first == 3);
assert(i->second == "three");
eq = c.equal_range(4);
typedef std::pair<C::const_iterator, C::const_iterator> Eq;
Eq eq = c.equal_range(1);
assert(std::distance(eq.first, eq.second) == 2);
- C::const_iterator i = eq.first;
- assert(i->first == 1);
- assert(i->second == "one");
- ++i;
- assert(i->first == 1);
- assert(i->second == "four");
+ std::multiset<std::string> s;
+ s.insert("one");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(1), c.end(), 1, s);
eq = c.equal_range(2);
assert(std::distance(eq.first, eq.second) == 2);
- i = eq.first;
- assert(i->first == 2);
- assert(i->second == "two");
- ++i;
- assert(i->first == 2);
- assert(i->second == "four");
+ s.insert("two");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(2), c.end(), 2, s);
eq = c.equal_range(3);
assert(std::distance(eq.first, eq.second) == 1);
- i = eq.first;
+ C::const_iterator i = eq.first;
assert(i->first == 3);
assert(i->second == "three");
eq = c.equal_range(4);
typedef std::pair<C::const_iterator, C::const_iterator> Eq;
Eq eq = c.equal_range(1);
assert(std::distance(eq.first, eq.second) == 2);
- C::const_iterator i = eq.first;
- assert(i->first == 1);
- assert(i->second == "one");
- ++i;
- assert(i->first == 1);
- assert(i->second == "four");
+ std::multiset<std::string> s;
+ s.insert("one");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(1), c.end(), 1, s);
eq = c.equal_range(2);
assert(std::distance(eq.first, eq.second) == 2);
- i = eq.first;
- assert(i->first == 2);
- assert(i->second == "two");
- ++i;
- assert(i->first == 2);
- assert(i->second == "four");
+ s.insert("two");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(2), c.end(), 2, s);
eq = c.equal_range(3);
assert(std::distance(eq.first, eq.second) == 1);
- i = eq.first;
+ C::const_iterator i = eq.first;
assert(i->first == 3);
assert(i->second == "three");
eq = c.equal_range(4);
typedef std::pair<C::const_iterator, C::const_iterator> Eq;
Eq eq = c.equal_range(1);
assert(std::distance(eq.first, eq.second) == 2);
- C::const_iterator i = eq.first;
- assert(i->first == 1);
- assert(i->second == "one");
- ++i;
- assert(i->first == 1);
- assert(i->second == "four");
+ std::multiset<std::string> s;
+ s.insert("one");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(1), c.end(), 1, s);
eq = c.equal_range(2);
assert(std::distance(eq.first, eq.second) == 2);
- i = eq.first;
- assert(i->first == 2);
- assert(i->second == "two");
- ++i;
- assert(i->first == 2);
- assert(i->second == "four");
+ s.insert("two");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(2), c.end(), 2, s);
eq = c.equal_range(3);
assert(std::distance(eq.first, eq.second) == 1);
- i = eq.first;
+ C::const_iterator i = eq.first;
assert(i->first == 3);
assert(i->second == "three");
eq = c.equal_range(4);
#include <unordered_map>
#include <string>
+#include <set>
#include <cassert>
#include <cfloat>
#include <cmath>
#include "test_macros.h"
#include "test_iterators.h"
+#include "../../../check_consecutive.h"
#include "../../../NotConstructible.h"
#include "../../../test_compare.h"
#include "../../../test_hash.h"
typedef std::pair<C::const_iterator, C::const_iterator> Eq;
Eq eq = c.equal_range(1);
assert(std::distance(eq.first, eq.second) == 2);
- C::const_iterator i = eq.first;
- assert(i->first == 1);
- assert(i->second == "one");
- ++i;
- assert(i->first == 1);
- assert(i->second == "four");
+ std::multiset<std::string> s;
+ s.insert("one");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(1), c.end(), 1, s);
eq = c.equal_range(2);
assert(std::distance(eq.first, eq.second) == 2);
- i = eq.first;
- assert(i->first == 2);
- assert(i->second == "two");
- ++i;
- assert(i->first == 2);
- assert(i->second == "four");
+ s.insert("two");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(2), c.end(), 2, s);
eq = c.equal_range(3);
assert(std::distance(eq.first, eq.second) == 1);
- i = eq.first;
+ C::const_iterator i = eq.first;
assert(i->first == 3);
assert(i->second == "three");
eq = c.equal_range(4);
typedef std::pair<C::const_iterator, C::const_iterator> Eq;
Eq eq = c.equal_range(1);
assert(std::distance(eq.first, eq.second) == 2);
- C::const_iterator i = eq.first;
- assert(i->first == 1);
- assert(i->second == "one");
- ++i;
- assert(i->first == 1);
- assert(i->second == "four");
+ std::multiset<std::string> s;
+ s.insert("one");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(1), c.end(), 1, s);
eq = c.equal_range(2);
assert(std::distance(eq.first, eq.second) == 2);
- i = eq.first;
- assert(i->first == 2);
- assert(i->second == "two");
- ++i;
- assert(i->first == 2);
- assert(i->second == "four");
+ s.insert("two");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(2), c.end(), 2, s);
eq = c.equal_range(3);
assert(std::distance(eq.first, eq.second) == 1);
- i = eq.first;
+ C::const_iterator i = eq.first;
assert(i->first == 3);
assert(i->second == "three");
eq = c.equal_range(4);
#include <unordered_map>
#include <string>
+#include <set>
#include <cassert>
#include <cfloat>
#include <cmath>
#include "test_macros.h"
#include "test_iterators.h"
+#include "../../../check_consecutive.h"
#include "../../../NotConstructible.h"
#include "../../../test_compare.h"
#include "../../../test_hash.h"
typedef std::pair<C::const_iterator, C::const_iterator> Eq;
Eq eq = c.equal_range(1);
assert(std::distance(eq.first, eq.second) == 2);
- C::const_iterator i = eq.first;
- assert(i->first == 1);
- assert(i->second == "one");
- ++i;
- assert(i->first == 1);
- assert(i->second == "four");
+ std::multiset<std::string> s;
+ s.insert("one");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(1), c.end(), 1, s);
eq = c.equal_range(2);
assert(std::distance(eq.first, eq.second) == 2);
- i = eq.first;
- assert(i->first == 2);
- assert(i->second == "two");
- ++i;
- assert(i->first == 2);
- assert(i->second == "four");
+ s.insert("two");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(2), c.end(), 2, s);
eq = c.equal_range(3);
assert(std::distance(eq.first, eq.second) == 1);
- i = eq.first;
+ C::const_iterator i = eq.first;
assert(i->first == 3);
assert(i->second == "three");
eq = c.equal_range(4);
typedef std::pair<C::const_iterator, C::const_iterator> Eq;
Eq eq = c.equal_range(1);
assert(std::distance(eq.first, eq.second) == 2);
- C::const_iterator i = eq.first;
- assert(i->first == 1);
- assert(i->second == "one");
- ++i;
- assert(i->first == 1);
- assert(i->second == "four");
+ std::multiset<std::string> s;
+ s.insert("one");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(1), c.end(), 1, s);
eq = c.equal_range(2);
assert(std::distance(eq.first, eq.second) == 2);
- i = eq.first;
- assert(i->first == 2);
- assert(i->second == "two");
- ++i;
- assert(i->first == 2);
- assert(i->second == "four");
+ s.insert("two");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(2), c.end(), 2, s);
eq = c.equal_range(3);
assert(std::distance(eq.first, eq.second) == 1);
- i = eq.first;
+ C::const_iterator i = eq.first;
assert(i->first == 3);
assert(i->second == "three");
eq = c.equal_range(4);
#include <unordered_map>
#include <string>
+#include <set>
#include <cassert>
#include <cfloat>
#include <cmath>
#include "test_macros.h"
#include "test_iterators.h"
#include "../../../NotConstructible.h"
+#include "../../../check_consecutive.h"
#include "../../../test_compare.h"
#include "../../../test_hash.h"
#include "test_allocator.h"
typedef std::pair<C::const_iterator, C::const_iterator> Eq;
Eq eq = c.equal_range(1);
assert(std::distance(eq.first, eq.second) == 2);
- C::const_iterator i = eq.first;
- assert(i->first == 1);
- assert(i->second == "one");
- ++i;
- assert(i->first == 1);
- assert(i->second == "four");
+ std::multiset<std::string> s;
+ s.insert("one");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(1), c.end(), 1, s);
eq = c.equal_range(2);
assert(std::distance(eq.first, eq.second) == 2);
- i = eq.first;
- assert(i->first == 2);
- assert(i->second == "two");
- ++i;
- assert(i->first == 2);
- assert(i->second == "four");
+ s.insert("two");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(2), c.end(), 2, s);
eq = c.equal_range(3);
assert(std::distance(eq.first, eq.second) == 1);
- i = eq.first;
+ C::const_iterator i = eq.first;
assert(i->first == 3);
assert(i->second == "three");
eq = c.equal_range(4);
typedef std::pair<C::const_iterator, C::const_iterator> Eq;
Eq eq = c.equal_range(1);
assert(std::distance(eq.first, eq.second) == 2);
- C::const_iterator i = eq.first;
- assert(i->first == 1);
- assert(i->second == "one");
- ++i;
- assert(i->first == 1);
- assert(i->second == "four");
+ std::multiset<std::string> s;
+ s.insert("one");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(1), c.end(), 1, s);
eq = c.equal_range(2);
assert(std::distance(eq.first, eq.second) == 2);
- i = eq.first;
- assert(i->first == 2);
- assert(i->second == "two");
- ++i;
- assert(i->first == 2);
- assert(i->second == "four");
+ s.insert("two");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(2), c.end(), 2, s);
eq = c.equal_range(3);
assert(std::distance(eq.first, eq.second) == 1);
- i = eq.first;
+ C::const_iterator i = eq.first;
assert(i->first == 3);
assert(i->second == "three");
eq = c.equal_range(4);
#include <unordered_map>
#include <string>
+#include <set>
#include <cassert>
#include <cfloat>
#include <cmath>
#include "test_macros.h"
#include "test_iterators.h"
#include "../../../NotConstructible.h"
+#include "../../../check_consecutive.h"
#include "../../../test_compare.h"
#include "../../../test_hash.h"
#include "test_allocator.h"
typedef std::pair<C::const_iterator, C::const_iterator> Eq;
Eq eq = c.equal_range(1);
assert(std::distance(eq.first, eq.second) == 2);
- C::const_iterator i = eq.first;
- assert(i->first == 1);
- assert(i->second == "one");
- ++i;
- assert(i->first == 1);
- assert(i->second == "four");
+ std::multiset<std::string> s;
+ s.insert("one");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(1), c.end(), 1, s);
eq = c.equal_range(2);
assert(std::distance(eq.first, eq.second) == 2);
- i = eq.first;
- assert(i->first == 2);
- assert(i->second == "two");
- ++i;
- assert(i->first == 2);
- assert(i->second == "four");
+ s.insert("two");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(2), c.end(), 2, s);
eq = c.equal_range(3);
assert(std::distance(eq.first, eq.second) == 1);
- i = eq.first;
+ C::const_iterator i = eq.first;
assert(i->first == 3);
assert(i->second == "three");
eq = c.equal_range(4);
typedef std::pair<C::const_iterator, C::const_iterator> Eq;
Eq eq = c.equal_range(1);
assert(std::distance(eq.first, eq.second) == 2);
- C::const_iterator i = eq.first;
- assert(i->first == 1);
- assert(i->second == "one");
- ++i;
- assert(i->first == 1);
- assert(i->second == "four");
+ std::multiset<std::string> s;
+ s.insert("one");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(1), c.end(), 1, s);
eq = c.equal_range(2);
assert(std::distance(eq.first, eq.second) == 2);
- i = eq.first;
- assert(i->first == 2);
- assert(i->second == "two");
- ++i;
- assert(i->first == 2);
- assert(i->second == "four");
+ s.insert("two");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(2), c.end(), 2, s);
eq = c.equal_range(3);
assert(std::distance(eq.first, eq.second) == 1);
- i = eq.first;
+ C::const_iterator i = eq.first;
assert(i->first == 3);
assert(i->second == "three");
eq = c.equal_range(4);
typedef std::pair<C::const_iterator, C::const_iterator> Eq;
Eq eq = c.equal_range(1);
assert(std::distance(eq.first, eq.second) == 2);
- C::const_iterator i = eq.first;
- assert(i->first == 1);
- assert(i->second == "one");
- ++i;
- assert(i->first == 1);
- assert(i->second == "four");
+ std::multiset<std::string> s;
+ s.insert("one");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(1), c.end(), 1, s);
eq = c.equal_range(2);
assert(std::distance(eq.first, eq.second) == 2);
- i = eq.first;
- assert(i->first == 2);
- assert(i->second == "two");
- ++i;
- assert(i->first == 2);
- assert(i->second == "four");
+ s.insert("two");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(2), c.end(), 2, s);
eq = c.equal_range(3);
assert(std::distance(eq.first, eq.second) == 1);
- i = eq.first;
+ C::const_iterator i = eq.first;
assert(i->first == 3);
assert(i->second == "three");
eq = c.equal_range(4);
#include <unordered_map>
#include <string>
+#include <set>
#include <cassert>
#include <cstddef>
+#include "../../../check_consecutive.h"
#include "min_allocator.h"
struct TemplateConstructor
C::const_iterator i = c.find(2);
C::const_iterator i_next = i;
++i_next;
+ std::string es = i->second;
C::iterator j = c.erase(i);
assert(j == i_next);
typedef std::pair<C::const_iterator, C::const_iterator> Eq;
Eq eq = c.equal_range(1);
assert(std::distance(eq.first, eq.second) == 2);
- C::const_iterator k = eq.first;
- assert(k->first == 1);
- assert(k->second == "one");
- ++k;
- assert(k->first == 1);
- assert(k->second == "four");
+ std::multiset<std::string> s;
+ s.insert("one");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(1), c.end(), 1, s);
eq = c.equal_range(2);
assert(std::distance(eq.first, eq.second) == 1);
- k = eq.first;
+ C::const_iterator k = eq.first;
assert(k->first == 2);
- assert(k->second == "four");
+ assert(k->second == (es == "two" ? "four" : "two"));
eq = c.equal_range(3);
assert(std::distance(eq.first, eq.second) == 1);
k = eq.first;
C::const_iterator i = c.find(2);
C::const_iterator i_next = i;
++i_next;
+ std::string es = i->second;
C::iterator j = c.erase(i);
assert(j == i_next);
typedef std::pair<C::const_iterator, C::const_iterator> Eq;
Eq eq = c.equal_range(1);
assert(std::distance(eq.first, eq.second) == 2);
- C::const_iterator k = eq.first;
- assert(k->first == 1);
- assert(k->second == "one");
- ++k;
- assert(k->first == 1);
- assert(k->second == "four");
+ std::multiset<std::string> s;
+ s.insert("one");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(1), c.end(), 1, s);
eq = c.equal_range(2);
assert(std::distance(eq.first, eq.second) == 1);
- k = eq.first;
+ C::const_iterator k = eq.first;
assert(k->first == 2);
- assert(k->second == "four");
+ assert(k->second == (es == "two" ? "four" : "two"));
eq = c.equal_range(3);
assert(std::distance(eq.first, eq.second) == 1);
k = eq.first;
#include <unordered_map>
#include <string>
+#include <set>
#include <cassert>
#include <cstddef>
+#include "../../../check_consecutive.h"
#include "min_allocator.h"
#if TEST_STD_VER >= 11
typedef std::pair<C::const_iterator, C::const_iterator> Eq;
Eq eq = c.equal_range(1);
assert(std::distance(eq.first, eq.second) == 2);
- C::const_iterator k = eq.first;
- assert(k->first == 1);
- assert(k->second == "one");
- ++k;
- assert(k->first == 1);
- assert(k->second == "four");
+ std::multiset<std::string> s;
+ s.insert("one");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(1), c.end(), 1, s);
eq = c.equal_range(2);
assert(std::distance(eq.first, eq.second) == 2);
- k = eq.first;
- assert(k->first == 2);
- assert(k->second == "two");
- ++k;
- assert(k->first == 2);
- assert(k->second == "four");
+ s.insert("two");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(2), c.end(), 2, s);
eq = c.equal_range(3);
assert(std::distance(eq.first, eq.second) == 1);
- k = eq.first;
+ C::const_iterator k = eq.first;
assert(k->first == 3);
assert(k->second == "three");
eq = c.equal_range(4);
assert(c.size() == 4);
eq = c.equal_range(1);
assert(std::distance(eq.first, eq.second) == 2);
- k = eq.first;
- assert(k->first == 1);
- assert(k->second == "one");
- ++k;
- assert(k->first == 1);
- assert(k->second == "four");
+ s.insert("one");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(1), c.end(), 1, s);
eq = c.equal_range(3);
assert(std::distance(eq.first, eq.second) == 1);
k = eq.first;
assert(c.size() == 4);
eq = c.equal_range(1);
assert(std::distance(eq.first, eq.second) == 2);
- k = eq.first;
- assert(k->first == 1);
- assert(k->second == "one");
- ++k;
- assert(k->first == 1);
- assert(k->second == "four");
+ s.insert("one");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(1), c.end(), 1, s);
eq = c.equal_range(3);
assert(std::distance(eq.first, eq.second) == 1);
k = eq.first;
assert(c.size() == 3);
eq = c.equal_range(1);
assert(std::distance(eq.first, eq.second) == 2);
- k = eq.first;
- assert(k->first == 1);
- assert(k->second == "one");
- ++k;
- assert(k->first == 1);
- assert(k->second == "four");
+ s.insert("one");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(1), c.end(), 1, s);
eq = c.equal_range(3);
assert(std::distance(eq.first, eq.second) == 1);
k = eq.first;
assert(c.size() == 3);
eq = c.equal_range(1);
assert(std::distance(eq.first, eq.second) == 2);
- k = eq.first;
- assert(k->first == 1);
- assert(k->second == "one");
- ++k;
- assert(k->first == 1);
- assert(k->second == "four");
+ s.insert("one");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(1), c.end(), 1, s);
eq = c.equal_range(3);
assert(std::distance(eq.first, eq.second) == 1);
k = eq.first;
typedef std::pair<C::const_iterator, C::const_iterator> Eq;
Eq eq = c.equal_range(1);
assert(std::distance(eq.first, eq.second) == 2);
- C::const_iterator k = eq.first;
- assert(k->first == 1);
- assert(k->second == "one");
- ++k;
- assert(k->first == 1);
- assert(k->second == "four");
+ std::multiset<std::string> s;
+ s.insert("one");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(1), c.end(), 1, s);
eq = c.equal_range(2);
assert(std::distance(eq.first, eq.second) == 2);
- k = eq.first;
- assert(k->first == 2);
- assert(k->second == "two");
- ++k;
- assert(k->first == 2);
- assert(k->second == "four");
+ s.insert("two");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(2), c.end(), 2, s);
eq = c.equal_range(3);
assert(std::distance(eq.first, eq.second) == 1);
- k = eq.first;
+ C::const_iterator k = eq.first;
assert(k->first == 3);
assert(k->second == "three");
eq = c.equal_range(4);
assert(c.size() == 4);
eq = c.equal_range(1);
assert(std::distance(eq.first, eq.second) == 2);
- k = eq.first;
- assert(k->first == 1);
- assert(k->second == "one");
- ++k;
- assert(k->first == 1);
- assert(k->second == "four");
+ s.insert("one");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(1), c.end(), 1, s);
eq = c.equal_range(3);
assert(std::distance(eq.first, eq.second) == 1);
k = eq.first;
assert(c.size() == 4);
eq = c.equal_range(1);
assert(std::distance(eq.first, eq.second) == 2);
- k = eq.first;
- assert(k->first == 1);
- assert(k->second == "one");
- ++k;
- assert(k->first == 1);
- assert(k->second == "four");
+ s.insert("one");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(1), c.end(), 1, s);
eq = c.equal_range(3);
assert(std::distance(eq.first, eq.second) == 1);
k = eq.first;
assert(c.size() == 3);
eq = c.equal_range(1);
assert(std::distance(eq.first, eq.second) == 2);
- k = eq.first;
- assert(k->first == 1);
- assert(k->second == "one");
- ++k;
- assert(k->first == 1);
- assert(k->second == "four");
+ s.insert("one");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(1), c.end(), 1, s);
eq = c.equal_range(3);
assert(std::distance(eq.first, eq.second) == 1);
k = eq.first;
assert(c.size() == 3);
eq = c.equal_range(1);
assert(std::distance(eq.first, eq.second) == 2);
- k = eq.first;
- assert(k->first == 1);
- assert(k->second == "one");
- ++k;
- assert(k->first == 1);
- assert(k->second == "four");
+ s.insert("one");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(1), c.end(), 1, s);
eq = c.equal_range(3);
assert(std::distance(eq.first, eq.second) == 1);
k = eq.first;
#include <unordered_map>
#include <string>
+#include <set>
#include <cassert>
#include <cstddef>
+#include "../../../check_consecutive.h"
#include "min_allocator.h"
int main(int, char**)
typedef std::pair<C::iterator, C::iterator> Eq;
Eq eq = c.equal_range(1);
assert(std::distance(eq.first, eq.second) == 2);
- k = eq.first;
- assert(k->first == 1);
- assert(k->second == "one");
- ++k;
- assert(k->first == 1);
- assert(k->second == "four");
+ std::multiset<std::string> s;
+ s.insert("one");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(1), c.end(), 1, s);
eq = c.equal_range(2);
assert(std::distance(eq.first, eq.second) == 2);
- k = eq.first;
- assert(k->first == 2);
- assert(k->second == "two");
- ++k;
- assert(k->first == 2);
- assert(k->second == "four");
+ s.insert("two");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(2), c.end(), 2, s);
eq = c.equal_range(3);
assert(std::distance(eq.first, eq.second) == 1);
k = eq.first;
assert(c.size() == 4);
eq = c.equal_range(1);
assert(std::distance(eq.first, eq.second) == 2);
- k = eq.first;
- assert(k->first == 1);
- assert(k->second == "one");
- ++k;
- assert(k->first == 1);
- assert(k->second == "four");
+ s.insert("one");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(1), c.end(), 1, s);
eq = c.equal_range(3);
assert(std::distance(eq.first, eq.second) == 1);
k = eq.first;
typedef std::pair<C::iterator, C::iterator> Eq;
Eq eq = c.equal_range(1);
assert(std::distance(eq.first, eq.second) == 2);
- k = eq.first;
- assert(k->first == 1);
- assert(k->second == "one");
- ++k;
- assert(k->first == 1);
- assert(k->second == "four");
+ std::multiset<std::string> s;
+ s.insert("one");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(1), c.end(), 1, s);
eq = c.equal_range(2);
assert(std::distance(eq.first, eq.second) == 2);
- k = eq.first;
- assert(k->first == 2);
- assert(k->second == "two");
- ++k;
- assert(k->first == 2);
- assert(k->second == "four");
+ s.insert("two");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(2), c.end(), 2, s);
eq = c.equal_range(3);
assert(std::distance(eq.first, eq.second) == 1);
k = eq.first;
assert(c.size() == 4);
eq = c.equal_range(1);
assert(std::distance(eq.first, eq.second) == 2);
- k = eq.first;
- assert(k->first == 1);
- assert(k->second == "one");
- ++k;
- assert(k->first == 1);
- assert(k->second == "four");
+ s.insert("one");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(1), c.end(), 1, s);
eq = c.equal_range(3);
assert(std::distance(eq.first, eq.second) == 1);
k = eq.first;
#include <unordered_map>
#include <string>
+#include <set>
#include <cassert>
#include <cstddef>
+#include "../../../check_consecutive.h"
#include "test_iterators.h"
#include "min_allocator.h"
typedef std::pair<C::iterator, C::iterator> Eq;
Eq eq = c.equal_range(1);
assert(std::distance(eq.first, eq.second) == 2);
- C::iterator k = eq.first;
- assert(k->first == 1);
- assert(k->second == "one");
- ++k;
- assert(k->first == 1);
- assert(k->second == "four");
+ std::multiset<std::string> s;
+ s.insert("one");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(1), c.end(), 1, s);
eq = c.equal_range(2);
assert(std::distance(eq.first, eq.second) == 2);
- k = eq.first;
- assert(k->first == 2);
- assert(k->second == "two");
- ++k;
- assert(k->first == 2);
- assert(k->second == "four");
+ s.insert("two");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(2), c.end(), 2, s);
eq = c.equal_range(3);
assert(std::distance(eq.first, eq.second) == 1);
- k = eq.first;
+ C::iterator k = eq.first;
assert(k->first == 3);
assert(k->second == "three");
eq = c.equal_range(4);
typedef std::pair<C::iterator, C::iterator> Eq;
Eq eq = c.equal_range(1);
assert(std::distance(eq.first, eq.second) == 2);
- C::iterator k = eq.first;
- assert(k->first == 1);
- assert(k->second == "one");
- ++k;
- assert(k->first == 1);
- assert(k->second == "four");
+ std::multiset<std::string> s;
+ s.insert("one");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(1), c.end(), 1, s);
eq = c.equal_range(2);
assert(std::distance(eq.first, eq.second) == 2);
- k = eq.first;
- assert(k->first == 2);
- assert(k->second == "two");
- ++k;
- assert(k->first == 2);
- assert(k->second == "four");
+ s.insert("two");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(2), c.end(), 2, s);
eq = c.equal_range(3);
assert(std::distance(eq.first, eq.second) == 1);
- k = eq.first;
+ C::iterator k = eq.first;
assert(k->first == 3);
assert(k->second == "three");
eq = c.equal_range(4);
#include <unordered_map>
#include <string>
+#include <set>
#include <cassert>
#include <cstddef>
+#include "../../../check_consecutive.h"
#include "test_iterators.h"
#include "min_allocator.h"
typedef std::pair<C::iterator, C::iterator> Eq;
Eq eq = c.equal_range(1);
assert(std::distance(eq.first, eq.second) == 2);
- C::iterator k = eq.first;
- assert(k->first == 1);
- assert(k->second == "one");
- ++k;
- assert(k->first == 1);
- assert(k->second == "four");
+ std::multiset<std::string> s;
+ s.insert("one");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(1), c.end(), 1, s);
eq = c.equal_range(2);
assert(std::distance(eq.first, eq.second) == 2);
- k = eq.first;
- assert(k->first == 2);
- assert(k->second == "two");
- ++k;
- assert(k->first == 2);
- assert(k->second == "four");
+ s.insert("two");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(2), c.end(), 2, s);
eq = c.equal_range(3);
assert(std::distance(eq.first, eq.second) == 1);
- k = eq.first;
+ C::iterator k = eq.first;
assert(k->first == 3);
assert(k->second == "three");
eq = c.equal_range(4);
typedef std::pair<C::iterator, C::iterator> Eq;
Eq eq = c.equal_range(1);
assert(std::distance(eq.first, eq.second) == 2);
- C::iterator k = eq.first;
- assert(k->first == 1);
- assert(k->second == "one");
- ++k;
- assert(k->first == 1);
- assert(k->second == "four");
+ std::multiset<std::string> s;
+ s.insert("one");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(1), c.end(), 1, s);
eq = c.equal_range(2);
assert(std::distance(eq.first, eq.second) == 2);
- k = eq.first;
- assert(k->first == 2);
- assert(k->second == "two");
- ++k;
- assert(k->first == 2);
- assert(k->second == "four");
+ s.insert("two");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c.find(2), c.end(), 2, s);
eq = c.equal_range(3);
assert(std::distance(eq.first, eq.second) == 1);
- k = eq.first;
+ C::iterator k = eq.first;
assert(k->first == 3);
assert(k->second == "three");
eq = c.equal_range(4);
#include <unordered_map>
#include <string>
+#include <set>
#include <cassert>
#include <cstddef>
#include "test_macros.h"
+#include "../../../check_consecutive.h"
#include "../../../test_compare.h"
#include "../../../test_hash.h"
#include "test_allocator.h"
assert(c2.bucket_count() >= 6);
assert(c2.size() == 6);
- assert(c2.find(1)->second == "one");
- assert(next(c2.find(1))->second == "four");
- assert(c2.find(2)->second == "two");
- assert(next(c2.find(2))->second == "four");
+ std::multiset<std::string> s;
+ s.insert("one");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c2.find(1), c2.end(), 1, s);
+ s.insert("two");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c2.find(2), c2.end(), 2, s);
assert(c2.find(3)->second == "three");
assert(c2.find(4)->second == "four");
assert(c2.hash_function() == Hash(1));
assert(c2.bucket_count() >= 6);
assert(c2.size() == 6);
- assert(c2.find(1)->second == "one");
- assert(next(c2.find(1))->second == "four");
- assert(c2.find(2)->second == "two");
- assert(next(c2.find(2))->second == "four");
+ std::multiset<std::string> s;
+ s.insert("one");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c2.find(1), c2.end(), 1, s);
+ s.insert("two");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c2.find(2), c2.end(), 2, s);
assert(c2.find(3)->second == "three");
assert(c2.find(4)->second == "four");
assert(c2.hash_function() == Hash(1));
assert(c2.bucket_count() >= 6);
assert(c2.size() == 6);
- assert(c2.find(1)->second == "one");
- assert(next(c2.find(1))->second == "four");
- assert(c2.find(2)->second == "two");
- assert(next(c2.find(2))->second == "four");
+ std::multiset<std::string> s;
+ s.insert("one");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c2.find(1), c2.end(), 1, s);
+ s.insert("two");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c2.find(2), c2.end(), 2, s);
assert(c2.find(3)->second == "three");
assert(c2.find(4)->second == "four");
assert(c2.hash_function() == Hash(1));
assert(c2.bucket_count() >= 6);
assert(c2.size() == 6);
- assert(c2.find(1)->second == "one");
- assert(next(c2.find(1))->second == "four");
- assert(c2.find(2)->second == "two");
- assert(next(c2.find(2))->second == "four");
+ std::multiset<std::string> s;
+ s.insert("one");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c2.find(1), c2.end(), 1, s);
+ s.insert("two");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c2.find(2), c2.end(), 2, s);
assert(c2.find(3)->second == "three");
assert(c2.find(4)->second == "four");
assert(c2.hash_function() == Hash(1));
assert(c2.bucket_count() >= 6);
assert(c2.size() == 6);
- assert(c2.find(1)->second == "one");
- assert(next(c2.find(1))->second == "four");
- assert(c2.find(2)->second == "two");
- assert(next(c2.find(2))->second == "four");
+ std::multiset<std::string> s;
+ s.insert("one");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c2.find(1), c2.end(), 1, s);
+ s.insert("two");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c2.find(2), c2.end(), 2, s);
assert(c2.find(3)->second == "three");
assert(c2.find(4)->second == "four");
assert(c2.hash_function() == Hash(1));
assert(c2.bucket_count() >= 6);
assert(c2.size() == 6);
- assert(c2.find(1)->second == "one");
- assert(next(c2.find(1))->second == "four");
- assert(c2.find(2)->second == "two");
- assert(next(c2.find(2))->second == "four");
+ std::multiset<std::string> s;
+ s.insert("one");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c2.find(1), c2.end(), 1, s);
+ s.insert("two");
+ s.insert("four");
+ CheckConsecutiveKeys<C::const_iterator>(c2.find(2), c2.end(), 2, s);
assert(c2.find(3)->second == "three");
assert(c2.find(4)->second == "four");
assert(c2.hash_function() == Hash(1));