X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=build%2Ftest%2Fjs%2Ftest.js;h=ec6f9c07e09c7cc776add61c0b2f8410a441f268;hb=f6ecc6a95c4046f53d1f0d75af213305c2bd7ea7;hp=44a405fdbf4407c2ce900e62638e8f3bdd608b74;hpb=906478800db84631ddbd6b132450f65a2176bd2c;p=jquery.git diff --git a/build/test/js/test.js b/build/test/js/test.js index 44a405f..ec6f9c0 100644 --- a/build/test/js/test.js +++ b/build/test/js/test.js @@ -1,38 +1,58 @@ -function runTests(files) { - runTest( files, 0 ); -} - -function runTest( files, num ) { - $.get(files[num],function(js){ +function runTest(file) { + var startTime = new Date(); + var Test; + var stats = { + all: 0, + bad: 0 + }; + var fixture = document.getElementById('main').innerHTML; + $.get(file,function(js) { js = js.replace(/</g, "<").replace(/>/g, ">").replace(/&/g, "&"); - + eval(js); + var runTime = new Date() - startTime; + var result = document.createElement("div"); + result.innerHTML = 'Tests completed in ' + runTime + ' milliseconds.
' + + stats.bad + ' tests of ' + stats.all + ' failed.'; + document.getElementsByTagName("body")[0].appendChild(result); + }); + + function test(name, callback) { + Test = []; try { - eval(js); + callback(); } catch(e) { - Test.push( [ false, "Died on test #" + Test.length + ": " + e ] ); + if(typeof console != "undefined") { + console.error("Test " + name + " died, exception and test follows"); + console.error(e); + console.warn(callback.toString()); + } + Test.push( [ false, "Died on test #" + (Test.length+1) + ": " + e ] ); } - + reset(); + var good = 0, bad = 0; var ol = document.createElement("ol"); - + var li = "", state = "pass"; for ( var i = 0; i < Test.length; i++ ) { var li = document.createElement("li"); li.className = Test[i][0] ? "pass" : "fail"; li.innerHTML = Test[i][1]; ol.appendChild( li ); - + + stats.all++; if ( !Test[i][0] ) { state = "fail"; bad++; + stats.bad++; } else good++; } - + var li = document.createElement("li"); li.className = state; - + var b = document.createElement("b"); - b.innerHTML = files[num] + " (" + bad + ", " + good + ", " + Test.length + ")"; + b.innerHTML = name + " (" + bad + ", " + good + ", " + Test.length + ")"; b.onclick = function(){ var n = this.nextSibling; if ( jQuery.css( n, "display" ) == "none" ) @@ -41,75 +61,61 @@ function runTest( files, num ) { n.style.display = "none"; }; li.appendChild( b ); - li.appendChild( ol ); - + document.getElementById("tests").appendChild( li ); - - Test = []; - if ( ++num < files.length ) runTest( files, num ); - }); -} - -var Test = []; - -function ok(a, msg) { - Test.push( [ !!a, msg ] ); + } + + function reset() { + document.getElementById('main').innerHTML = fixture; + } + + /** + * Asserts true. + * @example ok( $("a").size() > 5, "There must be at least 5 anchors" ); + */ + function ok(a, msg) { + Test.push( [ !!a, msg ] ); + } + + /** + * Asserts that two arrays are the same + */ + function isSet(a, b, msg) { + var ret = true; + if ( a && b && a.length == b.length ) { + for ( var i in a ) + if ( a[i] != b[i] ) + ret = false; + } else + ret = false; + if ( !ret && console ) + console.log( msg, a, b ); + Test.push( [ ret, msg ] ); + } + + /** + * Returns an array of elements with the given IDs, eg. + * @example q("main", "foo", "bar") + * @result [
, , ] + */ + function q() { + var r = []; + for ( var i = 0; i < arguments.length; i++ ) + r.push( document.getElementById( arguments[i] ) ); + return r; + } + + /** + * Asserts that a select matches the given IDs + * @example t("Check for something", "//[a]", ["foo", "baar"]); + * @result returns true if "//[a]" return two elements with the IDs 'foo' and 'baar' + */ + function t(a,b,c) { + var f = jQuery.find(b); + var s = ""; + for ( var i = 0; i < f.length; i++ ) + s += (s && ",") + '"' + f[i].id + '"'; + isSet(f, q.apply(q,c), a + " (" + b + ")"); + } } - -function cmpOK( a, c, b, msg ) { - var res; - eval( "res = (a " + c + " b)" ); - Test.push( [ res, msg ] ); -} - -function isSet(a, b, msg) { - var ret = true; - - if ( a && b && a.length == b.length ) { - for ( var i in a ) - if ( a[i] != b[i] ) - ret = false; - } else - ret = false; - - if ( !ret && console ) - console.log( msg, a, b ); - - Test.push( [ ret, msg ] ); -} - -function q() { - var r = []; - - for ( var i = 0; i < arguments.length; i++ ) - r.push( document.getElementById( arguments[i] ) ); - - return r; -} - -function t(a,b,c) { - var f = jQuery.find(b); - - var s = ""; - for ( var i = 0; i < f.length; i++ ) - s += (s && ",") + '"' + f[i].id + '"'; - - isSet(f, q.apply(q,c), a + " (" + b + ")"); -} - -function o(a) { - var li = document.createElement("li"); - li.innerHTML = a; - if ( a.indexOf("#") == 0 ) - li.className = "comment"; - else if ( a.indexOf("TODO") >= 0 ) - li.className = "todo"; - else if ( a.indexOf("not ok") == 0 ) - li.classname = "fail"; - else - li.className = "pass"; - document.getElementById("test").appendChild(li); -} - -//plan({noPlan: true});