+ }
+ }
+ resultsDiv = createResultsDiv();
+ var summary = { failed: 0, passed: 0 };
+ postResults(results, summary);
+ resultsDiv.appendChild(document.createElement("hr"));
+ document.getElementById('summary').innerHTML = "(" + summary.failed + " failed, " + summary.passed + " passed)";
+ }
+
+ function createResultsDiv() {
+ var body = document.getElementsByTagName("body")[0];
+ div = document.createElement("div");
+ div.id='results';
+ div.innerHTML = "Test results: <span id='summary'></span> <a href='#' id='passed'>passed</a> <a href='#' id='failed'>failed</a> <a href='#' id='all'>all</a><br/>";
+ body.insertBefore(div, body.firstChild);
+
+ var setByClassName = function(name, displayStyle) {
+ var elements = div.getElementsByClassName(name);
+ for (var i = 0; i < elements.length; i++) {
+ elements[i].style.display = displayStyle;
+ }
+ }
+
+ var passedAnchor = document.getElementById('passed');
+ var failedAnchor = document.getElementById('failed');
+ var allAnchor = document.getElementById('all');
+ passedAnchor.onclick = function() {
+ setByClassName('fail', 'none');
+ setByClassName('pass', 'block');
+
+ passedAnchor.setAttribute("class", 'activeAnchor');
+ failedAnchor.setAttribute("class", '');
+ };
+ failedAnchor.onclick = function() {
+ setByClassName('fail', 'block');
+ setByClassName('pass', 'none');
+ passedAnchor.setAttribute("class", '');
+ failedAnchor.setAttribute("class", 'activeAnchor');
+ };
+ allAnchor.onclick = function() {
+ setByClassName('fail', 'block');
+ setByClassName('pass', 'block');
+ passedAnchor.setAttribute("class", '');
+ failedAnchor.setAttribute("class", '');
+ };
+ return div;
+ }
+
+ function postResults(results, summary, title) {
+ if (typeof(results) == "boolean") {
+ var elem = document.createElement("div");
+ elem.setAttribute("class", results ? 'pass' : 'fail');
+
+ var prefix = title ? (title + ": ") : "";
+ elem.innerHTML = prefix + '<span class=\'outcome\'>' + (results ? 'pass' : 'fail') + '</span>';
+ resultsDiv.appendChild(elem);
+ if (results) {
+ summary.passed++;
+ } else {
+ summary.failed++;
+ }
+ } else { // hash
+ var failed = 0;
+ var html = "";
+ for (var key in results) {
+ if (results.hasOwnProperty(key)) {
+ var elem = results[key];
+ if (typeof(elem) == "boolean" && title) {
+ postResults(results[key], summary, title + "." + key);
+ } else {
+ postResults(results[key], summary, key);
+ }