X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=test%2Funit%2Fattributes.js;h=7314b3a88167e7cf8727f0c1f0505301eb8d9f1e;hb=b50f41a2e3ba9ab9a7bcf69a9633b0a8258015d6;hp=a483195a4cbb16b641b574d05814d57721558be0;hpb=879799fe955f01b85b59fd8a0096d415fc48df03;p=jquery.git diff --git a/test/unit/attributes.js b/test/unit/attributes.js index a483195..7314b3a 100644 --- a/test/unit/attributes.js +++ b/test/unit/attributes.js @@ -4,7 +4,7 @@ var bareObj = function(value) { return value; }; var functionReturningObj = function(value) { return (function() { return value; }); }; test("attr(String)", function() { - expect(30); + expect(37); // This one sometimes fails randomly ?! equals( jQuery('#text1').attr('value'), "Test", 'Check for value attribute' ); @@ -65,6 +65,16 @@ test("attr(String)", function() { ok( jQuery("
").attr("doesntexist") === undefined, "Make sure undefined is returned when no attribute is found." ); ok( jQuery().attr("doesntexist") === undefined, "Make sure undefined is returned when no element is there." ); + + equals( jQuery(document).attr("nodeName"), "#document", "attr works correctly on document nodes (bug #7451)." ); + + var attributeNode = document.createAttribute("irrelevant"), + commentNode = document.createComment("some comment"), + textNode = document.createTextNode("some text"), + obj = {}; + jQuery.each( [document, attributeNode, commentNode, textNode, obj, "#firstp"], function( i, ele ) { + strictEqual( jQuery(ele).attr("nonexisting"), undefined, "attr works correctly for non existing attributes (bug #7500)." ); + }); }); if ( !isLocal ) { @@ -98,7 +108,7 @@ test("attr(Hash)", function() { }); test("attr(String, Object)", function() { - expect(24); + expect(30); var div = jQuery("div").attr("foo", "bar"), fail = false; @@ -132,6 +142,25 @@ test("attr(String, Object)", function() { jQuery("#name").attr('maxLength', '10'); equals( document.getElementById('name').maxLength, '10', 'Set maxlength attribute' ); + var attributeNode = document.createAttribute("irrelevant"), + commentNode = document.createComment("some comment"), + textNode = document.createTextNode("some text"), + obj = {}; + jQuery.each( [document, attributeNode, obj, "#firstp"], function( i, ele ) { + var $ele = jQuery( ele ); + $ele.attr( "nonexisting", "foo" ); + equal( $ele.attr("nonexisting"), "foo", "attr(name, value) works correctly for non existing attributes (bug #7500)." ); + }); + jQuery.each( [commentNode, textNode], function( i, ele ) { + var $ele = jQuery( ele ); + $ele.attr( "nonexisting", "foo" ); + strictEqual( $ele.attr("nonexisting"), undefined, "attr(name, value) works correctly on comment and text nodes (bug #7500)." ); + }); + //cleanup + jQuery.each( [document, "#firstp"], function( i, ele ) { + jQuery( ele ).removeAttr("nonexisting"); + }); + var table = jQuery('#table').append("cellcellcellcellcell"), td = table.find('td:first'); td.attr("rowspan", "2"); @@ -302,8 +331,26 @@ test("attr('tabindex', value)", function() { }); test("removeAttr(String)", function() { - expect(1); + expect(7); equals( jQuery('#mark').removeAttr( "class" )[0].className, "", "remove class" ); + + var attributeNode = document.createAttribute("irrelevant"), + commentNode = document.createComment("some comment"), + textNode = document.createTextNode("some text"), + obj = {}; + //removeAttr only really removes on DOM element nodes handle all other seperatyl + strictEqual( jQuery( "#firstp" ).attr( "nonexisting", "foo" ).removeAttr( "nonexisting" )[0].nonexisting, undefined, "removeAttr works correctly on DOM element nodes" ); + + jQuery.each( [document, attributeNode, obj], function( i, ele ) { + var $ele = jQuery( ele ); + $ele.attr( "nonexisting", "foo" ).removeAttr( "nonexisting" ); + strictEqual( ele.nonexisting, "", "removeAttr works correctly on non DOM element nodes (bug #7500)." ); + }); + jQuery.each( [commentNode, textNode], function( i, ele ) { + $ele = jQuery( ele ); + $ele.attr( "nonexisting", "foo" ).removeAttr( "nonexisting" ); + strictEqual( ele.nonexisting, undefined, "removeAttr works correctly on non DOM element nodes (bug #7500)." ); + }); }); test("val()", function() { @@ -409,7 +456,19 @@ test("val(String/Number)", function() { test("val(Function)", function() { testVal(functionReturningObj); -}) +}); + +test( "val(Array of Numbers) (Bug #7123)", function() { + expect(4); + jQuery('#form').append(''); + var elements = jQuery('input[name=arrayTest]').val([ 1, 2 ]); + ok( elements[0].checked, "First element was checked" ); + ok( elements[1].checked, "Second element was checked" ); + ok( !elements[2].checked, "Third element was unchecked" ); + ok( !elements[3].checked, "Fourth element remained unchecked" ); + + elements.remove(); +}); test("val(Function) with incoming value", function() { expect(10); @@ -500,7 +559,7 @@ test("addClass(Function)", function() { }); test("addClass(Function) with incoming value", function() { - expect(41); + expect(45); var div = jQuery("div"), old = div.map(function(){ return jQuery(this).attr("class"); @@ -573,7 +632,7 @@ test("removeClass(Function) - simple", function() { }); test("removeClass(Function) with incoming value", function() { - expect(41); + expect(45); var $divs = jQuery('div').addClass("test"), old = $divs.map(function(){ return jQuery(this).attr("class");