X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;ds=inline;f=test%2Funit%2Fcore.js;h=5067205c51fdd5757d69e66931b998f95c71496c;hb=ad7577a084136c48c1544e4831b1d7e69dc55f2a;hp=e1c373301b3098118b5ff5eaa349d2058596cb11;hpb=d3141dcdba883ef87c8cd0b51a1ff9b61d153ffa;p=jquery.git
diff --git a/test/unit/core.js b/test/unit/core.js
index e1c3733..5067205 100644
--- a/test/unit/core.js
+++ b/test/unit/core.js
@@ -53,7 +53,7 @@ test("jQuery()", function() {
});
test("selector state", function() {
- expect(26);
+ 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" );
@@ -80,6 +84,11 @@ test("selector state", function() {
test = jQuery("#main", document.body);
equals( test.selector, "#main", "#main Selector" );
equals( test.context, document.body, "#main Context" );
+
+ // Test cloning
+ test = jQuery(test);
+ equals( test.selector, "#main", "#main Selector" );
+ equals( test.context, document.body, "#main Context" );
test = jQuery(document.body).find("#main");
equals( test.selector, "#main", "#main find Selector" );
@@ -141,7 +150,7 @@ test("browser", function() {
};
for (var i in browsers) {
var v = i.toLowerCase().match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ); // RegEx from Core jQuery.browser.version check
- version = v ? v[1] : null;
+ var version = v ? v[1] : null;
equals( version, browsers[i], "Checking UA string" );
}
});
@@ -251,18 +260,16 @@ test("isFunction", function() {
});
});
-var foo = false;
-
test("jQuery('html')", function() {
expect(8);
reset();
- foo = false;
- var s = jQuery("")[0];
+ jQuery.foo = false;
+ var s = jQuery("")[0];
ok( s, "Creating a script" );
- ok( !foo, "Make sure the script wasn't executed prematurely" );
- jQuery("body").append("");
- ok( foo, "Executing a scripts contents in the right context" );
+ ok( !jQuery.foo, "Make sure the script wasn't executed prematurely" );
+ jQuery("body").append("");
+ ok( jQuery.foo, "Executing a scripts contents in the right context" );
reset();
ok( jQuery("")[0], "Creating a link" );
@@ -380,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' );
@@ -398,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);
@@ -455,7 +464,7 @@ test("attr(Hash)", function() {
test("attr(String, Object)", function() {
expect(19);
- var div = jQuery("div").attr("foo", "bar");
+ var div = jQuery("div").attr("foo", "bar"),
fail = false;
for ( var i = 0; i < div.size(); i++ ) {
if ( div.get(i).getAttribute('foo') != "bar" ){
@@ -547,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'), undefined, '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() {
@@ -607,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');
@@ -746,7 +754,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' );
@@ -771,6 +779,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() {
@@ -827,9 +840,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" );
@@ -896,7 +907,7 @@ test("append(String|Element|Array<Element>|jQuery)", function() {
});
test("appendTo(String|Element|Array<Element>|jQuery)", function() {
- expect(6);
+ expect(7);
var defaultText = 'Try them out:'
jQuery('buga').appendTo('#first');
equals( jQuery("#first").text(), defaultText + 'buga', 'Check if text appending works' );
@@ -913,9 +924,10 @@ test("appendTo(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";
+ ok( jQuery(document.createElement("script")).appendTo("body").length, "Make sure a disconnected script can be appended." );
+
+ reset();
+ 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" );
@@ -942,9 +954,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" );
});
@@ -995,9 +1005,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" );
});
@@ -1019,9 +1027,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" );
});
@@ -1043,9 +1049,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" );
});
@@ -1140,7 +1144,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' );
@@ -1160,6 +1164,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) {
@@ -1345,10 +1374,11 @@ test("val(String/Number)", function() {
j.removeAttr("value");
});
-var scriptorder = 0;
-
test("html(String)", function() {
- expect(13);
+ expect(17);
+
+ jQuery.scriptorder = 0;
+
var div = jQuery("#main > div");
div.html("test");
var pass = true;
@@ -1364,7 +1394,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("");
@@ -1374,6 +1404,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('');
+
stop();
jQuery("#main").html('');
@@ -1381,7 +1415,7 @@ test("html(String)", function() {
jQuery("#main").html('foo ');
// it was decided that waiting to execute ALL scripts makes sense since nested ones have to wait anyway so this test case is changed, see #1959
- jQuery("#main").html("