blob: 4f592febe67eee4a3245a01dde67af8f00808c72 [file] [log] [blame]
// Copyright 2017 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.
(async function() {
TestRunner.addResult(`Tests inspector's composite progress bar.\n`);
var MockProgressIndicator = function() {};
MockProgressIndicator.prototype = {
// Implementation of Common.Progress interface.
isCanceled: function() {
return this._isCanceled;
},
done: function() {
TestRunner.addResult('progress indicator: done');
},
setTotalWork: function(totalWork) {
this._totalWork = totalWork;
},
setWorked: function(worked, title) {
this._worked = worked;
if (typeof title !== 'undefined')
this._title = title;
},
setTitle: function(title) {
this._title = title;
},
// Test methods.
cancel: function() {
this._isCanceled = true;
},
dump: function() {
const roundFactor = 10000;
var worked = this._worked;
var totalWork = this._totalWork;
if (typeof worked === 'number')
worked = Math.round(worked * roundFactor) / roundFactor;
if (typeof totalWork === 'number')
totalWork = Math.round(totalWork * roundFactor) / roundFactor;
TestRunner.addResult('progress: `' + this._title + '\' ' + worked + ' out of ' + totalWork + ' done.');
}
};
TestRunner.runTestSuite([
function testOneSubProgress(next) {
var indicator = new MockProgressIndicator();
var composite = new Common.CompositeProgress(indicator);
var subProgress = composite.createSubProgress();
TestRunner.addResult('Testing CompositeProgress with a single subprogress:');
indicator.dump();
subProgress.setTitle('cuckooing');
subProgress.setWorked(10);
indicator.dump();
subProgress.setTotalWork(100);
indicator.dump();
subProgress.setWorked(20, 'meowing');
indicator.dump();
subProgress.done();
indicator.dump();
next();
},
function testMultipleSubProgresses(next) {
var indicator = new MockProgressIndicator();
var composite = new Common.CompositeProgress(indicator);
var subProgress1 = composite.createSubProgress();
var subProgress2 = composite.createSubProgress(3);
TestRunner.addResult('Testing CompositeProgress with multiple subprogresses:');
indicator.dump();
subProgress1.setTitle('cuckooing');
subProgress1.setTotalWork(100);
subProgress1.setWorked(20);
indicator.dump();
subProgress2.setWorked(10);
indicator.dump();
subProgress2.setTotalWork(10);
subProgress2.setWorked(3, 'barking');
indicator.dump();
subProgress1.setWorked(50, 'meowing');
subProgress2.setWorked(5);
indicator.dump();
subProgress2.done();
indicator.dump();
subProgress1.done();
indicator.dump();
next();
},
function testCancel(next) {
var indicator = new MockProgressIndicator();
var composite = new Common.CompositeProgress(indicator);
var subProgress = composite.createSubProgress();
TestRunner.addResult('Testing isCanceled:');
TestRunner.assertTrue(!subProgress.isCanceled(), 'progress should not be canceled');
indicator.cancel();
TestRunner.assertTrue(subProgress.isCanceled(), 'progress should be canceled');
next();
},
function testNested(next) {
var indicator = new MockProgressIndicator();
var composite0 = new Common.CompositeProgress(indicator);
var subProgress01 = composite0.createSubProgress();
var composite1 = new Common.CompositeProgress(subProgress01);
var subProgress11 = composite1.createSubProgress(10); // Weight should have no effect.
TestRunner.addResult('Testing nested subprogresses:');
indicator.dump();
subProgress11.setWorked(10);
indicator.dump();
subProgress11.setTotalWork(100);
indicator.dump();
subProgress11.setWorked(50, 'meowing');
indicator.dump();
TestRunner.assertTrue(!subProgress11.isCanceled());
indicator.cancel();
TestRunner.assertTrue(subProgress11.isCanceled());
subProgress11.done();
indicator.dump();
next();
}
]);
})();