Chromium Code Reviews| 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. |