summaryrefslogtreecommitdiffstats
path: root/libcxx/test/std/containers/check_consecutive.h
diff options
context:
space:
mode:
Diffstat (limited to 'libcxx/test/std/containers/check_consecutive.h')
-rw-r--r--libcxx/test/std/containers/check_consecutive.h46
1 files changed, 46 insertions, 0 deletions
diff --git a/libcxx/test/std/containers/check_consecutive.h b/libcxx/test/std/containers/check_consecutive.h
new file mode 100644
index 00000000000..fdd26adb156
--- /dev/null
+++ b/libcxx/test/std/containers/check_consecutive.h
@@ -0,0 +1,46 @@
+//===----------------------------------------------------------------------===//
+//
+// 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
OpenPOWER on IntegriCloud