| Index: pkg/barback/test/transformer/mock_aggregate.dart
|
| diff --git a/pkg/barback/test/transformer/mock_aggregate.dart b/pkg/barback/test/transformer/mock_aggregate.dart
|
| deleted file mode 100644
|
| index 7f47b539aa7016ba9c96b26ace89a98fd5786107..0000000000000000000000000000000000000000
|
| --- a/pkg/barback/test/transformer/mock_aggregate.dart
|
| +++ /dev/null
|
| @@ -1,208 +0,0 @@
|
| -// Copyright (c) 2014, 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 barback.test.transformer.mock_aggregate;
|
| -
|
| -import 'dart:async';
|
| -
|
| -import 'package:barback/barback.dart';
|
| -import 'package:barback/src/utils.dart';
|
| -import 'package:scheduled_test/scheduled_test.dart';
|
| -
|
| -/// The abstract base class for aggregate transformers used to test barback.
|
| -///
|
| -/// This adds the ability to pause and resume different components of the
|
| -/// transformers, and to tell whether they're running, when they start running,
|
| -/// and how many times they've run.
|
| -///
|
| -/// Transformers extending this should override [doClassifyPrimary] and
|
| -/// [doApply] rather than [classifyPrimary] and [apply], and they should use
|
| -/// [getInput] and [getPrimaryInputs] rather than [transform.getInput] and
|
| -/// [transform.primaryInputs].
|
| -abstract class MockAggregateTransformer extends AggregateTransformer {
|
| - /// The number of times the transformer has been applied.
|
| - ///
|
| - /// This is scheduled. The Future will complete at the point in the schedule
|
| - /// that this is called.
|
| - Future<int> get numRuns => schedule(() => _numRuns);
|
| - var _numRuns = 0;
|
| -
|
| - /// The number of currently running transforms.
|
| - int _runningTransforms = 0;
|
| -
|
| - /// A completer for pausing the transformer before it finishes running
|
| - /// [apply].
|
| - Completer _apply;
|
| -
|
| - /// Completers for pausing the transformer before it finishes running
|
| - /// [classifyPrimary].
|
| - final _classifyPrimary = new Map<AssetId, Completer>();
|
| -
|
| - /// Completers for pausing the transformer before it finishes getting inputs
|
| - /// the [Transform].
|
| - final _getInput = new Map<AssetId, Completer>();
|
| -
|
| - /// Completer for pausing the transformer before it accesses
|
| - /// [getPrimaryInputs].
|
| - Completer _primaryInputs;
|
| -
|
| - /// A completer that completes once this transformer begins running.
|
| - ///
|
| - /// Once this transformer finishes running, this is reset to a new completer,
|
| - /// so it can be used multiple times.
|
| - var _started = new Completer();
|
| -
|
| - /// `true` if any transforms are currently running.
|
| - ///
|
| - /// This is scheduled. The Future will complete at the point in the schedule
|
| - /// that this is called.
|
| - Future<bool> get isRunning => schedule(() => _runningTransforms > 0);
|
| -
|
| - /// All elements of this set will be automatically consumed during [apply].
|
| - final consumePrimaries = new Set<String>();
|
| -
|
| - /// Pauses the schedule until this transformer begins running.
|
| - void waitUntilStarted() {
|
| - schedule(() => _started.future, "wait until $this starts");
|
| - }
|
| -
|
| - /// Causes the transformer to pause after running [apply] but before the
|
| - /// returned Future completes.
|
| - ///
|
| - /// This can be resumed by calling [resumeApply]. This operation is scheduled.
|
| - void pauseApply() {
|
| - schedule(() {
|
| - _apply = new Completer();
|
| - }, "pause apply for $this");
|
| - }
|
| -
|
| - /// Resumes the transformer's [apply] call after [pauseApply] was called.
|
| - ///
|
| - /// This operation is scheduled.
|
| - void resumeApply() {
|
| - schedule(() {
|
| - _apply.complete();
|
| - _apply = null;
|
| - }, "resume apply for $this");
|
| - }
|
| -
|
| - /// Causes the transformer to pause after running [classifyPrimary] on the
|
| - /// asset with the given [name], but before the returned Future completes.
|
| - ///
|
| - /// This can be resumed by calling [resumeClassifyPrimary]. This operation is
|
| - /// scheduled.
|
| - void pauseClassifyPrimary(String name) {
|
| - schedule(() {
|
| - _classifyPrimary[new AssetId.parse(name)] = new Completer();
|
| - }, "pause classifyPrimary($name) for $this");
|
| - }
|
| -
|
| - /// Resumes the transformer's [classifyPrimary] call on the asset with the
|
| - /// given [name] after [pauseClassifyPrimary] was called.
|
| - ///
|
| - /// This operation is scheduled.
|
| - void resumeClassifyPrimary(String name) {
|
| - schedule(() {
|
| - _classifyPrimary.remove(new AssetId.parse(name)).complete();
|
| - }, "resume classifyPrimary($name) for $this");
|
| - }
|
| -
|
| - /// Causes the transformer to pause while loading the secondary input with
|
| - /// the given [name].
|
| - ///
|
| - /// This can be resumed by calling [resumeGetInput]. This operation is
|
| - /// scheduled.
|
| - void pauseGetInput(String name) {
|
| - schedule(() {
|
| - _getInput[new AssetId.parse(name)] = new Completer();
|
| - }, "pause getInput($name) for $this");
|
| - }
|
| -
|
| - /// Resumes the transformer's loading of the input with the given [name] after
|
| - /// [pauseGetInput] was called.
|
| - ///
|
| - /// This operation is scheduled.
|
| - void resumeGetInput(String name) {
|
| - schedule(() {
|
| - _getInput.remove(new AssetId.parse(name)).complete();
|
| - }, "resume getInput($name) for $this");
|
| - }
|
| -
|
| - /// Causes the transformer to pause before accessing [getPrimaryInputs].
|
| - ///
|
| - /// This can be resumed by calling [resumePrimaryInputs]. This operation is
|
| - /// scheduled.
|
| - void pausePrimaryInputs() {
|
| - schedule(() {
|
| - _primaryInputs = new Completer();
|
| - }, "pause primaryInputs for $this");
|
| - }
|
| -
|
| - /// Resumes the transformer's invocation of [primaryInputs] after
|
| - /// [pausePrimaryInputs] was called.
|
| - ///
|
| - /// This operation is scheduled.
|
| - void resumePrimaryInputs() {
|
| - schedule(() {
|
| - _primaryInputs.complete();
|
| - _primaryInputs = null;
|
| - }, "resume primaryInputs for $this");
|
| - }
|
| -
|
| - /// Like [AggregateTransform.getInput], but respects [pauseGetInput].
|
| - ///
|
| - /// This is intended for use by subclasses of [MockAggregateTransformer].
|
| - Future<Asset> getInput(AggregateTransform transform, AssetId id) {
|
| - return newFuture(() {
|
| - if (_getInput.containsKey(id)) return _getInput[id].future;
|
| - }).then((_) => transform.getInput(id));
|
| - }
|
| -
|
| - /// Like [AggregateTransform.primaryInputs], but respects
|
| - /// [pausePrimaryInputs].
|
| - ///
|
| - /// This is intended for use by subclasses of [MockAggregateTransformer].
|
| - Stream<Asset> getPrimaryInputs(AggregateTransform transform) {
|
| - return futureStream(newFuture(() {
|
| - if (_primaryInputs != null) return _primaryInputs.future;
|
| - }).then((_) => transform.primaryInputs));
|
| - }
|
| -
|
| - Future<String> classifyPrimary(AssetId id) {
|
| - return newFuture(() => doClassifyPrimary(id)).then((result) {
|
| - return newFuture(() {
|
| - if (_classifyPrimary.containsKey(id)) {
|
| - return _classifyPrimary[id].future;
|
| - }
|
| - }).then((_) => result);
|
| - });
|
| - }
|
| -
|
| - Future apply(AggregateTransform transform) {
|
| - _numRuns++;
|
| - if (_runningTransforms == 0) _started.complete();
|
| - _runningTransforms++;
|
| - return newFuture(() => doApply(transform)).then((_) {
|
| - if (_apply != null) return _apply.future;
|
| - }).whenComplete(() {
|
| - for (var id in consumePrimaries) {
|
| - transform.consumePrimary(new AssetId.parse(id));
|
| - }
|
| - _runningTransforms--;
|
| - if (_runningTransforms == 0) _started = new Completer();
|
| - });
|
| - }
|
| -
|
| - /// The wrapped version of [classifyPrimary] for subclasses to override.
|
| - ///
|
| - /// This may return a `Future<String>` or, if it's entirely synchronous, a
|
| - /// `String`.
|
| - doClassifyPrimary(AssetId id);
|
| -
|
| - /// The wrapped version of [doApply] for subclasses to override.
|
| - ///
|
| - /// If this does asynchronous work, it should return a [Future] that completes
|
| - /// once it's finished.
|
| - doApply(AggregateTransform transform);
|
| -}
|
|
|