Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1349)

Unified Diff: test/codegen/corelib/string_from_list_test.dart

Issue 1945153002: Add corelib tests (Closed) Base URL: https://github.com/dart-lang/dev_compiler@master
Patch Set: error_test and range_error_test now pass Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: test/codegen/corelib/string_from_list_test.dart
diff --git a/test/codegen/corelib/string_from_list_test.dart b/test/codegen/corelib/string_from_list_test.dart
new file mode 100644
index 0000000000000000000000000000000000000000..de6b1f739f2f1b690a79d8e66be9d67324833044
--- /dev/null
+++ b/test/codegen/corelib/string_from_list_test.dart
@@ -0,0 +1,87 @@
+// 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.
+
+import "package:expect/expect.dart";
+
+void main() {
+ Expect.equals("", new String.fromCharCodes(new List(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);
+ }
+
+
+ // Should work with iterables and non-default-lists (http://dartbug.com/8922)
+ Expect.equals("CBA", new String.fromCharCodes([65, 66, 67].reversed));
+ Expect.equals("BCD",
+ new String.fromCharCodes([65, 66, 67].map((x) => x + 1)));
+ Expect.equals("AC",
+ new String.fromCharCodes([0x41, 0x42, 0x43].where(
+ (x) => x.isOdd)));
+ Expect.equals("CE",
+ new String.fromCharCodes(
+ [0x41, 0x42, 0x43].where((x) => x.isOdd)
+ .map((x) => x + 2)));
+ Expect.equals("ABC", new String.fromCharCodes(
+ new Iterable.generate(3, (x) => 65 + x)));
+ Expect.equals("ABC", new String.fromCharCodes("ABC".codeUnits));
+ Expect.equals("BCD",
+ new String.fromCharCodes("ABC".codeUnits.map((x) => x + 1)));
+ Expect.equals("BCD",
+ new String.fromCharCodes("ABC".runes.map((x) => x + 1)));
+
+ var nonBmpCharCodes = [0, 0xD812, 0xDC34, 0x14834, 0xDC34, 0xD812];
+ var nonBmp = new String.fromCharCodes(nonBmpCharCodes);
+ Expect.equals(7, nonBmp.length);
+ Expect.equals(0, nonBmp.codeUnitAt(0));
+ Expect.equals(0xD812, nonBmp.codeUnitAt(1)); // Separated surrogate pair
+ Expect.equals(0xDC34, nonBmp.codeUnitAt(2));
+ Expect.equals(0xD812, nonBmp.codeUnitAt(3)); // Single non-BMP code point.
+ Expect.equals(0xDC34, nonBmp.codeUnitAt(4));
+ Expect.equals(0xDC34, nonBmp.codeUnitAt(5)); // Unmatched surrogate.
+ Expect.equals(0xD812, nonBmp.codeUnitAt(6)); // Unmatched surrogate.
+
+ var reversedNonBmp = new String.fromCharCodes(nonBmpCharCodes.reversed);
+ Expect.equals(7, reversedNonBmp.length);
+ Expect.equals(0, reversedNonBmp.codeUnitAt(6));
+ Expect.equals(0xD812, reversedNonBmp.codeUnitAt(5));
+ Expect.equals(0xDC34, reversedNonBmp.codeUnitAt(4));
+ Expect.equals(0xDC34, reversedNonBmp.codeUnitAt(3));
+ Expect.equals(0xD812, reversedNonBmp.codeUnitAt(2));
+ Expect.equals(0xDC34, reversedNonBmp.codeUnitAt(1));
+ Expect.equals(0xD812, reversedNonBmp.codeUnitAt(0));
+
+ Expect.equals(nonBmp, new String.fromCharCodes(nonBmp.codeUnits));
+ Expect.equals(nonBmp, new String.fromCharCodes(nonBmp.runes));
+}
« no previous file with comments | « test/codegen/corelib/string_from_environment_test.dart ('k') | test/codegen/corelib/string_fromcharcode_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698