Fixed tabindex normalization so that elements that natively support tabbing, but...
[jquery.git] / test / unit / core.js
index ae8490e..ee5f805 100644 (file)
@@ -291,9 +291,10 @@ test("jQuery(selector, xml).text(str) - Loaded via XML document", function() {
        stop();
        jQuery.get('data/dashboard.xml', function(xml) {
                // tests for #1419 where IE was a problem
-               equals( jQuery("tab:first", xml).text(), "blabla", "Verify initial text correct" );
-               jQuery("tab:first", xml).text("newtext");
-               equals( jQuery("tab:first", xml).text(), "newtext", "Verify new text correct" );
+               var tab = jQuery("tab", xml).eq(0);
+               equals( tab.text(), "blabla", "Verify initial text correct" );
+               tab.text("newtext");
+               equals( tab.text(), "newtext", "Verify new text correct" );
                start();
        });
 });
@@ -545,6 +546,62 @@ 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');
+
+       // regular element without a tabindex
+       equals(jQuery('#divWithNoTabIndex').attr('tabindex'), undefined, 'no tabindex, not tabbable by default');
+
+    // link without a tabindex
+       equals(jQuery('#linkWithNoTabIndex').attr('tabindex'), 0, 'no tabindex, tabbable by default');
+});
+
+test("attr('tabindex', value)", function() {
+       expect(9);
+
+       var element = jQuery('#divWithNoTabIndex');
+       equals(element.attr('tabindex'), undefined, 'start with no tabindex');
+
+       // set a positive string
+       element.attr('tabindex', '1');
+       equals(element.attr('tabindex'), 1, 'set tabindex to 1 (string)');
+
+       // set a zero string
+       element.attr('tabindex', '0');
+       equals(element.attr('tabindex'), 0, 'set tabindex to 0 (string)');
+
+       // set a negative string
+       element.attr('tabindex', '-1');
+       equals(element.attr('tabindex'), -1, 'set tabindex to -1 (string)');
+       
+       // set a positive number
+       element.attr('tabindex', 1);
+       equals(element.attr('tabindex'), 1, 'set tabindex to 1 (number)');
+
+       // set a zero number
+       element.attr('tabindex', 0);
+       equals(element.attr('tabindex'), 0, 'set tabindex to 0 (number)');
+
+       // set a negative number
+       element.attr('tabindex', -1);
+       equals(element.attr('tabindex'), -1, 'set tabindex to -1 (number)');
+       
+       element = jQuery('#linkWithTabIndex');
+       equals(element.attr('tabindex'), 2, 'start with tabindex 2');
+
+       element.attr('tabindex', -1);
+       equals(element.attr('tabindex'), -1, 'set negative tabindex');
+});
+
 test("css(String|Hash)", function() {
        expect(19);
 
@@ -1111,10 +1168,12 @@ test("clone() on XML nodes", function() {
        stop();
        jQuery.get("data/dashboard.xml", function (xml) {
                var root = jQuery(xml.documentElement).clone();
-               jQuery("tab:first", xml).text("origval");
-               jQuery("tab:first", root).text("cloneval");
-               equals(jQuery("tab:first", xml).text(), "origval", "Check original XML node was correctly set");
-               equals(jQuery("tab:first", root).text(), "cloneval", "Check cloned XML node was correctly set");
+               var origTab = jQuery("tab", xml).eq(0);
+               var cloneTab = jQuery("tab", root).eq(0);
+               origTab.text("origval");
+               cloneTab.text("cloneval");
+               equals(origTab.text(), "origval", "Check original XML node was correctly set");
+               equals(cloneTab.text(), "cloneval", "Check cloned XML node was correctly set");
                start();
        });
 });
@@ -1501,7 +1560,7 @@ test("removeClass(String) - simple", function() {
 });
 
 test("toggleClass(String)", function() {
-       expect(6);\r
+       expect(6);
        var e = jQuery("#firstp");
        ok( !e.is(".test"), "Assert class not present" );
        e.toggleClass("test");
@@ -1509,12 +1568,12 @@ test("toggleClass(String)", function() {
        e.toggleClass("test");
        ok( !e.is(".test"), "Assert class not present" );
 
-       e.toggleClass("test", false);\r
-       ok( !e.is(".test"), "Assert class not present" );\r
-       e.toggleClass("test", true);\r
-       ok( e.is(".test"), "Assert class present" );\r
-       e.toggleClass("test", false);\r
-       ok( !e.is(".test"), "Assert class not present" );\r
+       e.toggleClass("test", false);
+       ok( !e.is(".test"), "Assert class not present" );
+       e.toggleClass("test", true);
+       ok( e.is(".test"), "Assert class present" );
+       e.toggleClass("test", false);
+       ok( !e.is(".test"), "Assert class not present" );
 });
 
 test("removeAttr(String", function() {