blob: 99642a1c8c9cdc13dbff0bee22cf4308030ef8fa [file] [log] [blame]
// Copyright (c) 2011, 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.
class StringFromListTest {
static testMain() {
Expect.equals("", new String.fromCharCodes(new List.fixedLength(0)));
Expect.equals("", new String.fromCharCodes([]));
Expect.equals("", new String.fromCharCodes(const []));
Expect.equals("AB", new String.fromCharCodes([65, 66]));
Expect.equals("AB", new String.fromCharCodes(const [65, 66]));
Expect.equals("Ærø", new String.fromCharCodes(const [0xc6, 0x72, 0xf8]));
Expect.equals("\u{1234}", new String.fromCharCodes([0x1234]));
Expect.equals("\u{12345}*", new String.fromCharCodes([0x12345, 42]));
Expect.equals("", new String.fromCharCodes(new List()));
{
var a = new List();
a.add(65);
a.add(66);
Expect.equals("AB", new String.fromCharCodes(a));
}
// Long list (bug 6919).
for (int len in [499, 500, 501, 999, 100000]) {
List<int> list = new List(len);
for (int i = 0; i < len; i++) {
list[i] = 65 + (i % 26);
}
for (int i = len - 9; i < len; i++) {
list[i] = 48 + (len - i);
}
// We should not throw a stack overflow here.
String long = new String.fromCharCodes(list);
// Minimal sanity checking on the string.
Expect.isTrue(long.startsWith('ABCDE'));
Expect.isTrue(long.endsWith('987654321'));
int middle = len ~/ 2;
middle -= middle % 26;
Expect.equals('XYZABC', long.substring(middle - 3, middle + 3));
Expect.equals(len, long.length);
}
}
}
main() {
StringFromListTest.testMain();
}