Index: test/isolate_test.dart |
diff --git a/test/isolate_test.dart b/test/isolate_test.dart |
index b08bdd9158db4d4326739dbc8fc1e97da022cfe2..545c45ff0e9bc39b4034478892c08477aab86694 100644 |
--- a/test/isolate_test.dart |
+++ b/test/isolate_test.dart |
@@ -375,6 +375,49 @@ void main() { |
expect(breakpoint.number, equals(1)); |
}); |
}); |
+ |
+ group("invokeExtension", () { |
+ test("enforces ext. prefix", () async { |
+ var client = await runAndConnect(); |
+ var isolate = await (await client.getVM()).isolates.first.loadRunnable(); |
+ expect(() => isolate.invokeExtension('noprefix'), throwsArgumentError); |
+ }); |
+ |
+ test("forwards to scope", () async { |
+ var client = await runAndConnect(main: r""" |
+ registerExtension('ext.ping', (_, __) async { |
+ return new ServiceExtensionResponse.result('{"type": "pong"}'); |
+ }); |
+ """); |
+ |
+ var isolate = await (await client.getVM()).isolates.first.loadRunnable(); |
+ Map response = await isolate.invokeExtension('ext.ping'); |
+ expect(response, {'type': 'pong'}); |
+ }); |
+ |
+ test("passes parameters", () async { |
+ var client = await runAndConnect(main: r""" |
+ registerExtension('ext.params', (_, params) async { |
+ return new ServiceExtensionResponse.result('''{ |
+ "type": "params", |
+ "foo": "${params['foo']}", |
+ "baz": "${params['baz']}" |
+ }'''); |
+ }); |
+ """); |
+ |
+ var isolate = await (await client.getVM()).isolates.first.loadRunnable(); |
+ Map response = await isolate.invokeExtension('ext.params', { |
nweiz
2016/02/10 22:17:11
Nit: "var response" (also above).
yjbanov
2016/02/10 23:06:37
Ugh, Flutter code style is getting into me. Done.
|
+ 'foo': 'bar', |
+ 'baz': 1, // VM service string-encodes parameter values |
+ }); |
+ expect(response, { |
+ 'type': 'params', |
+ 'foo': 'bar', |
+ 'baz': '1', |
+ }); |
+ }); |
+ }); |
} |
/// Starts a client with two unpaused empty isolates. |