// 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"); }