Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(143)

Unified Diff: runtime/vm/hash_map_test.cc

Issue 2083103002: Remove some uses of STL map. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « runtime/vm/hash_map.h ('k') | runtime/vm/hash_table.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/hash_map_test.cc
diff --git a/runtime/vm/hash_map_test.cc b/runtime/vm/hash_map_test.cc
index 522ff7c57ddc18d740f9dc733197631ba127b5d2..7830b85bcb6aa28c6b9346bceb8799cfb04e9e24 100644
--- a/runtime/vm/hash_map_test.cc
+++ b/runtime/vm/hash_map_test.cc
@@ -25,15 +25,94 @@ TEST_CASE(DirectChainedHashMap) {
TestValue v2(1);
TestValue v3(0);
map.Insert(&v1);
- EXPECT(map.Lookup(&v1) == &v1);
+ EXPECT(map.LookupValue(&v1) == &v1);
map.Insert(&v2);
- EXPECT(map.Lookup(&v1) == &v1);
- EXPECT(map.Lookup(&v2) == &v2);
- EXPECT(map.Lookup(&v3) == &v1);
+ EXPECT(map.LookupValue(&v1) == &v1);
+ EXPECT(map.LookupValue(&v2) == &v2);
+ EXPECT(map.LookupValue(&v3) == &v1);
DirectChainedHashMap<PointerKeyValueTrait<TestValue> > map2(map);
- EXPECT(map2.Lookup(&v1) == &v1);
- EXPECT(map2.Lookup(&v2) == &v2);
- EXPECT(map2.Lookup(&v3) == &v1);
+ EXPECT(map2.LookupValue(&v1) == &v1);
+ EXPECT(map2.LookupValue(&v2) == &v2);
+ EXPECT(map2.LookupValue(&v3) == &v1);
+}
+
+
+TEST_CASE(MallocDirectChainedHashMap) {
+ MallocDirectChainedHashMap<PointerKeyValueTrait<TestValue> > map;
+ EXPECT(map.IsEmpty());
+ TestValue v1(0);
+ TestValue v2(1);
+ TestValue v3(0);
+ map.Insert(&v1);
+ EXPECT(map.LookupValue(&v1) == &v1);
+ map.Insert(&v2);
+ EXPECT(map.LookupValue(&v1) == &v1);
+ EXPECT(map.LookupValue(&v2) == &v2);
+ EXPECT(map.LookupValue(&v3) == &v1);
+ MallocDirectChainedHashMap<PointerKeyValueTrait<TestValue> > map2(map);
+ EXPECT(map2.LookupValue(&v1) == &v1);
+ EXPECT(map2.LookupValue(&v2) == &v2);
+ EXPECT(map2.LookupValue(&v3) == &v1);
+}
+
+
+class IntptrPair {
+ public:
+ IntptrPair() : first_(-1), second_(-1) {}
+ IntptrPair(intptr_t first, intptr_t second)
+ : first_(first), second_(second) {}
+
+ intptr_t first() const { return first_; }
+ intptr_t second() const { return second_; }
+
+ bool operator==(const IntptrPair& other) {
+ return (first_ == other.first_) && (second_ == other.second_);
+ }
+
+ bool operator!=(const IntptrPair& other) {
+ return (first_ != other.first_) || (second_ != other.second_);
+ }
+
+ private:
+ intptr_t first_;
+ intptr_t second_;
+};
+
+
+TEST_CASE(DirectChainedHashMapIterator) {
+ IntptrPair p1(1, 1);
+ IntptrPair p2(2, 2);
+ IntptrPair p3(3, 3);
+ IntptrPair p4(4, 4);
+ IntptrPair p5(5, 5);
+ DirectChainedHashMap<NumbersKeyValueTrait<IntptrPair> > map;
+ EXPECT(map.IsEmpty());
+ DirectChainedHashMap<NumbersKeyValueTrait<IntptrPair> >::Iterator it =
+ map.GetIterator();
+ EXPECT(it.Next() == NULL);
+ it.Reset();
+
+ map.Insert(p1);
+ EXPECT(*it.Next() == p1);
+ it.Reset();
+
+ map.Insert(p2);
+ map.Insert(p3);
+ map.Insert(p4);
+ map.Insert(p5);
+ intptr_t count = 0;
+ intptr_t sum = 0;
+ while (true) {
+ IntptrPair* p = it.Next();
+ if (p == NULL) {
+ break;
+ }
+ count++;
+ sum += p->second();
+ }
+
+ EXPECT(count == 5);
+ EXPECT(sum == 15);
}
} // namespace dart
« no previous file with comments | « runtime/vm/hash_map.h ('k') | runtime/vm/hash_table.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698