Index: runtime/observatory/tests/service/developer_extension_test.dart |
diff --git a/runtime/observatory/tests/service/developer_extension_test.dart b/runtime/observatory/tests/service/developer_extension_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..2c04f04093b3a03117462be2890e1a37e174d796 |
--- /dev/null |
+++ b/runtime/observatory/tests/service/developer_extension_test.dart |
@@ -0,0 +1,53 @@ |
+// Copyright (c) 2015, 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. |
+// VMOptions=--compile_all --error_on_bad_type --error_on_bad_override |
+ |
+import 'dart:convert'; |
+import 'dart:developer'; |
+import 'package:observatory/service_io.dart'; |
+import 'package:observatory/cpu_profile.dart'; |
+import 'package:unittest/unittest.dart'; |
+ |
+import 'test_helper.dart'; |
+ |
+void Handler(String method, |
+ Map paremeters, |
+ List<String> response) { |
+ assert(response.length == 3); |
+ if (method == '__success') { |
+ response[kResultIndex] = JSON.encode({ |
+ 'type': '_extensionType', |
+ 'method': method, |
+ 'parameters': paremeters, |
+ }); |
+ } else { |
+ response[kErrorCodeIndex] = 99; |
+ response[kErrorMessageIndex] = 'extension error'; |
+ } |
+} |
+ |
+void test() { |
+ registerExtension('__error', Handler); |
+ registerExtension('__success', Handler); |
+} |
+ |
+var tests = [ |
+ // Initial. |
+ (Isolate isolate) async { |
+ try { |
+ await isolate.invokeRpcNoUpgrade('__error', {}); |
+ } on ServerRpcException catch (e, st) { |
+ expect(e.code, equals(99)); |
+ expect(e.message, equals("extension error")); |
+ } |
+ var result = await isolate.invokeRpcNoUpgrade('__success', |
+ {'apple': 'banana'}); |
+ expect(result['type'], equals('_extensionType')); |
+ expect(result['method'], equals('__success')); |
+ expect(result['parameters']['isolateId'], isNotNull); |
+ expect(result['parameters']['apple'], equals('banana')); |
+ }, |
+]; |
+ |
+main(args) async => runIsolateTests(args, tests, testeeBefore:test); |