diff options
Diffstat (limited to 'base/containers')
-rw-r--r-- | base/containers/small_map_unittest.cc | 25 |
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) { |