diff options
author | Einar Egilsson | 2011-08-26 14:37:27 +0200 |
---|---|---|
committer | Einar Egilsson | 2011-08-26 14:37:27 +0200 |
commit | 3ac1838cba725705a96a9d7b65721b15f4ec67b1 (patch) | |
tree | 6eea260d1e5882ba1031c5bb78bd2b9ac0884fb9 /chrome/code/unittest/run.html | |
parent | 5aefd85d7975c8934b32a30a1dec68aa421cdee3 (diff) |
Moved everything to a js module, removed custom xpcom interfaces
Diffstat (limited to 'chrome/code/unittest/run.html')
-rw-r--r-- | chrome/code/unittest/run.html | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/chrome/code/unittest/run.html b/chrome/code/unittest/run.html new file mode 100644 index 0000000..cc178aa --- /dev/null +++ b/chrome/code/unittest/run.html @@ -0,0 +1,99 @@ +<!-- $Id$ --> +<html> + <head> + <title>Redirector Unit Tests</title> + <style type="text/css"> + body { font-family: Verdana, Arial; color:black; background-color:white; font-size:0.8em; width:800px; margin:auto; text-align:center;} + a { color:blue; } + h1 { text-align:center; margin:10px 0px; } + table { margin:10px auto; border:solid 1px black; width:700px; border-collapse:collapse;} + td { border:solid 1px black; padding:3px; } + td.result { width:20px; height:20px; padding:0;} + td.result div { width:70%; height:70%; margin:auto; } + button { margin:20px auto; } + </style> + <script type="text/javascript"> + + //Global variables + var subscriptLoader = Components.classes["@mozilla.org/moz/jssubscript-loader;1"].getService(Components.interfaces.mozIJSSubScriptLoader); + var redirector = Components.classes["@einaregilsson.com/redirector;1"].getService(Components.interfaces.rdIRedirector); + + function setupTest(name, testcase) { + var table = document.createElement('table'); + var row = document.createElement('tr'); + var cell = document.createElement('th'); + var testdata; + cell.setAttribute('colspan', 2); + row.appendChild(cell); + table.appendChild(row); + cell.innerHTML = name; + document.getElementById('tests').appendChild(table); + for (var i = 0; i < testcase.tests.length; i++) { + var testdata = testcase.tests[i]; + row = document.createElement('tr'); + cell = document.createElement('td'); + cell.setAttribute('class', 'result'); + var dot = document.createElement('div'); + dot.setAttribute('id', name + '_' + i); + cell.appendChild(dot); + + row.appendChild(cell); + cell = document.createElement('td'); + cell.innerHTML = testcase.describe(testdata); + row.appendChild(cell); + table.appendChild(row); + } + } + + function setup() { + //quick and dirty cleanup + document.getElementById('tests').innerHTML = ''; + subscriptLoader.loadSubScript('chrome://redirector/content/code/redirect.js'); + subscriptLoader.loadSubScript('chrome://redirector/content/unittest/testcases.js'); + redirector.reload(); + + var sorted = []; + for (var name in tests) { + sorted.push(name); + } + + sorted.sort(); + for each(var name in sorted) { + setupTest(name, tests[name]); + } + } + + function runTests() { + for (var testcaseName in tests) { + var testcase = tests[testcaseName]; + for (var i = 0; i < testcase.tests.length; i++) { + try { + var dot = document.getElementById(testcaseName + '_' + i); + var result = testcase.run(testcase.tests[i]); + if (result && result.passed) { + dot.style.backgroundColor = '#17f816'; + } else { + dot.style.backgroundColor = '#ff0000'; + if (result && result.message) { + dot.parentNode.nextSibling.innerHTML += '<br/><span style="color:red;">' + result.message + '</span>'; + } + } + } catch(e) { + dot.style.backgroundColor = '#ff0000'; + dot.parentNode.nextSibling.innerHTML += '<br/><span style="color:red;">' + e + '</span>'; + ; + } + } + } + } + + </script> + </head> + <body onload="setup();"> + <h1>Redirector Unit Tests</h1> + <button onclick="runTests();">Run tests</button> + <button onclick="setup();">Reload tests</button> + <div id="tests"> + </div> + </body> +</html>
\ No newline at end of file |