summaryrefslogtreecommitdiffstats
path: root/llvm/unittests/ADT/SmallMapTest.cpp
diff options
context:
space:
mode:
authorStepan Dyatkovskiy <stpworld@narod.ru>2012-04-26 18:45:24 +0000
committerStepan Dyatkovskiy <stpworld@narod.ru>2012-04-26 18:45:24 +0000
commit3ee22ba6ca7e4013ab908624dd8a3f19cb55b45d (patch)
treec74ffbe85761a3ba019e586d16d8e9589ab0c519 /llvm/unittests/ADT/SmallMapTest.cpp
parent0334d3300d3f43e0b7988c16343279997ae3113f (diff)
downloadbcm5719-llvm-3ee22ba6ca7e4013ab908624dd8a3f19cb55b45d.tar.gz
bcm5719-llvm-3ee22ba6ca7e4013ab908624dd8a3f19cb55b45d.zip
Fixed SmallMap test. The order of items is undefined in DenseMap. So being checking the increment for big mode, we can only check that all items are in map.
llvm-svn: 155651
Diffstat (limited to 'llvm/unittests/ADT/SmallMapTest.cpp')
-rw-r--r--llvm/unittests/ADT/SmallMapTest.cpp34
1 files changed, 24 insertions, 10 deletions
diff --git a/llvm/unittests/ADT/SmallMapTest.cpp b/llvm/unittests/ADT/SmallMapTest.cpp
index 91319dede22..b2079243fd5 100644
--- a/llvm/unittests/ADT/SmallMapTest.cpp
+++ b/llvm/unittests/ADT/SmallMapTest.cpp
@@ -45,11 +45,6 @@ TEST(SmallMapTest, GeneralTest) {
found = a.find(&buf[8]);
EXPECT_EQ(found, a.end());
- // Check increment for small mode.
- found = a.begin();
- ++found;
- EXPECT_EQ(found->second, 10);
-
b.insert(std::make_pair(&buf[2], 2));
std::swap(a, b);
@@ -82,11 +77,6 @@ TEST(SmallMapTest, GeneralTest) {
found = b.find(&buf[8]);
EXPECT_EQ(found, b.end());
- // Check increment for big mode.
- found = b.find(&buf[1]);
- ++found;
- EXPECT_EQ(found->second, 14);
-
std::swap(a, b);
a.swap(b);
std::swap(a, b);
@@ -130,4 +120,28 @@ TEST(SmallMapTest, GeneralTest) {
SmallMap<int *, int, 3>::value_type Buf7;
Buf7 = a.FindAndConstruct(&buf[7]);
EXPECT_EQ(Buf7.second, 0);
+
+ // Check increments
+
+ SmallMap<int *, int, 2> c;
+ c.insert(std::make_pair(&buf[0], 0));
+ c.insert(std::make_pair(&buf[1], 1));
+
+ // For small mode we know that flat array map is used and we know the
+ // order of items.
+ unsigned ii = 0;
+ for (SmallMap<int *, int, 2>::iterator i = c.begin(), e = c.end();
+ i != e; ++i, ++ii) {
+ EXPECT_TRUE((i->first == &buf[0] && i->second == 0 && ii == 0) ||
+ (i->first == &buf[1] && i->second == 1 && ii == 1));
+ }
+
+ // For big mode DenseMap is used and final order of items is undefined.
+ c.insert(std::make_pair(&buf[2], 2));
+ for (SmallMap<int *, int, 2>::iterator i = c.begin(), e = c.end();
+ i != e; ++i) {
+ EXPECT_TRUE((i->first == &buf[0] && i->second == 0) ||
+ (i->first == &buf[1] && i->second == 1) ||
+ (i->first == &buf[2] && i->second == 2));
+ }
}
OpenPOWER on IntegriCloud