blob: b3c13aed0bc4d24a81b554a4ddddf51f2cc12b3f [file] [log] [blame]
// Copyright (c) 2016, 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";
main() {
var expect = new String.fromCharCodes([
0,
0x0a,
0x0d,
0x7f,
0xff,
0xffff,
0xd800,
0xdc00,
0xdbff,
0xdfff,
]);
test(string) {
Expect.equals(expect, string);
}
// Plain escapes of code points.
test("\x00\x0a\x0d\x7f\xff\uffff\u{10000}\u{10ffff}");
test("""\x00\x0a\x0d\x7f\xff\uffff\u{10000}\u{10ffff}""");
test('\x00\x0a\x0d\x7f\xff\uffff\u{10000}\u{10ffff}');
test('''\x00\x0a\x0d\x7f\xff\uffff\u{10000}\u{10ffff}''');
// Plain escapes of individual code units.
test("\x00\x0a\x0d\x7f\xff\uffff\ud800\udc00\udbff\udfff");
test("""\x00\x0a\x0d\x7f\xff\uffff\ud800\udc00\udbff\udfff""");
test('\x00\x0a\x0d\x7f\xff\uffff\ud800\udc00\udbff\udfff');
test('''\x00\x0a\x0d\x7f\xff\uffff\ud800\udc00\udbff\udfff''');
// Insert newline into multiline string.
test("""\x00
\x0d\x7f\xff\uffff\ud800\udc00\udbff\udfff""");
test('''\x00
\x0d\x7f\xff\uffff\ud800\udc00\udbff\udfff''');
// Extract code points from multi-character escape string.
test(
"\x00\x0a\x0d\x7f\xff\uffff"
"${"\u{10000}"[0]}${"\u{10000}"[1]}"
"${"\u{10FFFF}"[0]}${"\u{10FFFF}"[1]}",
);
test("\x00\x0a\x0d\x7f\xff\uffff" + "\ud800" + "\udc00\udbff" + "\udfff");
// Single line string over multiple lines with newlines inside interpolation.
test("\x00\x0a\x0d\x7f\xff${""}\uffff\ud800\udc00\udbff\udfff");
}