| Index: mojo/dart/apptest/apptest/apptest.dart
|
| diff --git a/mojo/dart/apptest/apptest/apptest.dart b/mojo/dart/apptest/apptest/apptest.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..0f1721f2cfadee40aac303a456d0ad081a22583d
|
| --- /dev/null
|
| +++ b/mojo/dart/apptest/apptest/apptest.dart
|
| @@ -0,0 +1,61 @@
|
| +// Copyright 2015 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +library apptest;
|
| +
|
| +import 'dart:async';
|
| +import 'mojo:application';
|
| +import 'mojo:bindings';
|
| +import 'mojo:core';
|
| +
|
| +// Import and reexport the unittest package. We are a *.dartzip file designed to
|
| +// be linked into your_apptest.mojo file and are your main entrypoint.
|
| +import 'package:unittest/unittest.dart';
|
| +export 'package:unittest/unittest.dart';
|
| +
|
| +// This class is an application that does nothing but tears down the connections
|
| +// between each test.
|
| +class _ConnectionToShellApplication extends Application {
|
| + final List<Function> _testFunctions;
|
| +
|
| + _ConnectionToShellApplication.fromHandle(MojoHandle handle,
|
| + this._testFunctions)
|
| + : super.fromHandle(handle);
|
| +
|
| + // Only run the test suite passed in once we have received an initialize()
|
| + // call from the shell. We need to first have a valid connection to the shell
|
| + // so that apptests can connect to other applications.
|
| + void initialize(List<String> args, String url) {
|
| + _testFunctions.forEach((f) => f(this));
|
| + }
|
| +}
|
| +
|
| +// A configuration which properly shuts down our application at the end.
|
| +class _CleanShutdownConfiguration extends SimpleConfiguration {
|
| + final _ConnectionToShellApplication _application;
|
| +
|
| + _CleanShutdownConfiguration(this._application) : super() {}
|
| +
|
| + void onTestResult(TestCase externalTestCase) {
|
| + super.onTestResult(externalTestCase);
|
| + _application.resetConnections();
|
| + }
|
| +
|
| + void onDone(bool success) {
|
| + _application.close();
|
| + super.onDone(success);
|
| + }
|
| +}
|
| +
|
| +// The public interface to apptests.
|
| +//
|
| +// In a dart mojo application, |incoming_handle| is args[0]. |testFunction| is a
|
| +// list of functions that actually contains your testing code, and will pass
|
| +// back an application to each of them.
|
| +runAppTests(var incomingHandle, List<Function> testFunction) {
|
| + var appHandle = new MojoHandle(incomingHandle);
|
| + var application =
|
| + new _ConnectionToShellApplication.fromHandle(appHandle, testFunction);
|
| + unittestConfiguration = new _CleanShutdownConfiguration(application);
|
| +}
|
|
|