blob: d5f9ae43a6851cfcd32c904533c5dd8cf302ace6 [file] [log] [blame]
// 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));
});
});
}