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

Side by Side Diff: runtime/vm/hash_map_test.cc

Issue 2647793005: Revert "Reintroducing MallocHooks changes with fix for infinite loop in MallocHooks on Platform::Ex… (Closed)
Patch Set: Created 3 years, 11 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 unified diff | Download patch
« no previous file with comments | « runtime/vm/hash_map.h ('k') | runtime/vm/malloc_hooks.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 #include "platform/assert.h" 5 #include "platform/assert.h"
6 #include "vm/unit_test.h" 6 #include "vm/unit_test.h"
7 #include "vm/hash_map.h" 7 #include "vm/hash_map.h"
8 8
9 namespace dart { 9 namespace dart {
10 10
(...skipping 13 matching lines...) Expand all
24 EXPECT(map.IsEmpty()); 24 EXPECT(map.IsEmpty());
25 TestValue v1(0); 25 TestValue v1(0);
26 TestValue v2(1); 26 TestValue v2(1);
27 TestValue v3(0); 27 TestValue v3(0);
28 map.Insert(&v1); 28 map.Insert(&v1);
29 EXPECT(map.LookupValue(&v1) == &v1); 29 EXPECT(map.LookupValue(&v1) == &v1);
30 map.Insert(&v2); 30 map.Insert(&v2);
31 EXPECT(map.LookupValue(&v1) == &v1); 31 EXPECT(map.LookupValue(&v1) == &v1);
32 EXPECT(map.LookupValue(&v2) == &v2); 32 EXPECT(map.LookupValue(&v2) == &v2);
33 EXPECT(map.LookupValue(&v3) == &v1); 33 EXPECT(map.LookupValue(&v3) == &v1);
34 EXPECT(map.Remove(&v1));
35 EXPECT(map.Lookup(&v1) == NULL);
36 map.Insert(&v1);
37 DirectChainedHashMap<PointerKeyValueTrait<TestValue> > map2(map); 34 DirectChainedHashMap<PointerKeyValueTrait<TestValue> > map2(map);
38 EXPECT(map2.LookupValue(&v1) == &v1); 35 EXPECT(map2.LookupValue(&v1) == &v1);
39 EXPECT(map2.LookupValue(&v2) == &v2); 36 EXPECT(map2.LookupValue(&v2) == &v2);
40 EXPECT(map2.LookupValue(&v3) == &v1); 37 EXPECT(map2.LookupValue(&v3) == &v1);
41 } 38 }
42 39
43 40
44 TEST_CASE(DirectChainedHashMapInsertRemove) {
45 DirectChainedHashMap<PointerKeyValueTrait<TestValue> > map;
46 EXPECT(map.IsEmpty());
47 TestValue v1(1);
48 TestValue v2(3); // Note: v1, v2, v3 should have the same hash.
49 TestValue v3(5);
50
51 // Start with adding and removing the same element.
52 map.Insert(&v1);
53 EXPECT(map.LookupValue(&v1) == &v1);
54 EXPECT(map.Remove(&v1));
55 EXPECT(map.Lookup(&v1) == NULL);
56
57 // Inserting v2 first should put it at the head of the list.
58 map.Insert(&v2);
59 map.Insert(&v1);
60 EXPECT(map.LookupValue(&v2) == &v2);
61 EXPECT(map.LookupValue(&v1) == &v1);
62
63 // Check to see if removing the head of the list causes issues.
64 EXPECT(map.Remove(&v2));
65 EXPECT(map.Lookup(&v2) == NULL);
66 EXPECT(map.LookupValue(&v1) == &v1);
67
68 // Reinsert v2, which will place it at the back of the hash map list.
69 map.Insert(&v2);
70 EXPECT(map.LookupValue(&v2) == &v2);
71
72 // Remove from the back of the hash map list.
73 EXPECT(map.Remove(&v2));
74 EXPECT(map.Lookup(&v2) == NULL);
75 EXPECT(map.Remove(&v1));
76 EXPECT(map.Lookup(&v1) == NULL);
77
78 // Check to see that removing an invalid element returns false.
79 EXPECT(!map.Remove(&v1));
80
81 // One last case: remove from the middle of a hash map list.
82 map.Insert(&v1);
83 map.Insert(&v2);
84 map.Insert(&v3);
85
86 EXPECT(map.LookupValue(&v1) == &v1);
87 EXPECT(map.LookupValue(&v2) == &v2);
88 EXPECT(map.LookupValue(&v3) == &v3);
89
90 EXPECT(map.Remove(&v2));
91 EXPECT(map.LookupValue(&v1) == &v1);
92 EXPECT(map.Lookup(&v2) == NULL);
93 EXPECT(map.LookupValue(&v3) == &v3);
94
95 EXPECT(map.Remove(&v1));
96 EXPECT(map.Remove(&v3));
97
98 EXPECT(map.IsEmpty());
99 }
100
101
102 TEST_CASE(MallocDirectChainedHashMap) { 41 TEST_CASE(MallocDirectChainedHashMap) {
103 MallocDirectChainedHashMap<PointerKeyValueTrait<TestValue> > map; 42 MallocDirectChainedHashMap<PointerKeyValueTrait<TestValue> > map;
104 EXPECT(map.IsEmpty()); 43 EXPECT(map.IsEmpty());
105 TestValue v1(0); 44 TestValue v1(0);
106 TestValue v2(1); 45 TestValue v2(1);
107 TestValue v3(0); 46 TestValue v3(0);
108 map.Insert(&v1); 47 map.Insert(&v1);
109 EXPECT(map.LookupValue(&v1) == &v1); 48 EXPECT(map.LookupValue(&v1) == &v1);
110 map.Insert(&v2); 49 map.Insert(&v2);
111 EXPECT(map.LookupValue(&v1) == &v1); 50 EXPECT(map.LookupValue(&v1) == &v1);
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
171 } 110 }
172 count++; 111 count++;
173 sum += p->second(); 112 sum += p->second();
174 } 113 }
175 114
176 EXPECT(count == 5); 115 EXPECT(count == 5);
177 EXPECT(sum == 15); 116 EXPECT(sum == 15);
178 } 117 }
179 118
180 } // namespace dart 119 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/hash_map.h ('k') | runtime/vm/malloc_hooks.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698