X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=test%2Funit%2Fcore.js;h=9d91c4f754d040a71c0e8f80fe14cd59730c7fa4;hb=a37ca9e9058243169725982e91bce60801b9857d;hp=4d04af759a1509a61e1c499a50bb333e2758d11d;hpb=73ff49ac9a3a6d049557394062e3ad915bb04ef1;p=jquery.git
diff --git a/test/unit/core.js b/test/unit/core.js
index 4d04af7..9d91c4f 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" );
@@ -383,7 +387,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' );
@@ -401,12 +405,14 @@ 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)' );
+ equals( jQuery("").attr("selected"), false, "Check selected attribute on disconnected element." );
+
// Related to [5574] and [5683]
var body = document.body, $body = jQuery(body);
@@ -550,22 +556,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() {
@@ -610,11 +615,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');
@@ -637,11 +642,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');
@@ -689,26 +694,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: "" });
@@ -718,26 +724,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" });
});
@@ -749,7 +756,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' );
@@ -774,6 +781,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("").wrap("");
+ equals( j[0].nodeName.toUpperCase(), "LABEL", "Element is a label" );
+ equals( j[0].parentNode.nodeName.toUpperCase(), "LI", "Element has been wrapped" );
});
test("wrapAll(String|Element)", function() {
@@ -830,9 +842,7 @@ test("append(String|Element|Array<Element>|jQuery)", function() {
equals( expected, jQuery('#sap').text(), "Check for appending of array of elements" );
reset();
- expected = document.querySelectorAll ?
- "This link has class=\"blog\": Simon Willison's WeblogYahooTry them out:" :
- "This link has class=\"blog\": Simon Willison's WeblogTry them out:Yahoo";
+ expected = "This link has class=\"blog\": Simon Willison's WeblogYahooTry them out:";
jQuery('#sap').append(jQuery("#first, #yahoo"));
equals( expected, jQuery('#sap').text(), "Check for appending of jQuery object" );
@@ -899,7 +909,7 @@ test("append(String|Element|Array<Element>|jQuery)", function() {
});
test("appendTo(String|Element|Array<Element>|jQuery)", function() {
- expect(7);
+ expect(12);
var defaultText = 'Try them out:'
jQuery('buga').appendTo('#first');
equals( jQuery("#first").text(), defaultText + 'buga', 'Check if text appending works' );
@@ -919,15 +929,34 @@ test("appendTo(String|Element|Array<Element>|jQuery)", function() {
ok( jQuery(document.createElement("script")).appendTo("body").length, "Make sure a disconnected script can be appended." );
reset();
- expected = document.querySelectorAll ?
- "This link has class=\"blog\": Simon Willison's WeblogYahooTry them out:" :
- "This link has class=\"blog\": Simon Willison's WeblogTry them out:Yahoo";
+ expected = "This link has class=\"blog\": Simon Willison's WeblogYahooTry them out:";
jQuery("#first, #yahoo").appendTo('#sap');
equals( expected, jQuery('#sap').text(), "Check for appending of jQuery object" );
reset();
jQuery('#select1').appendTo('#foo');
t( 'Append select', '#foo select', ['select1'] );
+
+ reset();
+ var div = jQuery("").click(function(){
+ ok(true, "Running a cloned click.");
+ });
+ div.appendTo("#main, #moretests");
+
+ jQuery("#main div:last").click();
+ jQuery("#moretests div:last").click();
+
+ reset();
+ var div = jQuery("").appendTo("#main, #moretests");
+
+ equals( div.length, 2, "appendTo returns the inserted elements" );
+
+ div.addClass("test");
+
+ ok( jQuery("#main div:last").hasClass("test"), "appendTo element was modified after the insertion" );
+ ok( jQuery("#moretests div:last").hasClass("test"), "appendTo element was modified after the insertion" );
+
+ reset();
});
test("prepend(String|Element|Array<Element>|jQuery)", function() {
@@ -948,9 +977,7 @@ test("prepend(String|Element|Array<Element>|jQuery)", function() {
equals( expected, jQuery('#sap').text(), "Check for prepending of array of elements" );
reset();
- expected = document.querySelectorAll ?
- "YahooTry them out:This link has class=\"blog\": Simon Willison's Weblog" :
- "Try them out:YahooThis link has class=\"blog\": Simon Willison's Weblog";
+ expected = "YahooTry them out:This link has class=\"blog\": Simon Willison's Weblog";
jQuery('#sap').prepend(jQuery("#first, #yahoo"));
equals( expected, jQuery('#sap').text(), "Check for prepending of jQuery object" );
});
@@ -969,12 +996,12 @@ test("prependTo(String|Element|Array<Element>|jQuery)", function() {
reset();
expected = "Try them out:YahooThis link has class=\"blog\": Simon Willison's Weblog";
- jQuery([document.getElementById('yahoo'), document.getElementById('first')]).prependTo('#sap');
+ jQuery([document.getElementById('first'), document.getElementById('yahoo')]).prependTo('#sap');
equals( expected, jQuery('#sap').text(), "Check for prepending of array of elements" );
reset();
- expected = "Try them out:YahooThis link has class=\"blog\": Simon Willison's Weblog";
- jQuery("#yahoo, #first").prependTo('#sap');
+ expected = "YahooTry them out:This link has class=\"blog\": Simon Willison's Weblog";
+ jQuery("#first, #yahoo").prependTo('#sap');
equals( expected, jQuery('#sap').text(), "Check for prepending of jQuery object" );
reset();
@@ -1001,9 +1028,7 @@ test("before(String|Element|Array<Element>|jQuery)", function() {
equals( expected, jQuery('#en').text(), "Insert array of elements before" );
reset();
- expected = document.querySelectorAll ?
- "This is a normal link: diveintomarkTry them out:Yahoo" :
- "This is a normal link: Try them out:diveintomarkYahoo";
+ expected = "This is a normal link: diveintomarkTry them out:Yahoo";
jQuery('#yahoo').before(jQuery("#first, #mark"));
equals( expected, jQuery('#en').text(), "Insert jQuery before" );
});
@@ -1025,9 +1050,7 @@ test("insertBefore(String|Element|Array<Element>|jQuery)", function() {
equals( expected, jQuery('#en').text(), "Insert array of elements before" );
reset();
- expected = document.querySelectorAll ?
- "This is a normal link: diveintomarkTry them out:Yahoo" :
- "This is a normal link: Try them out:diveintomarkYahoo";
+ expected = "This is a normal link: diveintomarkTry them out:Yahoo";
jQuery("#first, #mark").insertBefore('#yahoo');
equals( expected, jQuery('#en').text(), "Insert jQuery before" );
});
@@ -1049,9 +1072,7 @@ test("after(String|Element|Array<Element>|jQuery)", function() {
equals( expected, jQuery('#en').text(), "Insert array of elements after" );
reset();
- expected = document.querySelectorAll ?
- "This is a normal link: YahoodiveintomarkTry them out:" :
- "This is a normal link: YahooTry them out:diveintomark";
+ expected = "This is a normal link: YahoodiveintomarkTry them out:";
jQuery('#yahoo').after(jQuery("#first, #mark"));
equals( expected, jQuery('#en').text(), "Insert jQuery after" );
});
@@ -1069,12 +1090,12 @@ test("insertAfter(String|Element|Array<Element>|jQuery)", function() {
reset();
expected = "This is a normal link: YahooTry them out:diveintomark";
- jQuery([document.getElementById('mark'), document.getElementById('first')]).insertAfter('#yahoo');
+ jQuery([document.getElementById('first'), document.getElementById('mark')]).insertAfter('#yahoo');
equals( expected, jQuery('#en').text(), "Insert array of elements after" );
reset();
- expected = "This is a normal link: YahooTry them out:diveintomark";
- jQuery("#mark, #first").insertAfter('#yahoo');
+ expected = "This is a normal link: YahoodiveintomarkTry them out:";
+ jQuery("#first, #mark").insertAfter('#yahoo');
equals( expected, jQuery('#en').text(), "Insert jQuery after" );
});
@@ -1146,7 +1167,7 @@ test("find(String)", function() {
});
test("clone()", function() {
- expect(20);
+ expect(28);
equals( 'This is a normal link: Yahoo', jQuery('#en').text(), 'Assert text for #en' );
var clone = jQuery('#yahoo').clone();
equals( 'Try them out:Yahoo', jQuery('#first').append(clone).text(), 'Check for clone' );
@@ -1166,6 +1187,31 @@ test("clone()", function() {
// using contents will get comments regular, text, and comment nodes
var cl = jQuery("#nonnodes").contents().clone();
ok( cl.length >= 2, "Check node,textnode,comment clone works (some browsers delete comments on clone)" );
+
+ var div = jQuery("
test
").click(function(){
+ ok( true, "Bound event still exists." );
+ });
+
+ div = div.clone(true).clone(true);
+ equals( div.length, 1, "One element cloned" );
+ equals( div[0].nodeName.toUpperCase(), "DIV", "DIV element cloned" );
+ div.trigger("click");
+
+ div = jQuery("").append([ document.createElement("table"), document.createElement("table") ]);
+ div.find("table").click(function(){
+ ok( true, "Bound event still exists." );
+ });
+
+ div = div.clone(true);
+ equals( div.length, 1, "One element cloned" );
+ equals( div[0].nodeName.toUpperCase(), "DIV", "DIV element cloned" );
+ div.find("table:last").trigger("click");
+
+ div = jQuery("").html('');
+
+ div = div.clone(true);
+ equals( div.length, 1, "One element cloned" );
+ equals( div[0].nodeName.toUpperCase(), "DIV", "DIV element cloned" );
});
if (!isLocal) {
@@ -1371,7 +1417,7 @@ test("html(String)", function() {
// this is needed, or the expando added by jQuery unique will yield a different html
j.find('b').removeData();
- equals( j.html().toLowerCase(), "bold", "Check node,textnode,comment with html()" );
+ equals( j.html().replace(/ xmlns="[^"]+"/g, "").toLowerCase(), "bold", "Check node,textnode,comment with html()" );
jQuery("#main").html("");
jQuery("#main select").html("");
@@ -1418,7 +1464,7 @@ test("closest()", function() {
isSet( jQuery("#main").closest("span,#html").get(), q("html"), "closest(span,#html)" );
isSet( jQuery("div:eq(1)").closest("div:first").get(), [], "closest(div:first)" );
- isSet( jQuery("div").closest("body:first div:last").get(), q("divWithNoTabIndex"), "closest(body:first div:last)" );
+ isSet( jQuery("div").closest("body:first div:last").get(), q("fx-tests"), "closest(body:first div:last)" );
});
test("not()", function() {
@@ -1444,7 +1490,7 @@ test("andSelf()", function() {
isSet( jQuery("#en").siblings().andSelf().get(), q("sndp", "sap","en"), "Check for siblings and self" );
isSet( jQuery("#foo").children().andSelf().get(), q("sndp", "en", "sap", "foo"), "Check for children and self" );
isSet( jQuery("#sndp, #en").parent().andSelf().get(), q("foo","sndp","en"), "Check for parent and self" );
- isSet( jQuery("#groups").parents("p, div").andSelf().get(), q("ap", "main", "groups"), "Check for parents and self" );
+ isSet( jQuery("#groups").parents("p, div").andSelf().get(), q("main", "ap", "groups"), "Check for parents and self" );
});
test("siblings([String])", function() {
@@ -1452,8 +1498,8 @@ test("siblings([String])", function() {
isSet( jQuery("#en").siblings().get(), q("sndp", "sap"), "Check for siblings" );
isSet( jQuery("#sndp").siblings(":has(code)").get(), q("sap"), "Check for filtered siblings (has code child element)" );
isSet( jQuery("#sndp").siblings(":has(a)").get(), q("en", "sap"), "Check for filtered siblings (has anchor child element)" );
- isSet( jQuery("#foo").siblings("form, b").get(), q("form", "lengthtest", "name-tests", "testForm", "floatTest"), "Check for multiple filters" );
- var set = document.querySelectorAll ? q("en", "sap", "sndp") : q("sndp", "sap", "en");
+ isSet( jQuery("#foo").siblings("form, b").get(), q("form", "floatTest", "lengthtest", "name-tests", "testForm"), "Check for multiple filters" );
+ var set = q("en", "sap", "sndp");
isSet( jQuery("#en, #sndp").siblings().get(), set, "Check for unique results from siblings" );
});
@@ -1478,7 +1524,7 @@ test("parents([String])", function() {
equals( jQuery("#groups").parents()[0].id, "ap", "Simple parents check" );
equals( jQuery("#groups").parents("p")[0].id, "ap", "Filtered parents check" );
equals( jQuery("#groups").parents("div")[0].id, "main", "Filtered parents check2" );
- isSet( jQuery("#groups").parents("p, div").get(), q("ap", "main"), "Check for multiple filters" );
+ isSet( jQuery("#groups").parents("p, div").get(), q("main", "ap"), "Check for multiple filters" );
isSet( jQuery("#en, #sndp").parents().get(), q("foo", "main", "dl", "body", "html"), "Check for unique results from parents" );
});
@@ -1500,13 +1546,16 @@ test("prev([String])", function() {
test("show()", function() {
expect(15);
- var pass = true, div = jQuery("div");
+ var pass = true, div = jQuery("#main div");
div.show().each(function(){
if ( this.style.display == "none" ) pass = false;
});
ok( pass, "Show" );
jQuery("#main").append('