|
@@ -16,9 +16,11 @@
|
|
|
|
|
|
#include <unordered_map>
|
|
#include <unordered_map>
|
|
#include <string>
|
|
#include <string>
|
|
|
|
+#include <set>
|
|
#include <cassert>
|
|
#include <cassert>
|
|
#include <cstddef>
|
|
#include <cstddef>
|
|
|
|
|
|
|
|
+#include "../../../check_consecutive.h"
|
|
#include "min_allocator.h"
|
|
#include "min_allocator.h"
|
|
|
|
|
|
#if TEST_STD_VER >= 11
|
|
#if TEST_STD_VER >= 11
|
|
@@ -57,23 +59,18 @@ int main(int, char**)
|
|
typedef std::pair<C::const_iterator, C::const_iterator> Eq;
|
|
typedef std::pair<C::const_iterator, C::const_iterator> Eq;
|
|
Eq eq = c.equal_range(1);
|
|
Eq eq = c.equal_range(1);
|
|
assert(std::distance(eq.first, eq.second) == 2);
|
|
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);
|
|
eq = c.equal_range(2);
|
|
assert(std::distance(eq.first, eq.second) == 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);
|
|
eq = c.equal_range(3);
|
|
assert(std::distance(eq.first, eq.second) == 1);
|
|
assert(std::distance(eq.first, eq.second) == 1);
|
|
- k = eq.first;
|
|
|
|
|
|
+ C::const_iterator k = eq.first;
|
|
assert(k->first == 3);
|
|
assert(k->first == 3);
|
|
assert(k->second == "three");
|
|
assert(k->second == "three");
|
|
eq = c.equal_range(4);
|
|
eq = c.equal_range(4);
|
|
@@ -88,12 +85,9 @@ int main(int, char**)
|
|
assert(c.size() == 4);
|
|
assert(c.size() == 4);
|
|
eq = c.equal_range(1);
|
|
eq = c.equal_range(1);
|
|
assert(std::distance(eq.first, eq.second) == 2);
|
|
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);
|
|
eq = c.equal_range(3);
|
|
assert(std::distance(eq.first, eq.second) == 1);
|
|
assert(std::distance(eq.first, eq.second) == 1);
|
|
k = eq.first;
|
|
k = eq.first;
|
|
@@ -111,12 +105,9 @@ int main(int, char**)
|
|
assert(c.size() == 4);
|
|
assert(c.size() == 4);
|
|
eq = c.equal_range(1);
|
|
eq = c.equal_range(1);
|
|
assert(std::distance(eq.first, eq.second) == 2);
|
|
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);
|
|
eq = c.equal_range(3);
|
|
assert(std::distance(eq.first, eq.second) == 1);
|
|
assert(std::distance(eq.first, eq.second) == 1);
|
|
k = eq.first;
|
|
k = eq.first;
|
|
@@ -134,12 +125,9 @@ int main(int, char**)
|
|
assert(c.size() == 3);
|
|
assert(c.size() == 3);
|
|
eq = c.equal_range(1);
|
|
eq = c.equal_range(1);
|
|
assert(std::distance(eq.first, eq.second) == 2);
|
|
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);
|
|
eq = c.equal_range(3);
|
|
assert(std::distance(eq.first, eq.second) == 1);
|
|
assert(std::distance(eq.first, eq.second) == 1);
|
|
k = eq.first;
|
|
k = eq.first;
|
|
@@ -152,12 +140,9 @@ int main(int, char**)
|
|
assert(c.size() == 3);
|
|
assert(c.size() == 3);
|
|
eq = c.equal_range(1);
|
|
eq = c.equal_range(1);
|
|
assert(std::distance(eq.first, eq.second) == 2);
|
|
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);
|
|
eq = c.equal_range(3);
|
|
assert(std::distance(eq.first, eq.second) == 1);
|
|
assert(std::distance(eq.first, eq.second) == 1);
|
|
k = eq.first;
|
|
k = eq.first;
|
|
@@ -220,23 +205,18 @@ int main(int, char**)
|
|
typedef std::pair<C::const_iterator, C::const_iterator> Eq;
|
|
typedef std::pair<C::const_iterator, C::const_iterator> Eq;
|
|
Eq eq = c.equal_range(1);
|
|
Eq eq = c.equal_range(1);
|
|
assert(std::distance(eq.first, eq.second) == 2);
|
|
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);
|
|
eq = c.equal_range(2);
|
|
assert(std::distance(eq.first, eq.second) == 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);
|
|
eq = c.equal_range(3);
|
|
assert(std::distance(eq.first, eq.second) == 1);
|
|
assert(std::distance(eq.first, eq.second) == 1);
|
|
- k = eq.first;
|
|
|
|
|
|
+ C::const_iterator k = eq.first;
|
|
assert(k->first == 3);
|
|
assert(k->first == 3);
|
|
assert(k->second == "three");
|
|
assert(k->second == "three");
|
|
eq = c.equal_range(4);
|
|
eq = c.equal_range(4);
|
|
@@ -251,12 +231,9 @@ int main(int, char**)
|
|
assert(c.size() == 4);
|
|
assert(c.size() == 4);
|
|
eq = c.equal_range(1);
|
|
eq = c.equal_range(1);
|
|
assert(std::distance(eq.first, eq.second) == 2);
|
|
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);
|
|
eq = c.equal_range(3);
|
|
assert(std::distance(eq.first, eq.second) == 1);
|
|
assert(std::distance(eq.first, eq.second) == 1);
|
|
k = eq.first;
|
|
k = eq.first;
|
|
@@ -274,12 +251,9 @@ int main(int, char**)
|
|
assert(c.size() == 4);
|
|
assert(c.size() == 4);
|
|
eq = c.equal_range(1);
|
|
eq = c.equal_range(1);
|
|
assert(std::distance(eq.first, eq.second) == 2);
|
|
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);
|
|
eq = c.equal_range(3);
|
|
assert(std::distance(eq.first, eq.second) == 1);
|
|
assert(std::distance(eq.first, eq.second) == 1);
|
|
k = eq.first;
|
|
k = eq.first;
|
|
@@ -297,12 +271,9 @@ int main(int, char**)
|
|
assert(c.size() == 3);
|
|
assert(c.size() == 3);
|
|
eq = c.equal_range(1);
|
|
eq = c.equal_range(1);
|
|
assert(std::distance(eq.first, eq.second) == 2);
|
|
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);
|
|
eq = c.equal_range(3);
|
|
assert(std::distance(eq.first, eq.second) == 1);
|
|
assert(std::distance(eq.first, eq.second) == 1);
|
|
k = eq.first;
|
|
k = eq.first;
|
|
@@ -315,12 +286,9 @@ int main(int, char**)
|
|
assert(c.size() == 3);
|
|
assert(c.size() == 3);
|
|
eq = c.equal_range(1);
|
|
eq = c.equal_range(1);
|
|
assert(std::distance(eq.first, eq.second) == 2);
|
|
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);
|
|
eq = c.equal_range(3);
|
|
assert(std::distance(eq.first, eq.second) == 1);
|
|
assert(std::distance(eq.first, eq.second) == 1);
|
|
k = eq.first;
|
|
k = eq.first;
|