(function () {
var ns = $.namespace('pskl.devtools');
ns.DrawingTestSuiteController = function (suitePath) {
if (suitePath.indexOf('/') === -1) {
suitePath = [Constants.DRAWING_TEST_FOLDER, suitePath].join('/');
}
this.suitePath = suitePath;
this.testSuiteRunner = null;
};
ns.DrawingTestSuiteController.prototype.init = function () {
$.subscribe(Events.TEST_CASE_END, this.onTestCaseEnd_.bind(this));
$.subscribe(Events.TEST_SUITE_END, this.onTestSuiteEnd_.bind(this));
};
ns.DrawingTestSuiteController.prototype.start = function () {
this.reset();
this.startTime_ = Date.now();
pskl.utils.Xhr.get(this.suitePath, this.onTestSuiteLoaded_.bind(this));
var testSuiteStatus = document.createElement('li');
testSuiteStatus.innerHTML = pskl.utils.Template.replace(
'Test Suite [{{path}}]',
{path : this.shortenPath_(this.suitePath)}
);
this.testListElt.appendChild(testSuiteStatus);
};
ns.DrawingTestSuiteController.prototype.reset = function () {
this.domElt = document.createElement('div');
this.domElt.style.cssText = 'position:absolute;z-index:10000;margin:5px;padding:10px;background:lightgrey';
this.testListElt = document.createElement('ul');
this.domElt.appendChild(this.testListElt);
document.body.appendChild(this.domElt);
};
ns.DrawingTestSuiteController.prototype.onTestSuiteLoaded_ = function (response) {
var testPaths = JSON.parse(response.responseText).tests;
testPaths = testPaths.map(function (path) {
return [Constants.DRAWING_TEST_FOLDER, 'tests', path].join('/');
}.bind(this));
this.testSuiteRunner = new ns.DrawingTestSuiteRunner(testPaths);
this.testSuiteRunner.start();
};
ns.DrawingTestSuiteController.prototype.onTestCaseEnd_ = function (evt, testPath, success, performance) {
var testCaseStatus = document.createElement('li');
testCaseStatus.innerHTML = pskl.utils.Template.replace(
'[{{path}}] finished : {{status}} ({{performance}})',
{
path : this.shortenPath_(testPath),
status : success ? 'OK' : 'KO',
color : success ? 'green' : 'red',
performance: performance.toFixed(2)
}
);
this.testListElt.appendChild(testCaseStatus);
};
ns.DrawingTestSuiteController.prototype.onTestSuiteEnd_ = function (evt, status, performance) {
var elapsed = Date.now() - this.startTime_;
elapsed = (elapsed / 1000).toFixed(4);
var testSuiteStatus = document.createElement('li');
testSuiteStatus.innerHTML = pskl.utils.Template.replace(
'Test finished : {{status}} ({{elapsed}}s, performance: {{performance}})',
{
status : status,
elapsed : elapsed,
performance: performance.toFixed(2)
}
);
this.testListElt.appendChild(testSuiteStatus);
};
ns.DrawingTestSuiteController.prototype.shortenPath_ = function (path) {
// keep only the part after the last '/'
return path.replace(/^.*\/([^\/]+.json$)/, '$1');
};
})();