Author: ygrego Date: 2015-02-18 17:13:47 +0000 (Wed, 18 Feb 2015) New Revision: 822 Url: http://forge.nuiton.org/projects/sandbox/repository/revisions/822 Log: Addition of promise interface to manage display of tests results. Modified: oipf/js/test/Test.js Modified: oipf/js/test/Test.js =================================================================== --- oipf/js/test/Test.js 2015-02-17 17:12:23 UTC (rev 821) +++ oipf/js/test/Test.js 2015-02-18 17:13:47 UTC (rev 822) @@ -4,119 +4,124 @@ * and open the template in the editor. */ var Test = Class.extend({ - - testsObjects : [/*{ - name : "VideoBroadcastTest", - object : new VideoBroadcastTest(), - tests : [ - { - id : "vbTestInstanceCreation", - label : "Object creation.", - method : "testInstanceCreation", - impl: "Yes" - }, - { - id : "vbTestBindToCurrentChannel", - label : "Bind the current channel stream with a video broadcast object.", - method :"bindToCurrentChannel", - impl: "Yes" - }, - { - id : "vbTestPrevChannel", - label : "Switch to precedent channel in channel list.", - method :"testPrevChannel", - impl: "No" - }, - { - id : "vbTestNextChannel", - label : "Switch to next channel in channel list.", - method :"testNextChannel", - impl: "No" + testsObjects: [/*{ + name : "VideoBroadcastTest", + object: new VideoBroadcastTest(), + tests: [ + { + id: "vbTestInstanceCreation", + label: "Object creation.", + method: "testInstanceCreation", + impl: "Yes" + }, + { + id: "vbTestBindToCurrentChannel", + label: "Bind the current channel stream with a video broadcast object.", + method:"bindToCurrentChannel", + impl: "Yes" + }, + { + id: "vbTestPrevChannel", + label: "Switch to precedent channel in channel list.", + method: "testPrevChannel", + impl: "No" + }, + { + id: "vbTestNextChannel", + label: "Switch to next channel in channel list.", + method:"testNextChannel", + impl: "No" + } + ] + },*/ + { + name: "SearchManagerTest", + object: new SearchManagerTest(), + tests: [ + { + id: "smTestInstanceCreation", + label: "Object creation.", + method: "testInstanceCreation", + impl: "Yes" + }, + { + id: "smTestGetCurrentProgram", + label: "Obtain current program according to oipf norm.", + method: "testGetCurrentProgram", + impl: "Yes" + } + ] + }], + init: function () { + + }, + 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]; + if (currentTest["impl"] === "Yes") { + //this.updateTestResult(currentTest, object); + var promise = new Promise(object[currentTest["method"]].bind(object)); + promise.then(function (val) { + document.getElementById(currentTest["id"] + "Res").textContent = "Result: " + val; + }); + promise.catch(function (val) { + document.getElementById(currentTest["id"] + "Res").textContent = "Result: " + val; + }); + } } - ] - },*/ - { - name : "SearchManagerTest", - object : new SearchManagerTest(), - tests : [ - { - id : "smTestInstanceCreation", - label : "Object creation.", - method : "testInstanceCreation", - impl : "Yes" - }/*, - { - id : "smTestGetCurrentProgram", - label : "Obtain current program according to oipf norm.", - method :"testGetCurrentProgram", - impl : "Yes" - }*/ - ] - }], - - init: function() { + } + }, + //Use the innerHTML property to achieve display + display: function () { + var content = "<div id='testsDisplay'>Test Page <button id='runAllBtn'>Run All</button></div>"; + var testsObjects = this.testsObjects; + for (var i = 0; i < testsObjects.length; i++) { - }, - - runAll: function() { - - console.log("Result", this); - 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]; - if (currentTest["impl"] === "Yes") { - if (object[currentTest["method"]]() === true) { - document.getElementById(currentTest["id"]+"Res").innerHTML = "Result: Successful"; - } else { - document.getElementById(currentTest["id"]+"Res").innerHTML = "Result: Failure"; - } - } - - } - - - - } - }, - - //Use the innerHTML property to achieve display - display: function() { - var content = "<div id='testsDisplay'>Test Page <button id='runAllBtn'>Run All</button></div>"; - var testsObjects = this.testsObjects; - for (var i = 0; i<testsObjects.length; i++) { - - var currentObject = testsObjects[i]; - var sectionName = currentObject["name"]; - content += "<div id='"+sectionName+"'>"; - var tests = currentObject["tests"]; - for (var j = 0; j<tests.length; j++) { - - var currentTest = tests[j]; - content += "<div id='"+currentTest["id"]+"'>"; - content += "<div>Label: "+currentTest["label"]+"</div>"; - content += "<div>Tested method: "+currentTest["method"]+"</div>"; - var impl = currentTest["impl"]; - content += "<div>Implementation State: "+impl+"</div>"; - - if (impl === "Yes") { - content += "<div id='"+currentTest["id"]+"Res"+"'>Result: Test has not been launch. Click on button \"Run\" below.</div>"; - content += "<div><button id='"+currentTest["id"]+"Btn"+"'>Run</button></div>"; - } else { - content += "<div id='"+currentTest["id"]+"Res"+"'>Result: Any result will be available for the moment, test has not been implemented.</div>"; - content += "<div><button id='"+currentTest["id"]+"Btn"+"' disabled>Run</button></div>"; - } - content += "</div>"; - } - content += "</div>"; - } - content += "</div>"; - document.body.innerHTML = content; - } - + var currentObject = testsObjects[i]; + var sectionName = currentObject["name"]; + content += "<div id='" + sectionName + "'>"; + var tests = currentObject["tests"]; + for (var j = 0; j < tests.length; j++) { + + var currentTest = tests[j]; + content += "<div id='" + currentTest["id"] + "'>"; + content += "<div>Label: " + currentTest["label"] + "</div>"; + content += "<div>Tested method: " + currentTest["method"] + "</div>"; + var impl = currentTest["impl"]; + content += "<div>Implementation State: " + impl + "</div>"; + + if (impl === "Yes") { + content += "<div id='" + currentTest["id"] + "Res" + "'>Result: Test has not been launch. Click on button \"Run\" below.</div>"; + content += "<div><button id='" + currentTest["id"] + "Btn" + "'>Run</button></div>"; + } else { + content += "<div id='" + currentTest["id"] + "Res" + "'>Result: Any result will be available for the moment, test has not been implemented.</div>"; + content += "<div><button id='" + currentTest["id"] + "Btn" + "' disabled>Run</button></div>"; + } + content += "</div>"; + } + content += "</div>"; + } + content += "</div>"; + document.body.innerHTML = content; + }, + updateTestResult: function (currentTest, object) { + + var promise = new Promise(object[currentTest["method"]].bind(object)); + promise.then(function (val) { + document.getElementById(currentTest["id"] + "Res").textContent = "Result: " + val; + }); + promise.catch(function (val) { + document.getElementById(currentTest["id"] + "Res").textContent = "Result: " + val; + }); + } + });