| #!mojo mojo:dart_content_handler |
| import 'dart:async'; |
| |
| import 'package:mojo/core.dart' show MojoHandle; |
| import 'package:test/test.dart'; |
| |
| import 'package:ether/echo_client.dart' show EchoClient; |
| import 'package:ether/initialized_application.dart' show InitializedApplication; |
| |
| main(List args) async { |
| InitializedApplication app = new InitializedApplication.fromHandle(args[0]); |
| await app.initialized; |
| |
| // TODO(nlacasse): Switch to serving these files over http rather than |
| // directly from the filesystem, so they can be accessed by Android. |
| String url = 'file://' + args[1].replaceFirst('dart/test/echo_test.dart', 'gen/mojo/echo_server.mojo'); |
| |
| EchoClient c = new EchoClient(app, url); |
| |
| tearDown(() { |
| app.resetConnections(); |
| }); |
| |
| test('echo string returns correct response', () { |
| String input = 'foobee'; |
| Future<String> got = c.echo(input); |
| expect(got, completion(equals(input))); |
| }); |
| |
| test('echo empty string returns correct response', () { |
| String input = ''; |
| Future<String> got = c.echo(input); |
| expect(got, completion(equals(input))); |
| }); |
| |
| // Append a final test to terminate shell connection. |
| // TODO(nlacasse): Remove this once package 'test' supports a global tearDown |
| // callback. See https://github.com/dart-lang/test/issues/18. |
| test('terminate shell connection', () async { |
| await c.close(); |
| expect(MojoHandle.reportLeakedHandles(), isTrue); |
| |
| // TODO(nlacasse): When running mojo_shell with --enable-multiprocess, |
| // closing the application causes a non-graceful shutdown. To avoid this, |
| // we sleep for a second so the test reporter can finish and print the |
| // results before we close the app. Once mojo_shell can shut down more |
| // gracefully, we should call app.close directly in the test and not in |
| // this Timer. |
| new Timer(new Duration(seconds: 1), app.close); |
| }); |
| } |