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

Unified Diff: runtime/bin/vmservice/observatory/test/string_escaping_test.dart

Issue 542363003: Don't double-escape in strings in the VM Service, and don't use \u0000 to determine the string lengt (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 3 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: 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() {
turnidge 2014/09/09 16:12:31 Nice.
+ 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);

Powered by Google App Engine
This is Rietveld 408576698