Files
openlayers/tests/Test.AnotherWay.baseadditions.js
tschaub 59578931c2 Making testing in IE a tiny bit less painful.
The super handy quick filter that Marc added in 57c16b7345 was causing a bit of trouble in IE.  First, `input` was undefined where it was used as a misspelling for `window`.  After that, IE choked on the nice CSS3 selector when filtering the test list.  It turns out we don't need to be as selective and can treat all anchor elements within the table rows as candidates.
2012-03-02 18:29:25 -07:00

178 lines
5.8 KiB
JavaScript

// total counters
Test.AnotherWay._openlayers_sum_total_detail_ok=0;
Test.AnotherWay._openlayers_sum_total_detail_fail=0;
Test.AnotherWay._startTime = null;
// method overwrites
//
// behaviour (timing)
Test.AnotherWay._old_run_all_onclick = Test.AnotherWay._run_all_onclick;
Test.AnotherWay._run_all_onclick = function(){
Test.AnotherWay._startTime = (new Date()).getTime();
Test.AnotherWay.reset_running_time();
Test.AnotherWay._old_run_all_onclick.apply(this, arguments);
};
Test.AnotherWay._old_run_selected_onclick = Test.AnotherWay._run_selected_onclick;
Test.AnotherWay._run_selected_onclick = function(){
Test.AnotherWay._startTime = (new Date()).getTime();
Test.AnotherWay.reset_running_time();
Test.AnotherWay._old_run_selected_onclick.apply(this, arguments);
};
Test.AnotherWay._old_run_one_onclick = Test.AnotherWay._run_one_onclick;
Test.AnotherWay._run_one_onclick = function(){
Test.AnotherWay._startTime = (new Date()).getTime();
Test.AnotherWay.reset_running_time();
Test.AnotherWay._old_run_one_onclick.apply(this, arguments);
};
// test page loading
Test.AnotherWay.old_load_next_page = Test.AnotherWay._load_next_page;
Test.AnotherWay._load_next_page = function(){
Test.AnotherWay.update_running_time();
Test.AnotherWay.old_load_next_page.apply(this, arguments);
};
Test.AnotherWay._add_test_page_url = function(test_url, convention){
var table = document.getElementById("testtable");
var record_select = document.getElementById("record_select");
var index = Test.AnotherWay._g_test_page_urls.length;
// trim spaces.
if (test_url.match("^(\\s*)(.*\\S)(\\s*)$")) {
test_url = RegExp.$2;
}
Test.AnotherWay._g_test_page_urls[index] = {
url: test_url,
convention: convention
};
var row = table.insertRow(-1);
var cell;
var cell_child;
var link;
cell = row.insertCell(-1);
cell_child = document.createElement("input");
cell_child.type = "checkbox";
cell_child.id = "checkbox" + index;
cell_child.checked = 'checked';
cell_child.defaultChecked = 'checked';
cell.appendChild(cell_child);
cell = row.insertCell(-1);
cell.setAttribute("width", "75%");
// make the URL a clickable link that opens in a new window
// start changes
link = document.createElement("a");
link.href=test_url;
link.target='_blank';
link.title='Opens testfile in a new window.';
link.appendChild(document.createTextNode(test_url));
cell.appendChild(link);
// end changes
cell = row.insertCell(-1);
cell_child = document.createElement("input");
cell_child.type = "button";
cell_child.id = "test" + index;
cell_child.value = " run ";
cell_child.onclick = Test.AnotherWay._run_one_onclick;
cell.appendChild(cell_child);
cell = row.insertCell(-1);
cell.setAttribute("width", "8em");
cell_child = document.createElement("span");
cell.appendChild(cell_child);
var option = document.createElement("option");
option.appendChild(document.createTextNode(test_url));
record_select.appendChild(option);
};
// new methods
Test.AnotherWay.update_running_time = function() {
var now = (new Date()).getTime();
var floor = Math.floor;
var elapsed = now - Test.AnotherWay._startTime;
var zeroPad = function(num, length){
var len = -1 * (length || 2);
return ('00000' + num).slice(len);
};
var ms = zeroPad(elapsed%1000, 3);
var seconds=zeroPad(floor((elapsed/1000)%60));
var minutes=zeroPad(floor((elapsed/60000)%60));
document.getElementById('running-time').innerHTML = 'Elapsed time ' + minutes + ':' + seconds + ':' + ms +' (m:s:ms).';
};
Test.AnotherWay.reset_running_time = function(){
document.getElementById('running-time').innerHTML = '';
};
// quickfilter
Test.AnotherWay.bindQuicksearchListener = function(){
var input = document.getElementById('quickfilter');
if (input.addEventListener) {
input.addEventListener('keyup', Test.AnotherWay.quicksearch);
} else if (input.attachEvent) {
input.attachEvent('onkeyup', Test.AnotherWay.quicksearch);
} else {
// remove the input field
input.parentNode.removeChild(input);
}
};
Test.AnotherWay.quicksearchThrottleTimeOut = null;
Test.AnotherWay.quicksearch = function(){
if (Test.AnotherWay.quicksearchThrottleTimeOut) {
window.clearTimeout(Test.AnotherWay.quicksearchThrottleTimeOut);
}
Test.AnotherWay.quicksearchThrottleTimeOut = window.setTimeout(function(){
var input = document.getElementById('quickfilter');
Test.AnotherWay.filterTestList(input.value);
}, 300);
};
Test.AnotherWay.filterTestList = function(str){
Test.AnotherWay.unfilterTestList();
var re = new RegExp(str, 'i');
var candidates = document.querySelectorAll('#testtable tr a');
for (var idx = 0, len = candidates.length; idx<len; idx++) {
var tr = candidates[idx].parentNode.parentNode;
var html = candidates[idx].innerHTML;
if (re.test(html)) {
tr.className = 'isShown';
} else {
tr.className = 'isHidden';
}
}
};
Test.AnotherWay.unfilterTestList = function() {
if ( document.querySelectorAll ) {
var hidden = document.querySelectorAll('.isHidden');
for (var idx = 0, len = hidden.length; idx < len; idx++) {
hidden[idx].className = 'isShown';
}
}
};
// bind our quicksearch init method to body onload.
(function(win) {
if (win.addEventListener) {
win.addEventListener('load', Test.AnotherWay.bindQuicksearchListener);
} else if (win.attachEvent) {
win.attachEvent('onload', Test.AnotherWay.bindQuicksearchListener);
} else {
win.onload = function(){
Test.AnotherWay.bindQuicksearchListener();
};
}
})(window);