You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
64 lines
1.4 KiB
64 lines
1.4 KiB
14 years ago
|
|
||
|
window.onload = runTests;
|
||
|
|
||
|
function get(id) {
|
||
|
return document.getElementById(id);
|
||
|
}
|
||
|
|
||
|
function create(type) {
|
||
|
return document.createElement(type);
|
||
|
}
|
||
|
|
||
|
function runTests() {
|
||
|
var table = get('tests');
|
||
|
for (var name in tests) {
|
||
|
var canvas = create('canvas')
|
||
|
, tr = create('tr')
|
||
|
, tds = [create('td'), create('td')];
|
||
|
canvas.width = 200;
|
||
|
canvas.height = 200;
|
||
|
tds[1].appendChild(canvas);
|
||
|
tr.appendChild(tds[0]);
|
||
|
tr.appendChild(tds[1]);
|
||
|
table.appendChild(tr);
|
||
|
runTest(name, canvas, tds[0]);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function runTest(name, canvas, dest) {
|
||
|
var fn = tests[name];
|
||
|
fn(canvas.getContext('2d'));
|
||
|
renderOnServer(name, canvas, function(res){
|
||
|
if (res.error) {
|
||
|
var p = create('p');
|
||
|
p.innerText = res.error;
|
||
|
dest.appendChild(p);
|
||
|
} else if (res.data) {
|
||
|
var img = create('image');
|
||
|
img.src = res.data;
|
||
|
img.alt = name;
|
||
|
dest.appendChild(img);
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
|
||
|
function renderOnServer(name, canvas, fn) {
|
||
|
var req = new XMLHttpRequest
|
||
|
, json = JSON.stringify({
|
||
|
fn: tests[name].toString()
|
||
|
, width: canvas.width
|
||
|
, height: canvas.height
|
||
|
});
|
||
|
req.open('POST', '/render');
|
||
|
req.setRequestHeader('Content-Type', 'application/json');
|
||
|
req.onreadystatechange = function(){
|
||
|
if (4 == req.readyState) {
|
||
|
try {
|
||
|
fn(JSON.parse(req.responseText));
|
||
|
} catch (err) {
|
||
|
fn({ error: err });
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
req.send(json);
|
||
|
}
|