blob: 84b60e2de47daa73489cca6bf90e5a727996f403 [file] [log] [blame]
<!DOCTYPE html>
<!--
Copyright (c) 2013 The Chromium Authors. All rights reserved.
Use of this source code is governed by a BSD-style license that can be
found in the LICENSE file.
-->
<link rel="import" href="/base/task.html">
<script>
'use strict';
tr.b.unittest.testSuite(function() {
var Task = tr.b.Task;
test('basicAllStepsPass', function() {
var results = [];
var startingTask = new Task(function(task) {
results.push('a');
task.subTask(function() {
results.push('a/1');
}, this);
task.subTask(function() {
results.push('a/2');
}, this);
}, this);
startingTask.after(function() {
results.push('b');
}, this).after(function() {
results.push('c');
}, this);
Task.RunSynchronously(startingTask);
assert.deepEqual(results, ['a', 'a/1', 'a/2', 'b', 'c']);
});
test('basicAllStepsPassAsync', function() {
var results = [];
var startingTask = new Task(function(task) {
results.push('a');
task.subTask(function() {
results.push('a/1');
}, this);
task.subTask(function() {
results.push('a/2');
}, this);
}, this);
startingTask.after(function() {
results.push('b');
}, this).after(function() {
results.push('c');
}, this);
var promise = Task.RunWhenIdle(startingTask);
promise.then(function() {
assert.deepEqual(results, ['a', 'a/1', 'a/2', 'b', 'c']);
});
return promise;
});
test('taskThatThrowsShouldRejectItsPromise', function() {
var startingTask = new Task(function(task) {
throw new Error(
'IGNORE. This is an expected error to test error handling.');
}, this);
var taskPromise = Task.RunWhenIdle(startingTask);
return new Promise(function(resolve, reject) {
taskPromise.then(function() {
reject(new Error('Should have thrown'));
}, function(err) {
resolve();
});
});
});
});
</script>