X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=test%2Funit%2Fcore.js;h=289a8bace0f9318d874607bd22bd813703d9c8ec;hb=e73990a566fcb2dac71e1a25ec83382645adc5b7;hp=8483361a1735937c011afd7e0e1a9f2c360b00c2;hpb=0c97178553606c01b999441836e23f9f36c645a3;p=jquery.git diff --git a/test/unit/core.js b/test/unit/core.js index 8483361..289a8ba 100644 --- a/test/unit/core.js +++ b/test/unit/core.js @@ -53,7 +53,7 @@ test("jQuery()", function() { }); test("selector state", function() { - expect(28); + expect(30); var test; @@ -72,6 +72,10 @@ test("selector state", function() { test = jQuery("#main"); equals( test.selector, "#main", "#main Selector" ); equals( test.context, document, "#main Context" ); + + test = jQuery("#notfoundnono"); + equals( test.selector, "#notfoundnono", "#notfoundnono Selector" ); + equals( test.context, document, "#notfoundnono Context" ); test = jQuery("#main", document); equals( test.selector, "#main", "#main Selector" ); @@ -401,8 +405,8 @@ test("attr(String)", function() { equals( jQuery('#text1').attr('maxLength'), '30', 'Check for maxLength attribute' ); equals( jQuery('#area1').attr('maxLength'), '30', 'Check for maxLength attribute' ); equals( jQuery('#select2').attr('selectedIndex'), 3, 'Check for selectedIndex attribute' ); - equals( jQuery('#foo').attr('nodeName'), 'DIV', 'Check for nodeName attribute' ); - equals( jQuery('#foo').attr('tagName'), 'DIV', 'Check for tagName attribute' ); + equals( jQuery('#foo').attr('nodeName').toUpperCase(), 'DIV', 'Check for nodeName attribute' ); + equals( jQuery('#foo').attr('tagName').toUpperCase(), 'DIV', 'Check for tagName attribute' ); jQuery('').attr('href', '#5').appendTo('#main'); // using innerHTML in IE causes href attribute to be serialized to the full path equals( jQuery('#tAnchor5').attr('href'), "#5", 'Check for non-absolute href (an anchor)' ); @@ -459,7 +463,7 @@ test("attr(Hash)", function() { }); test("attr(String, Object)", function() { - expect(19); + expect(21); var div = jQuery("div").attr("foo", "bar"), fail = false; for ( var i = 0; i < div.size(); i++ ) { @@ -533,6 +537,16 @@ test("attr(String, Object)", function() { } ok( thrown, "Exception thrown when trying to change type property" ); equals( "checkbox", check.attr('type'), "Verify that you can change the type of an input element that isn't in the DOM" ); + + var button = jQuery("#button"); + var thrown = false; + try { + button.attr('type','submit'); + } catch(e) { + thrown = true; + } + ok( thrown, "Exception thrown when trying to change type property" ); + equals( "button", button.attr('type'), "Verify that you can't change the type of a button element" ); }); if ( !isLocal ) { @@ -552,22 +566,21 @@ if ( !isLocal ) { } test("attr('tabindex')", function() { - expect(5); - - // tabindex 0 - equals(jQuery('#listWithTabIndex').attr('tabindex'), 0, 'tabindex of 0'); - - // positive tabindex - equals(jQuery('#linkWithTabIndex').attr('tabindex'), 2, 'tabindex of 2'); - - // negative tabindex - equals(jQuery('#linkWithNegativeTabIndex').attr('tabindex'), -1, 'negative tabindex'); + expect(8); - // regular element without a tabindex - equals(jQuery('#divWithNoTabIndex').attr('tabindex'), undefined, 'no tabindex, not tabbable by default'); + // elements not natively tabbable + equals(jQuery('#listWithTabIndex').attr('tabindex'), 5, 'not natively tabbable, with tabindex set to 0'); + equals(jQuery('#divWithNoTabIndex').attr('tabindex'), undefined, 'not natively tabbable, no tabindex set'); + + // anchor with href + equals(jQuery('#linkWithNoTabIndex').attr('tabindex'), 0, 'anchor with href, no tabindex set'); + equals(jQuery('#linkWithTabIndex').attr('tabindex'), 2, 'anchor with href, tabindex set to 2'); + equals(jQuery('#linkWithNegativeTabIndex').attr('tabindex'), -1, 'anchor with href, tabindex set to -1'); - // link without a tabindex - equals(jQuery('#linkWithNoTabIndex').attr('tabindex'), 0, 'no tabindex, tabbable by default'); + // anchor without href + equals(jQuery('#linkWithNoHrefWithNoTabIndex').attr('tabindex'), undefined, 'anchor without href, no tabindex set'); + equals(jQuery('#linkWithNoHrefWithTabIndex').attr('tabindex'), 1, 'anchor without href, tabindex set to 2'); + equals(jQuery('#linkWithNoHrefWithNegativeTabIndex').attr('tabindex'), -1, 'anchor without href, no tabindex set'); }); test("attr('tabindex', value)", function() { @@ -612,11 +625,11 @@ test("css(String|Hash)", function() { equals( jQuery('#main').css("display"), 'none', 'Check for css property "display"'); - ok( jQuery('#foo').is(':visible'), 'Modifying CSS display: Assert element is visible'); - jQuery('#foo').css({display: 'none'}); - ok( !jQuery('#foo').is(':visible'), 'Modified CSS display: Assert element is hidden'); - jQuery('#foo').css({display: 'block'}); - ok( jQuery('#foo').is(':visible'), 'Modified CSS display: Assert element is visible'); + ok( jQuery('#nothiddendiv').is(':visible'), 'Modifying CSS display: Assert element is visible'); + jQuery('#nothiddendiv').css({display: 'none'}); + ok( !jQuery('#nothiddendiv').is(':visible'), 'Modified CSS display: Assert element is hidden'); + jQuery('#nothiddendiv').css({display: 'block'}); + ok( jQuery('#nothiddendiv').is(':visible'), 'Modified CSS display: Assert element is visible'); jQuery('#floatTest').css({styleFloat: 'right'}); equals( jQuery('#floatTest').css('styleFloat'), 'right', 'Modified CSS float using "styleFloat": Assert float is right'); @@ -639,11 +652,11 @@ test("css(String|Hash)", function() { test("css(String, Object)", function() { expect(21); - ok( jQuery('#foo').is(':visible'), 'Modifying CSS display: Assert element is visible'); - jQuery('#foo').css('display', 'none'); - ok( !jQuery('#foo').is(':visible'), 'Modified CSS display: Assert element is hidden'); - jQuery('#foo').css('display', 'block'); - ok( jQuery('#foo').is(':visible'), 'Modified CSS display: Assert element is visible'); + ok( jQuery('#nothiddendiv').is(':visible'), 'Modifying CSS display: Assert element is visible'); + jQuery('#nothiddendiv').css("display", 'none'); + ok( !jQuery('#nothiddendiv').is(':visible'), 'Modified CSS display: Assert element is hidden'); + jQuery('#nothiddendiv').css("display", 'block'); + ok( jQuery('#nothiddendiv').is(':visible'), 'Modified CSS display: Assert element is visible'); jQuery('#floatTest').css('styleFloat', 'left'); equals( jQuery('#floatTest').css('styleFloat'), 'left', 'Modified CSS float using "styleFloat": Assert float is left'); @@ -691,26 +704,27 @@ test("jQuery.css(elem, 'height') doesn't clear radio buttons (bug #1095)", funct }); test("width()", function() { - expect(8); + expect(6); var $div = jQuery("#nothiddendiv"); $div.width(30); equals($div.width(), 30, "Test set to 30 correctly"); + $div.hide(); + equals($div.width(), 30, "Test hidden div"); + $div.show(); $div.width(-1); // handle negative numbers by ignoring #1599 equals($div.width(), 30, "Test negative width ignored"); $div.css("padding", "20px"); equals($div.width(), 30, "Test padding specified with pixels"); $div.css("border", "2px solid #fff"); equals($div.width(), 30, "Test border specified with pixels"); - $div.css("padding", "2em"); - equals($div.width(), 30, "Test padding specified with ems"); - $div.css("border", "1em solid #fff"); + //$div.css("padding", "2em"); + //equals($div.width(), 30, "Test padding specified with ems"); + //$div.css("border", "1em solid #fff"); //DISABLED - Opera 9.6 fails this test, returns 8 //equals($div.width(), 30, "Test border specified with ems"); - $div.css("padding", "2%"); - equals($div.width(), 30, "Test padding specified with percent"); - $div.hide(); - equals($div.width(), 30, "Test hidden div"); + //$div.css("padding", "2%"); + //equals($div.width(), 30, "Test padding specified with percent"); $div.css({ display: "", border: "", padding: "" }); @@ -720,26 +734,27 @@ test("width()", function() { }); test("height()", function() { - expect(7); + expect(5); var $div = jQuery("#nothiddendiv"); $div.height(30); equals($div.height(), 30, "Test set to 30 correctly"); + $div.hide(); + equals($div.height(), 30, "Test hidden div"); + $div.show(); $div.height(-1); // handle negative numbers by ignoring #1599 equals($div.height(), 30, "Test negative height ignored"); $div.css("padding", "20px"); equals($div.height(), 30, "Test padding specified with pixels"); $div.css("border", "2px solid #fff"); equals($div.height(), 30, "Test border specified with pixels"); - $div.css("padding", "2em"); - equals($div.height(), 30, "Test padding specified with ems"); - $div.css("border", "1em solid #fff"); + //$div.css("padding", "2em"); + //equals($div.height(), 30, "Test padding specified with ems"); + //$div.css("border", "1em solid #fff"); //DISABLED - Opera 9.6 fails this test, returns 8 //equals($div.height(), 30, "Test border specified with ems"); - $div.css("padding", "2%"); - equals($div.height(), 30, "Test padding specified with percent"); - $div.hide(); - equals($div.height(), 30, "Test hidden div"); + //$div.css("padding", "2%"); + //equals($div.height(), 30, "Test padding specified with percent"); $div.css({ display: "", border: "", padding: "", height: "1px" }); }); @@ -751,7 +766,7 @@ test("text()", function() { }); test("wrap(String|Element)", function() { - expect(8); + expect(10); var defaultText = 'Try them out:' var result = jQuery('#first').wrap('
').text(); equals( defaultText, result, 'Check for wrapping of on-the-fly html' ); @@ -776,6 +791,11 @@ test("wrap(String|Element)", function() { j.wrap(""); equals( jQuery("#nonnodes > i").length, 3, "Check node,textnode,comment wraps ok" ); equals( jQuery("#nonnodes > i").text(), j.text() + j[1].nodeValue, "Check node,textnode,comment wraps doesn't hurt text" ); + + // Try wrapping a disconnected node + j = jQuery("