blob: 141fc989d0694a29ed09878b082f5033c3a9e623 [file] [log] [blame]
// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
import "dart:mirrors";
import "package:expect/expect.dart";
newLRUMapWithShift(int shift) {
var lib = currentMirrorSystem().libraries[Uri.parse("dart:_internal")];
var cls = lib.declarations[#LRUMap];
return cls.newInstance(#withShift, [shift]).reflectee;
}
main() {
Expect.throws(() => newLRUMapWithShift(0), (e) => e is Exception);
for (int shift = 1; shift < 5; shift++) {
var map = newLRUMapWithShift(shift);
var capacity = (1 << shift) * 3 ~/ 4;
for (int value = 0; value < 100; value++) {
var key = "$value";
map[key] = value;
Expect.equals(value, map[key]);
}
for (int value = 0; value < 100 - capacity - 1; value++) {
var key = "$value";
Expect.equals(null, map[key]);
}
for (int value = 100 - capacity; value < 100; value++) {
var key = "$value";
Expect.equals(value, map[key]);
}
}
}