summaryrefslogtreecommitdiffstats
path: root/base/containers
diff options
context:
space:
mode:
Diffstat (limited to 'base/containers')
-rw-r--r--base/containers/small_map_unittest.cc25
1 files changed, 8 insertions, 17 deletions
diff --git a/base/containers/small_map_unittest.cc b/base/containers/small_map_unittest.cc
index b911bee6..bc76e37 100644
--- a/base/containers/small_map_unittest.cc
+++ b/base/containers/small_map_unittest.cc
@@ -138,30 +138,21 @@ TEST(SmallMap, CopyConstructor) {
}
template<class inner>
-static void SmallMapToMap(SmallMap<inner> const& src, inner* dest) {
+static bool SmallMapIsSubset(SmallMap<inner> const& a,
+ SmallMap<inner> const& b) {
typename SmallMap<inner>::const_iterator it;
- for (it = src.begin(); it != src.end(); ++it) {
- dest->insert(std::make_pair(it->first, it->second));
+ for (it = a.begin(); it != a.end(); ++it) {
+ typename SmallMap<inner>::const_iterator it_in_b = b.find(it->first);
+ if (it_in_b == b.end() || it_in_b->second != it->second)
+ return false;
}
+ return true;
}
template<class inner>
static bool SmallMapEqual(SmallMap<inner> const& a,
SmallMap<inner> const& b) {
- inner ia, ib;
- SmallMapToMap(a, &ia);
- SmallMapToMap(b, &ib);
-
- // On most systems we can use operator== here, but under some lesser STL
- // implementations it doesn't seem to work. So we manually compare.
- if (ia.size() != ib.size())
- return false;
- for (typename inner::iterator ia_it = ia.begin(), ib_it = ib.begin();
- ia_it != ia.end(); ++ia_it, ++ib_it) {
- if (*ia_it != *ib_it)
- return false;
- }
- return true;
+ return SmallMapIsSubset(a, b) && SmallMapIsSubset(b, a);
}
TEST(SmallMap, AssignmentOperator) {