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