| Index: runtime/bin/vmservice/observatory/test/string_escaping_test.dart
|
| diff --git a/runtime/bin/vmservice/observatory/test/string_escaping_test.dart b/runtime/bin/vmservice/observatory/test/string_escaping_test.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..cf581b7d101cab2ed24b4a930ac38369aea4f462
|
| --- /dev/null
|
| +++ b/runtime/bin/vmservice/observatory/test/string_escaping_test.dart
|
| @@ -0,0 +1,81 @@
|
| +// Copyright (c) 2014, 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.
|
| +
|
| +library string_escaping_test;
|
| +
|
| +import 'dart:async';
|
| +import 'dart:mirrors';
|
| +import 'package:observatory/service_io.dart';
|
| +import 'package:unittest/unittest.dart';
|
| +import 'test_helper.dart';
|
| +
|
| +var ascii;
|
| +var latin1;
|
| +var unicode;
|
| +var hebrew;
|
| +var singleQuotes;
|
| +var doubleQuotes;
|
| +var newLines;
|
| +var tabs;
|
| +var suggrogatePairs;
|
| +var nullInTheMiddle;
|
| +var escapedUnicodeEscape;
|
| +var longStringEven;
|
| +var longStringOdd;
|
| +
|
| +void script() {
|
| + ascii = "Hello, World!";
|
| + latin1 = "blåbærgrød";
|
| + unicode = "Îñţérñåţîöñåļîžåţîờñ";
|
| + hebrew = "שלום רב שובך צפורה נחמדת"; // Right-to-left text.
|
| + singleQuotes = "'One,' he said.";
|
| + doubleQuotes = '"Two," he said.';
|
| + newLines = "Windows\r\nSmalltalk\rUnix\n";
|
| + tabs = "One\tTwo\tThree";
|
| + suggrogatePairs = "1𝄞2𝄞𝄞3𝄞𝄞𝄞";
|
| + nullInTheMiddle = "There are four\u0000 words.";
|
| + escapedUnicodeEscape = "Should not be A: \\u0041";
|
| +
|
| + // A surrogate pair will cross the preferred truncation boundry.
|
| + longStringEven = "..";
|
| + for (int i = 0; i < 512; i++) longStringEven += "𝄞";
|
| + longStringOdd = ".";
|
| + for (int i = 0; i < 512; i++) longStringOdd += "𝄞";
|
| +}
|
| +
|
| +var tests = [
|
| +
|
| +(Isolate isolate) =>
|
| + isolate.rootLib.load().then((Library lib) {
|
| + expectFullString(String varName, String varValueAsString) {
|
| + ServiceMap field = lib.variables.singleWhere((v) => v.name == varName);
|
| + Instance value = field['value'];
|
| + expect(value.valueAsString, equals(varValueAsString));
|
| + expect(value.valueAsStringIsTruncated, isFalse);
|
| + }
|
| + expectTruncatedString(String varName, String varValueAsString) {
|
| + ServiceMap field = lib.variables.singleWhere((v) => v.name == varName);
|
| + Instance value = field['value'];
|
| + expect(varValueAsString, startsWith(value.valueAsString));
|
| + expect(value.valueAsStringIsTruncated, isTrue);
|
| + }
|
| +
|
| + script(); // Need to initialize variables in the testing isolate.
|
| + expectFullString('ascii', ascii);
|
| + expectFullString('latin1', latin1);
|
| + expectFullString('unicode', unicode);
|
| + expectFullString('hebrew', hebrew);
|
| + expectFullString('singleQuotes', singleQuotes);
|
| + expectFullString('doubleQuotes', doubleQuotes);
|
| + expectFullString('newLines', newLines);
|
| + expectFullString('tabs', tabs);
|
| + expectFullString('suggrogatePairs', suggrogatePairs);
|
| + expectFullString('nullInTheMiddle', nullInTheMiddle); /// 01: ok
|
| + expectTruncatedString('longStringEven', longStringEven);
|
| + expectTruncatedString('longStringOdd', longStringOdd);
|
| + }),
|
| +
|
| +];
|
| +
|
| +main(args) => runIsolateTests(args, tests, testeeBefore: script);
|
|
|