[llvm-commits] [llvm] r155651 - /llvm/trunk/unittests/ADT/SmallMapTest.cpp

Stepan Dyatkovskiy stpworld at narod.ru
Thu Apr 26 11:45:24 PDT 2012


Author: dyatkovskiy
Date: Thu Apr 26 13:45:24 2012
New Revision: 155651

URL: http://llvm.org/viewvc/llvm-project?rev=155651&view=rev
Log:
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.


Modified:
    llvm/trunk/unittests/ADT/SmallMapTest.cpp

Modified: llvm/trunk/unittests/ADT/SmallMapTest.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/ADT/SmallMapTest.cpp?rev=155651&r1=155650&r2=155651&view=diff
==============================================================================
--- llvm/trunk/unittests/ADT/SmallMapTest.cpp (original)
+++ llvm/trunk/unittests/ADT/SmallMapTest.cpp Thu Apr 26 13:45:24 2012
@@ -45,11 +45,6 @@
   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 @@
   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 @@
   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));
+  }
 }





More information about the llvm-commits mailing list