Files
sdk/pkg/barback/test/cancelable_future_test.dart
T
nweiz@google.com c12a5cad3a Refactor the barback tests somewhat.
This makes each transformer capable of relatively fine-grained pausing
and resuming of processing. They no longer use MockAsset, instead
using [Asset.fromString] to better simulate real-world transformers.

This also adds several new utility functions to
barback/test/utils.dart.

R=rnystrom@google.com

Review URL: https://codereview.chromium.org//21226004

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@25652 260f80e4-7a28-3924-810f-c04153c831b5
2013-07-30 23:57:16 +00:00

63 lines
1.5 KiB
Dart

// Copyright (c) 2013, 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.cancelable_future_test;
import 'dart:async';
import 'package:barback/src/cancelable_future.dart';
import 'package:barback/src/utils.dart';
import 'package:unittest/unittest.dart';
import 'utils.dart';
main() {
initConfig();
var completer;
var future;
setUp(() {
completer = new Completer();
future = new CancelableFuture(completer.future);
});
group("when not canceled", () {
test("correctly completes successfully", () {
expect(future, completion(equals("success")));
completer.complete("success");
});
test("correctly completes with an error", () {
expect(future, throwsA(equals("error")));
completer.completeError("error");
});
});
group("when canceled", () {
test("never completes successfully", () {
var completed = false;
future.whenComplete(() {
completed = true;
});
future.cancel();
completer.complete("success");
expect(pumpEventQueue().then((_) => completed), completion(isFalse));
});
test("never completes with an error", () {
var completed = false;
future.catchError((_) {}).whenComplete(() {
completed = true;
});
future.cancel();
completer.completeError("error");
expect(pumpEventQueue().then((_) => completed), completion(isFalse));
});
});
}