Landing a fix for non-link anchor tabIndex (from scott.gonzalez). Fixes ticket #3916.
[jquery.git] / test / unit / core.js
index 494917e..7942548 100644 (file)
@@ -383,7 +383,7 @@ test("index(Object)", function() {
 });
 
 test("attr(String)", function() {
-       expect(26);
+       expect(27);
        equals( jQuery('#text1').attr('value'), "Test", 'Check for value attribute' );
        equals( jQuery('#text1').attr('value', "Test2").attr('defaultValue'), "Test", 'Check for defaultValue attribute' );
        equals( jQuery('#text1').attr('type'), "text", 'Check for type attribute' );
@@ -407,6 +407,8 @@ test("attr(String)", function() {
        jQuery('<a id="tAnchor5"></a>').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)' );
 
+       equals( jQuery("<option/>").attr("selected"), false, "Check selected attribute on disconnected element." );
+
 
        // Related to [5574] and [5683]
        var body = document.body, $body = jQuery(body);
@@ -550,22 +552,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() {
@@ -749,7 +750,7 @@ test("text()", function() {
 });
 
 test("wrap(String|Element)", function() {
-       expect(8);
+       expect(10);
        var defaultText = 'Try them out:'
        var result = jQuery('#first').wrap('<div class="red"><span></span></div>').text();
        equals( defaultText, result, 'Check for wrapping of on-the-fly html' );
@@ -774,6 +775,11 @@ test("wrap(String|Element)", function() {
        j.wrap("<i></i>");
        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("<label/>").wrap("<li/>");
+       equals( j[0].nodeName, "LABEL", "Element is a label" );
+       equals( j[0].parentNode.nodeName, "LI", "Element has been wrapped" );
 });
 
 test("wrapAll(String|Element)", function() {
@@ -1352,7 +1358,7 @@ test("val(String/Number)", function() {
 });
 
 test("html(String)", function() {
-       expect(13);
+       expect(17);
        
        jQuery.scriptorder = 0;
        
@@ -1381,6 +1387,10 @@ test("html(String)", function() {
        equals( $div.html( 5 ).html(), '5', 'Setting a number as html' );
        equals( $div.html( 0 ).html(), '0', 'Setting a zero as html' );
 
+       reset();
+
+       jQuery("#main").html('<script type="something/else">ok( false, "Non-script evaluated." );</script><script type="text/javascript">ok( true, "text/javascript is evaluated." );</script><script>ok( true, "No type is evaluated." );</script><div><script type="text/javascript">ok( true, "Inner text/javascript is evaluated." );</script><script>ok( true, "Inner No type is evaluated." );</script><script type="something/else">ok( false, "Non-script evaluated." );</script></div>');
+
        stop();
 
        jQuery("#main").html('<script type="text/javascript">ok( true, "jQuery().html().evalScripts() Evals Scripts Twice in Firefox, see #975" );</script>');