20faaa5d94
Change-Id: Ib18f554c1076f27a3f7c0df5a36410da41a1f467 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/148784 Reviewed-by: Paul Berry <paulberry@google.com> Reviewed-by: Sigmund Cherem <sigmund@google.com>
66 lines
2.2 KiB
Dart
66 lines
2.2 KiB
Dart
// Copyright (c) 2015, 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.
|
|
|
|
// @dart = 2.7
|
|
|
|
import "package:compiler/src/js_backend/js_backend.dart" show TokenScope;
|
|
|
|
import "package:expect/expect.dart";
|
|
|
|
String forwardN(TokenScope scope, int N) {
|
|
for (int i = 1; i < N; ++i) {
|
|
scope.getNextName();
|
|
}
|
|
|
|
return scope.getNextName();
|
|
}
|
|
|
|
void main() {
|
|
// Test a normal scope.
|
|
TokenScope scope = new TokenScope();
|
|
|
|
// We start with 'a'.
|
|
Expect.equals("a", scope.getNextName());
|
|
// We have 24 lower case characters, as s and g are illegal.
|
|
Expect.equals("A", forwardN(scope, 24));
|
|
// Make it overflow by skipping all uppercase.
|
|
Expect.equals("a_", forwardN(scope, 26));
|
|
// Now numbers.
|
|
Expect.equals("a0", forwardN(scope, 1));
|
|
Expect.equals("a9", forwardN(scope, 9));
|
|
// Then lower case letters.
|
|
Expect.equals("aa", forwardN(scope, 1));
|
|
Expect.equals("az", forwardN(scope, 25));
|
|
// Then upper case letters
|
|
Expect.equals("aA", forwardN(scope, 1));
|
|
Expect.equals("aZ", forwardN(scope, 25));
|
|
// Overflow to first position.
|
|
Expect.equals("b_", forwardN(scope, 1));
|
|
// Make sure we skipe g. We have 1 + 10 + 26 + 26 = 63 digits.
|
|
Expect.equals("h_", forwardN(scope, 63 * 5));
|
|
// Likewise, ensure we skip s.
|
|
Expect.equals("t_", forwardN(scope, 63 * 11));
|
|
// And wrap around another digit.
|
|
Expect.equals("a__", forwardN(scope, 63 * 33));
|
|
|
|
// Test a filtered scope.
|
|
Set<String> illegal = new Set.from(["b", "aa"]);
|
|
scope = new TokenScope(illegal);
|
|
|
|
// We start with 'a'.
|
|
Expect.equals("a", forwardN(scope, 1));
|
|
// Make sure 'b' is skipped.
|
|
Expect.equals("c", forwardN(scope, 1));
|
|
// We have 24 lower case characters, as s and g are illegal.
|
|
Expect.equals("A", forwardN(scope, 22));
|
|
// Make it overflow by skipping all uppercase.
|
|
Expect.equals("a_", forwardN(scope, 26));
|
|
// Now numbers.
|
|
Expect.equals("a0", forwardN(scope, 1));
|
|
Expect.equals("a9", forwardN(scope, 9));
|
|
// Make sure 'aa' is skipped on wrapping
|
|
Expect.equals("ab", forwardN(scope, 1));
|
|
Expect.equals("az", forwardN(scope, 24));
|
|
}
|