Author: ygrego Date: 2015-03-23 16:57:00 +0000 (Mon, 23 Mar 2015) New Revision: 964 Url: http://forge.nuiton.org/projects/sandbox/repository/revisions/964 Log: Deletion of field "callBeforeAnyTest" into property "testsObjects". Addition of method "runLoop" in order to launch a set of test in sequence and "run" which perform one test exactly. Modification of method "runAll" which call method "runLoop". Modified: oipf/js/test/Test.js Modified: oipf/js/test/Test.js =================================================================== --- oipf/js/test/Test.js 2015-03-23 16:40:51 UTC (rev 963) +++ oipf/js/test/Test.js 2015-03-23 16:57:00 UTC (rev 964) @@ -7,11 +7,10 @@ testsObjects: [{ name : "VideoBroadcastTest", object: new VideoBroadcastTest(), - callBeforeAnyTest : "beforeAnyTest", tests: [ { label: "Video broadcast creation.", - method: "testVideoBroadcastInit" + method: "testBind2Stop" }, { label: "Bind the current channel stream with a video broadcast object.", @@ -36,7 +35,6 @@ ]},{ name: "SearchManagerTest", object: new SearchManagerTest(), - callBeforeAnyTest : "beforeAnyTest", tests: [ { label: "Search manager creation.", @@ -54,21 +52,36 @@ }, runAll: function() { - for (var i = 0; i < this.testsObjects.length; i++) { - var element = this.testsObjects[i]; - - var object = element["object"]; - - var tests = element["tests"]; - - for (var j = 0; j < tests.length; j++) { - var currentTest = tests[j]; - this.updateTestResult(currentTest, object, element["callBeforeAnyTest"]); - + this.runLoop(0, 0); + }, + + runLoop: function(indexObject, indexTest) { + var element = this.testsObjects[indexObject]; + var object = element.object; + var tests = element.tests; + + var self = this; + var loop = function() { + if (indexTest < tests.length - 1) { + self.runLoop(indexObject, indexTest + 1); + + } else if (indexObject < self.testsObjects.length -1) { + self.runLoop(indexObject + 1, 0); } - } + }; + + this.updateTestResult(tests[indexTest], object) + .then(loop).catch(loop); }, + run: function(indexObject, indexTest) { + var element = this.testsObjects[indexObject]; + var object = element.object; + var tests = element.tests; + + return this.updateTestResult(tests[indexTest], object); + }, + displayInLineArray: function() { var content = "<div id='testsDisplay'>Test Page <button id='runAllBtn'>Run All</button>"; var testsObjects = this.testsObjects; @@ -111,51 +124,45 @@ document.body.innerHTML = content; }, - updateTestResult: function(currentTest, object, methodToCallBeforeAnyTest) { + updateTestResult: function(currentTest, object) { console.group(currentTest["label"]); var timeStart = performance.now(); - var result = false; - object[methodToCallBeforeAnyTest](); - - new Promise(object[currentTest["method"]].bind(object)) + var self = this; + + return new Promise(function(resolve, reject) { + try { + object.beforeTest && object.beforeTest(resolve, reject); + object[currentTest["method"]](resolve, reject); + timeout(5000).then(reject("No result returned.")); + } catch (error) { + reject(error); + } + }) .then(function(val) { console.groupEnd(currentTest["label"]); - result = true; var timeEnd = performance.now(); - document.getElementById(currentTest["method"] + "Result").textContent = val; - document.getElementById(currentTest["method"] + "Result").style.backgroundColor = "limegreen"; - document.getElementById(currentTest["method"] + "Duration").textContent = (timeEnd - timeStart).toFixed(2) + " ms"; + self.updateTestResultSuccess(timeStart, timeEnd, currentTest, val); }) .catch(function(val) { console.log(val); console.groupEnd(currentTest["label"]); - result = true; var timeEnd = performance.now(); - document.getElementById(currentTest["method"] + "Result").textContent = val; - document.getElementById(currentTest["method"] + "Result").style.backgroundColor = "red"; - document.getElementById(currentTest["method"] + "Duration").textContent = (timeEnd - timeStart).toFixed(2) + " ms"; + self.updateTestResultError(timeStart, timeEnd, currentTest, val); }); - - var afterTimeOver = function() { - if (!result) { - try { - var message = "Any result have been return."; - var timeEnd = performance.now(); - document.getElementById(currentTest["method"] + "Result").textContent = message; - document.getElementById(currentTest["method"] + "Result").style.backgroundColor = "red"; - document.getElementById(currentTest["method"] + "Duration").textContent = (timeEnd - timeStart).toFixed(2) + " ms"; - throw new Error(message); - } catch (error) { - console.log("[INFO]", error.message); - console.groupEnd(currentTest["label"]); - } - } - }; - - timeout(5000) - .then(afterTimeOver.bind(afterTimeOver)); - + }, + + updateTestResultSuccess: function(timeStart, timeEnd, currentTest, message) { + document.getElementById(currentTest["method"] + "Result").textContent = message || "Success"; + document.getElementById(currentTest["method"] + "Result").style.backgroundColor = "limegreen"; + document.getElementById(currentTest["method"] + "Duration").textContent = (timeEnd - timeStart).toFixed(2) + " ms"; +}, + + updateTestResultError: function(timeStart, timeEnd, currentTest, message) { + document.getElementById(currentTest["method"] + "Result").textContent = message || "Error"; + document.getElementById(currentTest["method"] + "Result").style.backgroundColor = "red"; + document.getElementById(currentTest["method"] + "Duration").textContent = (timeEnd - timeStart).toFixed(2) + " ms"; } + });