| OLD | NEW |
| 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, 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 <algorithm> | 5 #include <algorithm> |
| 6 #include <cstring> | 6 #include <cstring> |
| 7 #include <map> | 7 #include <map> |
| 8 #include <set> | 8 #include <set> |
| 9 #include <string> | 9 #include <string> |
| 10 #include <utility> | 10 #include <utility> |
| (...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 238 for (int i = 0; i < 2; ++i) { | 238 for (int i = 0; i < 2; ++i) { |
| 239 for (char ch = 'a'; ch <= 'z'; ++ch) { | 239 for (char ch = 'a'; ch <= 'z'; ++ch) { |
| 240 std::string key('z' - ch + 1, ch); | 240 std::string key('z' - ch + 1, ch); |
| 241 expected.insert(key); | 241 expected.insert(key); |
| 242 bool present = actual.Insert(String::Handle(String::New(key.c_str()))); | 242 bool present = actual.Insert(String::Handle(String::New(key.c_str()))); |
| 243 EXPECT_EQ((i != 0), present); | 243 EXPECT_EQ((i != 0), present); |
| 244 Validate(actual); | 244 Validate(actual); |
| 245 VerifyStringSetsEqual(expected, actual, ordered); | 245 VerifyStringSetsEqual(expected, actual, ordered); |
| 246 } | 246 } |
| 247 } | 247 } |
| 248 // TODO(koda): Delete all entries. | 248 actual.Clear(); |
| 249 EXPECT_EQ(0, actual.NumOccupied()); |
| 249 actual.Release(); | 250 actual.Release(); |
| 250 } | 251 } |
| 251 | 252 |
| 252 | 253 |
| 253 template<typename Map> | 254 template<typename Map> |
| 254 void TestMap(intptr_t initial_capacity, bool ordered) { | 255 void TestMap(intptr_t initial_capacity, bool ordered) { |
| 255 std::map<std::string, int> expected; | 256 std::map<std::string, int> expected; |
| 256 Map actual(HashTables::New<Map>(initial_capacity)); | 257 Map actual(HashTables::New<Map>(initial_capacity)); |
| 257 // Insert the following (strings, int) mapping: | 258 // Insert the following (strings, int) mapping: |
| 258 // aaa...aaa -> 26 | 259 // aaa...aaa -> 26 |
| 259 // bbb..bbb -> 25 | 260 // bbb..bbb -> 25 |
| 260 // ... | 261 // ... |
| 261 // yy -> 2 | 262 // yy -> 2 |
| 262 // z -> 1 | 263 // z -> 1 |
| 263 for (int i = 0; i < 2; ++i) { | 264 for (int i = 0; i < 2; ++i) { |
| 264 for (char ch = 'a'; ch <= 'z'; ++ch) { | 265 for (char ch = 'a'; ch <= 'z'; ++ch) { |
| 265 int length = 'z' - ch + 1; | 266 int length = 'z' - ch + 1; |
| 266 std::string key(length, ch); | 267 std::string key(length, ch); |
| 267 // Map everything to zero initially, then update to their final values. | 268 // Map everything to zero initially, then update to their final values. |
| 268 int value = length * i; | 269 int value = length * i; |
| 269 expected[key] = value; | 270 expected[key] = value; |
| 270 bool present = | 271 bool present = |
| 271 actual.UpdateOrInsert(String::Handle(String::New(key.c_str())), | 272 actual.UpdateOrInsert(String::Handle(String::New(key.c_str())), |
| 272 Smi::Handle(Smi::New(value))); | 273 Smi::Handle(Smi::New(value))); |
| 273 EXPECT_EQ((i != 0), present); | 274 EXPECT_EQ((i != 0), present); |
| 274 Validate(actual); | 275 Validate(actual); |
| 275 VerifyStringMapsEqual(expected, actual, ordered); | 276 VerifyStringMapsEqual(expected, actual, ordered); |
| 276 } | 277 } |
| 277 } | 278 } |
| 278 // TODO(koda): Delete all entries. | 279 actual.Clear(); |
| 280 EXPECT_EQ(0, actual.NumOccupied()); |
| 279 actual.Release(); | 281 actual.Release(); |
| 280 } | 282 } |
| 281 | 283 |
| 282 | 284 |
| 283 TEST_CASE(Sets) { | 285 TEST_CASE(Sets) { |
| 284 for (intptr_t initial_capacity = 0; | 286 for (intptr_t initial_capacity = 0; |
| 285 initial_capacity < 32; | 287 initial_capacity < 32; |
| 286 ++initial_capacity) { | 288 ++initial_capacity) { |
| 287 TestSet<UnorderedHashSet<TestTraits> >(initial_capacity, false); | 289 TestSet<UnorderedHashSet<TestTraits> >(initial_capacity, false); |
| 288 TestSet<EnumIndexHashSet<TestTraits> >(initial_capacity, true); | 290 TestSet<EnumIndexHashSet<TestTraits> >(initial_capacity, true); |
| 289 } | 291 } |
| 290 } | 292 } |
| 291 | 293 |
| 292 | 294 |
| 293 TEST_CASE(Maps) { | 295 TEST_CASE(Maps) { |
| 294 for (intptr_t initial_capacity = 0; | 296 for (intptr_t initial_capacity = 0; |
| 295 initial_capacity < 32; | 297 initial_capacity < 32; |
| 296 ++initial_capacity) { | 298 ++initial_capacity) { |
| 297 TestMap<UnorderedHashMap<TestTraits> >(initial_capacity, false); | 299 TestMap<UnorderedHashMap<TestTraits> >(initial_capacity, false); |
| 298 TestMap<EnumIndexHashMap<TestTraits> >(initial_capacity, true); | 300 TestMap<EnumIndexHashMap<TestTraits> >(initial_capacity, true); |
| 299 } | 301 } |
| 300 } | 302 } |
| 301 | 303 |
| 302 } // namespace dart | 304 } // namespace dart |
| OLD | NEW |