summaryrefslogtreecommitdiffstats
path: root/base/containers
diff options
context:
space:
mode:
authorearthdok@chromium.org <earthdok@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-01-23 18:17:15 +0000
committerearthdok@chromium.org <earthdok@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-01-23 18:17:15 +0000
commit9cd93726ec13d1c09a94cdba0cd6f2025a30c44d (patch)
tree6614c894c28a5972319585b517cb5c042e5193fb /base/containers
parentfb5dead7e644df782b1e63e97fa532940d1cc7bb (diff)
downloadchromium_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.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) {