blob: 2abf508b81dc9767842af0b7275fca9d28fd2dca [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.
import 'dart:async';
import 'package:scheduled_test/scheduled_test.dart';
import 'package:scheduled_test/src/mock_clock.dart' as mock_clock;
import '../metatest.dart';
import '../utils.dart';
void main(List<String> args, message) {
metaTestInit(message);
setUpTimeout();
expectTestsPass("an error thrown in a scheduled task should be piped to that "
"task's return value", () {
var error;
test('test 1', () {
schedule(() {
throw 'error';
}).catchError((e) {
error = e;
});
});
test('test 2', () {
expect(error, new isInstanceOf<ScheduleError>());
expect(error.error, equals('error'));
});
}, passing: ['test 2']);
expectTestsPass("an error thrown in a scheduled task should be piped to "
"future tasks' return values", () {
var error;
test('test 1', () {
schedule(() {
throw 'error';
});
schedule(() => null).catchError((e) {
error = e;
});
});
test('test 2', () {
expect(error, new isInstanceOf<ScheduleError>());
expect(error.error, equals('error'));
});
}, passing: ['test 2']);
expectTestsPass("an out-of-band error should be piped to future tasks' "
"return values, but not the current task's", () {
mock_clock.mock().run();
var error;
var firstTaskError = false;
var secondTaskRun = false;
test('test 1', () {
schedule(() => sleep(2)).catchError((_) {
firstTaskError = true;
});
sleep(1).then(wrapAsync((_) {
throw 'error';
}));
schedule(() {
secondTaskRun = true;
}).catchError((e) {
error = e;
});
});
test('test 2', () {
expect(firstTaskError, isFalse);
expect(secondTaskRun, isFalse);
expect(error, new isInstanceOf<ScheduleError>());
expect(error.error, equals('error'));
});
}, passing: ['test 2']);
}