diff options
Diffstat (limited to 'chrome/content/unittest/run.html')
-rw-r--r-- | chrome/content/unittest/run.html | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/chrome/content/unittest/run.html b/chrome/content/unittest/run.html new file mode 100644 index 0000000..2c4f968 --- /dev/null +++ b/chrome/content/unittest/run.html @@ -0,0 +1,87 @@ +<!-- $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: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.nsISupports).wrappedJSObject;
+
+ 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.getElementsByTagName('body')[0].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() {
+ var tables = document.getElementsByTagName('table');
+ for (var i = 0; i < tables.length; i++) {
+ tables[i].parentNode.removeChild(tables[i]);
+ }
+
+ subscriptLoader.loadSubScript('chrome://redirector/content/unittest/testcases.js');
+ redirector.reload();
+
+ for (var name in tests) {
+ 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 result = testcase.run(testcase.tests[i]);
+ if (result) {
+ document.getElementById(testcaseName + '_' + i).style.backgroundColor = '#17f816';
+ } else {
+ document.getElementById(testcaseName + '_' + i).style.backgroundColor = '#ff0000';
+ }
+ } catch(e) {
+ document.getElementById(testcaseName + '_' + i).style.backgroundColor = '#ff0000';
+ }
+ }
+ }
+ }
+
+ </script>
+ </head>
+ <body onload="setup();">
+ <h1>Redirector Unit Tests</h1>
+ <button onclick="runTests();">Run tests</button>
+ <button onclick="setup();">Reload tests</button>
+ </body>
+</html>
\ No newline at end of file |