X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=test%2Funit%2Fcore.js;h=1f0850c02468485b8bd770ab53696b023c308613;hb=4afa60835146e71c0e57b492a1cca278eaf1ef9c;hp=ce0d05534c8ceafddae80bc43496c3223b2e3518;hpb=46ee77bcc3be1c84e95b510ca8a0ce1e19e8ea12;p=jquery.git diff --git a/test/unit/core.js b/test/unit/core.js index ce0d055..1f0850c 100644 --- a/test/unit/core.js +++ b/test/unit/core.js @@ -451,7 +451,7 @@ test("attr(Hash)", function() { }); test("attr(String, Object)", function() { - expect(17); + expect(19); var div = jQuery("div").attr("foo", "bar"); fail = false; for ( var i = 0; i < div.size(); i++ ) { @@ -515,6 +515,16 @@ test("attr(String, Object)", function() { } ok( thrown, "Exception thrown when trying to change type property" ); equals( "checkbox", jQuery(check).attr('type'), "Verify that you can change the type of an input element that isn't in the DOM" ); + + var check = jQuery(""); + var thrown = true; + try { + check.attr('type','checkbox'); + } catch(e) { + thrown = false; + } + 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" ); }); if ( !isLocal ) { @@ -704,9 +714,9 @@ test("wrap(String|Element)", function() { test("wrapAll(String|Element)", function() { expect(8); - var prev = jQuery("#first")[0].previousSibling; - var p = jQuery("#first")[0].parentNode; - var result = jQuery('#first,#firstp').wrapAll('
'); + var prev = jQuery("#firstp")[0].previousSibling; + var p = jQuery("#firstp,#first")[0].parentNode; + var result = jQuery('#firstp,#first').wrapAll('
'); equals( result.parent().length, 1, 'Check for wrapping of on-the-fly html' ); ok( jQuery('#first').parent().parent().is('.red'), 'Check if wrapper has class "red"' ); ok( jQuery('#firstp').parent().parent().is('.red'), 'Check if wrapper has class "red"' ); @@ -714,9 +724,9 @@ test("wrapAll(String|Element)", function() { equals( jQuery("#first").parent().parent()[0].parentNode, p, "Correct Parent" ); reset(); - var prev = jQuery("#first")[0].previousSibling; + var prev = jQuery("#firstp")[0].previousSibling; var p = jQuery("#first")[0].parentNode; - var result = jQuery('#first,#firstp').wrapAll(document.getElementById('empty')); + var result = jQuery('#firstp,#first').wrapAll(document.getElementById('empty')); equals( jQuery("#first").parent()[0], jQuery("#firstp").parent()[0], "Same Parent" ); equals( jQuery("#first").parent()[0].previousSibling, prev, "Correct Previous Sibling" ); equals( jQuery("#first").parent()[0].parentNode, p, "Correct Parent" ); @@ -756,7 +766,9 @@ test("append(String|Element|Array<Element>|jQuery)", function() { equals( expected, jQuery('#sap').text(), "Check for appending of array of elements" ); reset(); - expected = "This link has class=\"blog\": Simon Willison's WeblogTry them out:Yahoo"; + 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"; jQuery('#sap').append(jQuery("#first, #yahoo")); equals( expected, jQuery('#sap').text(), "Check for appending of jQuery object" ); @@ -840,7 +852,9 @@ test("appendTo(String|Element|Array<Element>|jQuery)", function() { equals( expected, jQuery('#sap').text(), "Check for appending of array of elements" ); reset(); - expected = "This link has class=\"blog\": Simon Willison's WeblogTry them out:Yahoo"; + 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"; jQuery("#first, #yahoo").appendTo('#sap'); equals( expected, jQuery('#sap').text(), "Check for appending of jQuery object" ); @@ -867,7 +881,9 @@ test("prepend(String|Element|Array<Element>|jQuery)", function() { 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"; + 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"; jQuery('#sap').prepend(jQuery("#first, #yahoo")); equals( expected, jQuery('#sap').text(), "Check for prepending of jQuery object" ); }); @@ -898,7 +914,7 @@ test("prependTo(String|Element|Array<Element>|jQuery)", function() { jQuery('').prependTo('form:last'); jQuery('').prependTo('form:last'); - t( "Prepend Select", "#prependSelect1, #prependSelect2", ["prependSelect1", "prependSelect2"] ); + t( "Prepend Select", "#prependSelect2, #prependSelect1", ["prependSelect2", "prependSelect1"] ); }); test("before(String|Element|Array<Element>|jQuery)", function() { @@ -918,7 +934,9 @@ test("before(String|Element|Array<Element>|jQuery)", function() { equals( expected, jQuery('#en').text(), "Insert array of elements before" ); reset(); - expected = "This is a normal link: Try them out:diveintomarkYahoo"; + expected = document.querySelectorAll ? + "This is a normal link: diveintomarkTry them out:Yahoo" : + "This is a normal link: Try them out:diveintomarkYahoo"; jQuery('#yahoo').before(jQuery("#first, #mark")); equals( expected, jQuery('#en').text(), "Insert jQuery before" ); }); @@ -940,7 +958,9 @@ test("insertBefore(String|Element|Array<Element>|jQuery)", function() { equals( expected, jQuery('#en').text(), "Insert array of elements before" ); reset(); - expected = "This is a normal link: Try them out:diveintomarkYahoo"; + expected = document.querySelectorAll ? + "This is a normal link: diveintomarkTry them out:Yahoo" : + "This is a normal link: Try them out:diveintomarkYahoo"; jQuery("#first, #mark").insertBefore('#yahoo'); equals( expected, jQuery('#en').text(), "Insert jQuery before" ); }); @@ -962,7 +982,9 @@ test("after(String|Element|Array<Element>|jQuery)", function() { equals( expected, jQuery('#en').text(), "Insert array of elements after" ); reset(); - expected = "This is a normal link: YahooTry them out:diveintomark"; + expected = document.querySelectorAll ? + "This is a normal link: YahoodiveintomarkTry them out:" : + "This is a normal link: YahooTry them out:diveintomark"; jQuery('#yahoo').after(jQuery("#first, #mark")); equals( expected, jQuery('#en').text(), "Insert jQuery after" ); }); @@ -1126,6 +1148,23 @@ test("is(String)", function() { ok( jQuery('#en').is('[lang="de"] , [lang="en"]'), 'Comma-seperated; Check for lang attribute: Expect en or de' ); }); +test("jQuery.merge()", function() { + expect(6); + + var parse = jQuery.merge; + + same( parse([],[]), [], "Empty arrays" ); + + same( parse([1],[2]), [1,2], "Basic" ); + same( parse([1,2],[3,4]), [1,2,3,4], "Basic" ); + + same( parse([1,2],[]), [1,2], "Second empty" ); + same( parse([],[1,2]), [1,2], "First empty" ); + + // Fixed at [5998], #3641 + same( parse([-2,-1], [0,1,2]), [-2,-1,0,1,2], "Second array including a zero (falsy)"); +}); + test("jQuery.extend(Object, Object)", function() { expect(20); @@ -1297,6 +1336,14 @@ test("filter()", function() { equals( j.filter("[name]").length, 0, "Check node,textnode,comment to filter the one span" ); }); +test("closest()", function() { + expect(4); + isSet( jQuery("body").closest("body").get(), q("body"), "closest(body)" ); + isSet( jQuery("body").closest("html").get(), q("html"), "closest(html)" ); + isSet( jQuery("body").closest("div").get(), [], "closest(div)" ); + isSet( jQuery("#main").closest("span,#html").get(), q("html"), "closest(span,#html)" ); +}); + test("not()", function() { expect(8); equals( jQuery("#main > p#ap > a").not("#google").length, 2, "not('selector')" ); @@ -1315,7 +1362,7 @@ test("andSelf()", function() { expect(4); 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("#en, #sndp").parent().andSelf().get(), q("foo","en","sndp"), "Check for parent 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" ); }); @@ -1325,7 +1372,8 @@ test("siblings([String])", function() { 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", "testForm", "floatTest"), "Check for multiple filters" ); - isSet( jQuery("#en, #sndp").siblings().get(), q("sndp", "sap", "en"), "Check for unique results from siblings" ); + var set = document.querySelectorAll ? q("en", "sap", "sndp") : q("sndp", "sap", "en"); + isSet( jQuery("#en, #sndp").siblings().get(), set, "Check for unique results from siblings" ); }); test("children([String])", function() { @@ -1445,13 +1493,20 @@ test("removeClass(String) - simple", function() { }); test("toggleClass(String)", function() { - expect(3); + expect(6); var e = jQuery("#firstp"); ok( !e.is(".test"), "Assert class not present" ); e.toggleClass("test"); ok( e.is(".test"), "Assert class present" ); e.toggleClass("test"); ok( !e.is(".test"), "Assert class not present" ); + + 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() { @@ -1523,100 +1578,6 @@ test("jQuery.className", function() { ok( c.has(x, "bar"), "Check has2" ); }); -test("jQuery.data", function() { - expect(5); - var div = jQuery("#foo")[0]; - equals( jQuery.data(div, "test"), undefined, "Check for no data exists" ); - jQuery.data(div, "test", "success"); - equals( jQuery.data(div, "test"), "success", "Check for added data" ); - jQuery.data(div, "test", "overwritten"); - equals( jQuery.data(div, "test"), "overwritten", "Check for overwritten data" ); - jQuery.data(div, "test", undefined); - equals( jQuery.data(div, "test"), "overwritten", "Check that data wasn't removed"); - jQuery.data(div, "test", null); - ok( jQuery.data(div, "test") === null, "Check for null data"); -}); - -test(".data()", function() { - expect(18); - var div = jQuery("#foo"); - equals( div.data("test"), undefined, "Check for no data exists" ); - div.data("test", "success"); - equals( div.data("test"), "success", "Check for added data" ); - div.data("test", "overwritten"); - equals( div.data("test"), "overwritten", "Check for overwritten data" ); - div.data("test", undefined); - equals( div.data("test"), "overwritten", "Check that data wasn't removed"); - div.data("test", null); - ok( div.data("test") === null, "Check for null data"); - - div.data("test", "overwritten"); - var hits = {test:0}, gets = {test:0}; - - div - .bind("setData",function(e,key,value){ hits[key] += value; }) - .bind("setData.foo",function(e,key,value){ hits[key] += value; }) - .bind("getData",function(e,key){ gets[key] += 1; }) - .bind("getData.foo",function(e,key){ gets[key] += 3; }); - - div.data("test.foo", 2); - equals( div.data("test"), "overwritten", "Check for original data" ); - equals( div.data("test.foo"), 2, "Check for namespaced data" ); - equals( div.data("test.bar"), "overwritten", "Check for unmatched namespace" ); - equals( hits.test, 2, "Check triggered setter functions" ); - equals( gets.test, 5, "Check triggered getter functions" ); - - hits.test = 0; - gets.test = 0; - - div.data("test", 1); - equals( div.data("test"), 1, "Check for original data" ); - equals( div.data("test.foo"), 2, "Check for namespaced data" ); - equals( div.data("test.bar"), 1, "Check for unmatched namespace" ); - equals( hits.test, 1, "Check triggered setter functions" ); - equals( gets.test, 5, "Check triggered getter functions" ); - - hits.test = 0; - gets.test = 0; - - div - .bind("getData",function(e,key){ return key + "root"; }) - .bind("getData.foo",function(e,key){ return key + "foo"; }); - - equals( div.data("test"), "testroot", "Check for original data" ); - equals( div.data("test.foo"), "testfoo", "Check for namespaced data" ); - equals( div.data("test.bar"), "testroot", "Check for unmatched namespace" ); -}); - -test("jQuery.removeData", function() { - expect(1); - var div = jQuery("#foo")[0]; - jQuery.data(div, "test", "testing"); - jQuery.removeData(div, "test"); - equals( jQuery.data(div, "test"), undefined, "Check removal of data" ); -}); - -test(".removeData()", function() { - expect(6); - var div = jQuery("#foo"); - div.data("test", "testing"); - div.removeData("test"); - equals( div.data("test"), undefined, "Check removal of data" ); - - div.data("test", "testing"); - div.data("test.foo", "testing2"); - div.removeData("test.bar"); - equals( div.data("test.foo"), "testing2", "Make sure data is intact" ); - equals( div.data("test"), "testing", "Make sure data is intact" ); - - div.removeData("test"); - equals( div.data("test.foo"), "testing2", "Make sure data is intact" ); - equals( div.data("test"), undefined, "Make sure data is intact" ); - - div.removeData("test.foo"); - equals( div.data("test.foo"), undefined, "Make sure data is intact" ); -}); - test("remove()", function() { expect(6); jQuery("#ap").children().remove();