Fixed some bugs with the test suite and fixed a bug with setting attributes.

This commit is contained in:
John Resig 2006-08-25 18:38:24 +00:00
parent 7caca06cfc
commit 906478800d
3 changed files with 35 additions and 39 deletions

View File

@ -4,7 +4,7 @@ function runTests(files) {
function runTest( files, num ) { function runTest( files, num ) {
$.get(files[num],function(js){ $.get(files[num],function(js){
js = js.replace(/&lt;/g, "<").replace(/&gt;/g, ">"); js = js.replace(/&lt;/g, "<").replace(/&gt;/g, ">").replace(/&amp;/g, "&");
try { try {
eval(js); eval(js);

View File

@ -4,16 +4,15 @@ var dir = arguments[1];
var indexFile = readFile( "build/test/index.html" ); var indexFile = readFile( "build/test/index.html" );
var testFile = readFile( "build/test/test.html" ); var testFile = readFile( "build/test/test.html" );
var files = {};
var jq = parse( readFile( arguments[0] ) ); var jq = parse( readFile( arguments[0] ) );
var fileList = [];
var count = 1;
for ( var i = 0; i < jq.length; i++ ) { for ( var i = 0; i < jq.length; i++ ) {
if ( jq[i].tests.length > 0 ) { if ( jq[i].tests.length > 0 ) {
var name = count + "-" + jq[i].name;
var count = 1;
while ( files[ jq[i].name + count ] ) { count++; }
var name = jq[i].name + count;
var myFile = testFile var myFile = testFile
.replace( /{TITLE}/g, jq[i].name ) .replace( /{TITLE}/g, jq[i].name )
@ -22,17 +21,18 @@ for ( var i = 0; i < jq.length; i++ ) {
var fileName = "tests/" + name + ".js"; var fileName = "tests/" + name + ".js";
//writeFile( dir + "/" + fileName, myFile );
writeFile( dir + "/" + fileName, jq[i].tests.join("\n") ); writeFile( dir + "/" + fileName, jq[i].tests.join("\n") );
files[ fileName ] = 1; fileList.push( fileName );
count++;
} }
} }
var fileString = ""; var fileString = "";
for ( var i in files ) { for ( var i = 0; i < fileList.length; i++ ) {
if ( fileString ) fileString += ", "; if ( fileString ) fileString += ", ";
fileString += "'" + i + "'"; fileString += "'" + fileList[i] + "'";
} }
writeFile( dir + "/index.html", indexFile.replace( /{FILES}/g, fileString ) ); writeFile( dir + "/index.html", indexFile.replace( /{FILES}/g, fileString ) );

42
src/jquery/jquery.js vendored
View File

@ -265,12 +265,10 @@ jQuery.fn = jQuery.prototype = {
* @before <img/> * @before <img/>
* @result <img src="test.jpg" alt="Test Image"/> * @result <img src="test.jpg" alt="Test Image"/>
* *
* @test var div = $("div"); * @test var pass = true;
* div.attr({foo: 'baz', zoo: 'ping'}); * $("div").attr({foo: 'baz', zoo: 'ping'}).each(function(){
* var pass = true; * if ( this.getAttribute('foo') != "baz" && this.getAttribute('zoo') != "ping" ) pass = false;
* for ( var i = 0; i < div.size(); i++ ) { * });
* if ( div.get(i).foo != "baz" && div.get(i).zoo != "ping" ) pass = false;
* }
* ok( pass, "Set Multiple Attributes" ); * ok( pass, "Set Multiple Attributes" );
* *
* @name attr * @name attr
@ -290,7 +288,7 @@ jQuery.fn = jQuery.prototype = {
* div.attr("foo", "bar"); * div.attr("foo", "bar");
* var pass = true; * var pass = true;
* for ( var i = 0; i < div.size(); i++ ) { * for ( var i = 0; i < div.size(); i++ ) {
* if ( div.get(i).foo != "bar" ) pass = false; * if ( div.get(i).getAttribute('foo') != "bar" ) pass = false;
* } * }
* ok( pass, "Set Attribute" ); * ok( pass, "Set Attribute" );
* *
@ -1255,28 +1253,26 @@ jQuery.extend({
return r; return r;
}, },
attr: function(o,a,v){ attr: function(elem, name, value){
if ( a && a.constructor == String ) {
var fix = { var fix = {
"for": "htmlFor", "for": "htmlFor",
"class": "className", "class": "className",
"float": "cssFloat" "float": "cssFloat",
innerHTML: "innerHTML",
className: "className"
}; };
a = (fix[a] && fix[a].replace && fix[a] || a) if ( fix[name] ) {
.replace(/-([a-z])/ig,function(z,b){ if ( value != undefined ) elem[fix[name]] = value;
return b.toUpperCase(); return elem[fix[name]];
}); } else if ( elem.getAttribute ) {
if ( value != undefined ) elem.setAttribute( name, value );
if ( v != undefined ) { return elem.getAttribute( name, 2 );
o[a] = v; } else {
if ( o.setAttribute && a != "disabled" ) name = name.replace(/-([a-z])/ig,function(z,b){return b.toUpperCase();});
o.setAttribute(a,v); if ( value != undefined ) elem[name] = value;
return elem[name];
} }
return o[a] || o.getAttribute && o.getAttribute(a) || "";
} else
return "";
}, },
// The regular expressions that power the parsing engine // The regular expressions that power the parsing engine