diff options
author | earthdok@chromium.org <earthdok@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-01-23 18:17:15 +0000 |
---|---|---|
committer | earthdok@chromium.org <earthdok@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-01-23 18:17:15 +0000 |
commit | 9cd93726ec13d1c09a94cdba0cd6f2025a30c44d (patch) | |
tree | 6614c894c28a5972319585b517cb5c042e5193fb /base/containers | |
parent | fb5dead7e644df782b1e63e97fa532940d1cc7bb (diff) | |
download | chromium_src-9cd93726ec13d1c09a94cdba0cd6f2025a30c44d.zip chromium_src-9cd93726ec13d1c09a94cdba0cd6f2025a30c44d.tar.gz chromium_src-9cd93726ec13d1c09a94cdba0cd6f2025a30c44d.tar.bz2 |
Fix incorrect assumption in IDMap and SmallMap tests.
Some of the tests assumed that base::hash_map is ordered, which it is not. They
worked under libstdc++, but broke in libc++ builds.
BUG=327334
R=thakis@chromium.org, brettw@chromium.org
TEST=base_unittests
Review URL: https://codereview.chromium.org/130783003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@246644 0039d316-1c4b-4281-b951-d872f2087c98
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) { |