mirror of
https://github.com/OpenFOAM/ThirdParty-6.git
synced 2025-12-08 06:57:43 +00:00
ParaView-5.0.1: Added the source-tree to ThirdParty-dev and patched as described in the README file
Resolves bug-report http://bugs.openfoam.org/view.php?id=2098
This commit is contained in:
347
ParaView-5.0.1/VTK/Web/JavaScript/Lib/vtkweb.testing.js
Normal file
347
ParaView-5.0.1/VTK/Web/JavaScript/Lib/vtkweb.testing.js
Normal file
@ -0,0 +1,347 @@
|
||||
/**
|
||||
* vtkWeb JavaScript Library.
|
||||
*
|
||||
* This testing module is made to test vtkWeb components
|
||||
*
|
||||
* This module registers itself as: 'vtkweb-testing'
|
||||
*
|
||||
* @class vtkWeb.testing
|
||||
*
|
||||
* @singleton
|
||||
*/
|
||||
(function (GLOBAL, $) {
|
||||
|
||||
var parentModule = {}, module = {}, testToRun = 0;
|
||||
testSuite = {}, testOrder = [], outputLog = [], w = $(window),
|
||||
testTotal = 0, testRunned = 0, success = 0, failure = 0,
|
||||
testNameToRun = [],
|
||||
testLineTemplate = '<tr id="NAME"><td><input type="checkbox" value="NAME" checked/></td><td width="100%">NAME</td><td align="center" class="status">STATUS</td></tr>',
|
||||
tableHeader = '<thead><tr><th><input type="checkbox" value="select-all-test" title="Toggle all test selection" checked/></th><th width="100%">Test names</th><th>Status</th></tr>',
|
||||
outputLogHTML = '<div class="row-fluid log" style="display: none;"><div class="span12"><textarea style="width: 98%;height: 150px;"></textarea></div></div></thead>',
|
||||
controlHTML = '<table class="table table-striped"><thead><tr><th width="100%"></th><th><div class="run-tests vtk-icon-play"></div></th><th><div class="toggle-log vtk-icon-tools"></div></th><th class="summary" style="border-radius: 5px;">Results</th><th><span id="passedTestsSpan" class="badge badge-success">0</span></th><th><span id="failedTestsSpan" class="badge" style="background-color: red">0</span></th></tr></thead></table>',
|
||||
statusSuccess = '<div class="vtk-icon-ok-circled" style="color: green;"></div>',
|
||||
statusFailure = '<div class="vtk-icon-cancel-circled" style="color: red;"></div>',
|
||||
statusNotRunned = '<div class="vtk-icon-help-circled"></div>';
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
// Init vtkWeb.testing module if needed
|
||||
// ----------------------------------------------------------------------
|
||||
if (GLOBAL.hasOwnProperty("vtkWeb")) {
|
||||
parentModule = GLOBAL.vtkWeb || {};
|
||||
} else {
|
||||
GLOBAL.vtkWeb = parentModule;
|
||||
}
|
||||
if (parentModule.hasOwnProperty("testing")) {
|
||||
module = GLOBAL.vtkWeb.testing || {};
|
||||
} else {
|
||||
GLOBAL.vtkWeb.testing = module;
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
// Internal methods
|
||||
// ----------------------------------------------------------------------
|
||||
|
||||
function registerTest(name, func) {
|
||||
testOrder.push(name);
|
||||
testSuite[name] = {
|
||||
'name': name,
|
||||
'func': func,
|
||||
'active': true,
|
||||
'message': null,
|
||||
'success': false,
|
||||
'done': false
|
||||
};
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
|
||||
function clearLog() {
|
||||
outputLog = [];
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
|
||||
function logToString() {
|
||||
return outputLog.join('\n');
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
|
||||
function clearResults() {
|
||||
outputLog = [];
|
||||
testTotal = 0;
|
||||
testRunned = 0;
|
||||
success = 0;
|
||||
failure = 0;
|
||||
for(var test in testSuite) {
|
||||
test.success = false;
|
||||
test.message = null;
|
||||
test.done = false;
|
||||
}
|
||||
w.trigger('vtk-test-clear');
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
|
||||
function log(msg) {
|
||||
outputLog.push(msg);
|
||||
w.trigger('vtk-test-log-update');
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
|
||||
function resultCallback(result) {
|
||||
var test = testSuite[result.name];
|
||||
|
||||
// Update test info
|
||||
test.done = true;
|
||||
test.message = result.message;
|
||||
test.success = result.success;
|
||||
|
||||
// Less test remaining
|
||||
++testRunned;
|
||||
if(result.success) {
|
||||
++success;
|
||||
} else {
|
||||
++failure;
|
||||
}
|
||||
|
||||
// Update log
|
||||
log((test.success?"+":"-") + result.name + ": " + test.message);
|
||||
|
||||
// Trigger event
|
||||
result.count = testRunned;
|
||||
result.total = testTotal;
|
||||
result.coutSuccess = success;
|
||||
result.countFailure = failure;
|
||||
result.type = 'vtk-test-complete';
|
||||
w.trigger(result);
|
||||
|
||||
if(testTotal === testRunned) {
|
||||
w.trigger('vtk-test-done');
|
||||
} else {
|
||||
runAnotherTest();
|
||||
}
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
|
||||
function testToString(testName) {
|
||||
return testLineTemplate.replace(/ID/g, testName).replace(/NAME/g, testName).replace('STATUS', statusNotRunned);
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
|
||||
function runAnotherTest() {
|
||||
var testName = testNameToRun.shift();
|
||||
var testFunction = testSuite[testName].func;
|
||||
testFunction(testName, resultCallback);
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
// Export methods to the vtkWeb.testing module
|
||||
// ----------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Register a set of methods as tests.
|
||||
*
|
||||
* @class vtkWeb.testing
|
||||
* @method registerTests
|
||||
* @param {Object} testSuiteToRegister
|
||||
* Should contains a set of methods that will be
|
||||
* executed.
|
||||
*/
|
||||
|
||||
module.registerTests = function(testSuiteToRegister) {
|
||||
for (var testName in testSuiteToRegister) {
|
||||
registerTest(testName, testSuiteToRegister[testName]);
|
||||
}
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Trigger the run of all the active test that have been
|
||||
* previously registered.
|
||||
*
|
||||
* @class vtkWeb.testing
|
||||
* @method runTests
|
||||
*/
|
||||
|
||||
module.runTests = function() {
|
||||
clearResults();
|
||||
log("Start testings...");
|
||||
|
||||
// Extract active tests list
|
||||
testNameToRun = [];
|
||||
for(var idx in testOrder) {
|
||||
if(testSuite[testOrder[idx]].active) {
|
||||
testNameToRun.push(testOrder[idx]);
|
||||
}
|
||||
}
|
||||
testTotal = testNameToRun.length;
|
||||
|
||||
// Start the tests running
|
||||
runAnotherTest();
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Toggle test to be run.
|
||||
*
|
||||
* @class vtkWeb.testing
|
||||
* @method enableTest
|
||||
*/
|
||||
|
||||
module.enableTest = function(name, status) {
|
||||
testSuite[name].active = status;
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Return test results summary.
|
||||
*
|
||||
* @class vtkWeb.testing
|
||||
* @method getCurrentTestResults
|
||||
*/
|
||||
|
||||
module.getCurrentTestResults = function() {
|
||||
return {
|
||||
'finished': (testTotal === testRunned),
|
||||
'testCount': testTotal,
|
||||
'successes': success,
|
||||
'failures': failure
|
||||
};
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Retrieve the test log, which contains all detailed error outputs from
|
||||
* the tests.
|
||||
*
|
||||
* @class vtkWeb.testing
|
||||
* @method getTestLog
|
||||
*/
|
||||
|
||||
module.getTestLog = logToString;
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
// Provide JQuery widgets
|
||||
// ----------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Fill the selected container with test list and
|
||||
* action buttons to toggle and run them.
|
||||
*
|
||||
* @class jquery
|
||||
* @method vtkWebTestList
|
||||
*/
|
||||
$.fn.vtkWebTestList = function(options) {
|
||||
return this.each(function() {
|
||||
var me = $(this).empty(), buffer = [];
|
||||
|
||||
// Generate HTML
|
||||
buffer.push(controlHTML);
|
||||
buffer.push('<table class="table table-striped test-panel">');
|
||||
buffer.push(tableHeader);
|
||||
buffer.push('<tbody>');
|
||||
for(var idx in testOrder) {
|
||||
buffer.push(testToString(testOrder[idx]));
|
||||
}
|
||||
buffer.push('</tbody></table>');
|
||||
buffer.push(outputLogHTML);
|
||||
me[0].innerHTML = buffer.join('');
|
||||
|
||||
// Initialize listeners
|
||||
$('input', me).change(function(){
|
||||
var checkbox = $(this),
|
||||
checked = checkbox.is(":checked"),
|
||||
testName = checkbox.val();
|
||||
|
||||
if(testSuite.hasOwnProperty(testName)) {
|
||||
testSuite[testName].active = checked;
|
||||
} else {
|
||||
$('input', me).prop('checked', checked);
|
||||
for(var test in testSuite) {
|
||||
testSuite[test].active = checked;
|
||||
}
|
||||
}
|
||||
clearResults();
|
||||
});
|
||||
|
||||
$('.toggle-log', me).click(function(){
|
||||
var log = $('.log');
|
||||
var results = $('.test-panel');
|
||||
if(log.is(":visible")) {
|
||||
log.hide();
|
||||
results.show();
|
||||
} else {
|
||||
log.show();
|
||||
results.hide();
|
||||
}
|
||||
});
|
||||
|
||||
$('.run-tests', me).click(function(){
|
||||
module.runTests();
|
||||
});
|
||||
|
||||
// Bind events to UI updates
|
||||
w.bind('vtk-test-clear', function(){
|
||||
updateTextArea();
|
||||
updateResultSummary();
|
||||
$(".status").html(statusNotRunned);
|
||||
}).bind('vtk-test-complete', function(event){
|
||||
updateTextArea();
|
||||
updateResultSummary();
|
||||
updateStatus(event.name);
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
|
||||
function updateTextArea() {
|
||||
$('textarea')[0].innerHTML = logToString();
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
|
||||
function updateResultSummary() {
|
||||
$('#passedTestsSpan').html(success);
|
||||
$('#failedTestsSpan').html(failure);
|
||||
if(testTotal !== 0 && testTotal === testRunned) {
|
||||
if(success === testTotal) {
|
||||
$('.summary').css('background', 'green');
|
||||
} else {
|
||||
$('.summary').css('background', 'red');
|
||||
}
|
||||
} else {
|
||||
$('.summary').css('background', 'none');
|
||||
}
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
|
||||
function updateStatus(testName) {
|
||||
var test = testSuite[testName]
|
||||
$("#" + testName + " .status").html(test.success ? statusSuccess : statusFailure).attr('title', test.message);
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
// Local module registration
|
||||
// ----------------------------------------------------------------------
|
||||
try {
|
||||
// Tests for presence of jQuery, then registers this module
|
||||
if ($ !== undefined) {
|
||||
parentModule.registerModule('vtkweb-testing');
|
||||
} else {
|
||||
console.error('Module failed to register, jQuery is missing.');
|
||||
}
|
||||
} catch(err) {
|
||||
console.error('Caught exception while registering module: ' + err.message);
|
||||
}
|
||||
|
||||
}(window, jQuery));
|
||||
Reference in New Issue
Block a user