Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1054)

Unified Diff: lib/src/live_test_controller.dart

Issue 955543002: Move a bunch of src/ files into subdirectories. (Closed) Base URL: git@github.com:dart-lang/unittest@master
Patch Set: Fix library tags Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « lib/src/live_test.dart ('k') | lib/src/load_exception.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: lib/src/live_test_controller.dart
diff --git a/lib/src/live_test_controller.dart b/lib/src/live_test_controller.dart
deleted file mode 100644
index 038894954a730838520a4d991fd581320168af70..0000000000000000000000000000000000000000
--- a/lib/src/live_test_controller.dart
+++ /dev/null
@@ -1,155 +0,0 @@
-// 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.
-
-library unittest.live_test_controller;
-
-import 'dart:async';
-import 'dart:collection';
-
-import 'package:stack_trace/stack_trace.dart';
-
-import 'live_test.dart';
-import 'state.dart';
-import 'suite.dart';
-import 'test.dart';
-import 'utils.dart';
-
-/// An implementation of [LiveTest] that's controlled by a [LiveTestController].
-class _LiveTest extends LiveTest {
- final LiveTestController _controller;
-
- Suite get suite => _controller._suite;
-
- Test get test => _controller._test;
-
- State get state => _controller._state;
-
- Stream<State> get onStateChange =>
- _controller._onStateChangeController.stream;
-
- List<AsyncError> get errors => new UnmodifiableListView(_controller._errors);
-
- Stream<AsyncError> get onError => _controller._onErrorController.stream;
-
- Future get onComplete => _controller.completer.future;
-
- Future run() => _controller._run();
-
- Future close() => _controller._close();
-
- _LiveTest(this._controller);
-}
-
-/// A controller that drives a [LiveTest].
-///
-/// This is a utility class to make it easier for implementors of [Test] to
-/// create the [LiveTest] returned by [Test.load]. The [LiveTest] is accessible
-/// through [LiveTestController.liveTest].
-///
-/// This automatically handles some of [LiveTest]'s guarantees, but for the most
-/// part it's the caller's responsibility to make sure everything gets
-/// dispatched in the correct order.
-class LiveTestController {
- /// The [LiveTest] controlled by [this].
- LiveTest get liveTest => _liveTest;
- LiveTest _liveTest;
-
- /// The test suite that's running [this].
- final Suite _suite;
-
- /// The test that's being run.
- final Test _test;
-
- /// The function that will actually start the test running.
- final Function _onRun;
-
- /// A function to run when the test is closed.
- ///
- /// This may be `null`.
- final AsyncFunction _onClose;
-
- /// The list of errors caught by the test.
- final _errors = new List<AsyncError>();
-
- /// The current state of the test.
- var _state = const State(Status.pending, Result.success);
-
- /// The controller for [LiveTest.onStateChange].
- final _onStateChangeController = new StreamController<State>.broadcast();
-
- /// The controller for [LiveTest.onError].
- final _onErrorController = new StreamController<AsyncError>.broadcast();
-
- /// The completer for [LiveTest.onComplete];
- final completer = new Completer();
-
- /// Whether [run] has been called.
- var _runCalled = false;
-
- /// Whether [close] has been called.
- bool get _isClosed => _onErrorController.isClosed;
-
- /// Creates a new controller for a [LiveTest].
- ///
- /// [test] is the test being run; [suite] is the suite that contains it.
- ///
- /// [onRun] is a function that will be called from [LiveTest.run]. It should
- /// start the test running. The controller takes care of ensuring that
- /// [LiveTest.run] isn't called more than once and that [LiveTest.onComplete]
- /// is returned.
- ///
- /// If [onClose] is passed, it's called the first [LiveTest.close] is called.
- /// It should clean up any resources that have been allocated for the test. It
- /// may return a [Future].
- LiveTestController(this._suite, this._test, void onRun(), {onClose()})
- : _onRun = onRun,
- _onClose = onClose {
- _liveTest = new _LiveTest(this);
- }
-
- /// Adds an error to the [LiveTest].
- ///
- /// This both adds the error to [LiveTest.errors] and emits it via
- /// [LiveTest.onError]. [stackTrace] is automatically converted into a [Chain]
- /// if it's not one already.
- void addError(error, StackTrace stackTrace) {
- var asyncError = new AsyncError(error, new Chain.forTrace(stackTrace));
- _errors.add(asyncError);
- _onErrorController.add(asyncError);
- }
-
- /// Sets the current state of the [LiveTest] to [newState].
- ///
- /// If [newState] is different than the old state, this both sets
- /// [LiveTest.state] and emits the new state via [LiveTest.onStateChanged]. If
- /// it's not different, this does nothing.
- void setState(State newState) {
- if (_state == newState) return;
- _state = newState;
- _onStateChangeController.add(newState);
- }
-
- /// A wrapper for [_onRun] that ensures that it follows the guarantees for
- /// [LiveTest.run].
- Future _run() {
- if (_runCalled) {
- throw new StateError("LiveTest.run() may not be called more than once.");
- }
- _runCalled = true;
-
- _onRun();
- return liveTest.onComplete;
- }
-
- /// A wrapper for [_onClose] that ensures that all controllers are closed.
- Future _close() {
- if (_isClosed) return new Future.value();
- _onStateChangeController.close();
- _onErrorController.close();
- if (!completer.isCompleted) completer.complete();
-
- if (_onClose != null) return new Future.sync(_onClose);
- return new Future.value();
- }
-}
« no previous file with comments | « lib/src/live_test.dart ('k') | lib/src/load_exception.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698