OLD | NEW |
(Empty) | |
| 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 |
| 3 // BSD-style license that can be found in the LICENSE file. |
| 4 |
| 5 import "dart:mirrors"; |
| 6 import "package:expect/expect.dart"; |
| 7 |
| 8 newLRUMapWithShift(int shift) { |
| 9 var lib = currentMirrorSystem().libraries[Uri.parse("dart:_internal")]; |
| 10 var cls = lib.declarations[#LRUMap]; |
| 11 return cls.newInstance(#withShift, [shift]).reflectee; |
| 12 } |
| 13 |
| 14 main() { |
| 15 Expect.throws(() => newLRUMapWithShift(0), (e) => e is Exception); |
| 16 |
| 17 for (int shift = 1; shift < 5; shift++) { |
| 18 var map = newLRUMapWithShift(shift); |
| 19 var capacity = (1 << shift) * 3 ~/ 4; |
| 20 for (int value = 0; value < 100; value++) { |
| 21 var key = "$value"; |
| 22 map[key] = value; |
| 23 Expect.equals(value, map[key]); |
| 24 } |
| 25 for (int value = 0; value < 100 - capacity - 1; value++) { |
| 26 var key = "$value"; |
| 27 Expect.equals(null, map[key]); |
| 28 } |
| 29 for (int value = 100 - capacity; value < 100; value++) { |
| 30 var key = "$value"; |
| 31 Expect.equals(value, map[key]); |
| 32 } |
| 33 } |
| 34 } |
OLD | NEW |