X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=src%2Fjquery%2FcoreTest.js;h=db47856095e3a2f2ce98af219b3b24c083e7f2bb;hb=f96bf1041553775a94c1034c97e253e350217173;hp=ad5a30d2e173070c34b93a16c4c8d376d617aa3d;hpb=970eb0f020b7a57f313e438490b4018c5569f8b3;p=jquery.git diff --git a/src/jquery/coreTest.js b/src/jquery/coreTest.js index ad5a30d..db47856 100644 --- a/src/jquery/coreTest.js +++ b/src/jquery/coreTest.js @@ -12,7 +12,7 @@ test("Basic requirements", function() { }); test("$()", function() { - expect(3); + expect(5); var main = $("#main"); isSet( $("div p", main).get(), q("sndp", "en", "sap"), "Basic selector with jQuery object as context" ); @@ -21,17 +21,21 @@ test("$()", function() { $('

\r\n

'); ok( true, "Check for \\r and \\n in jQuery()" ); + /* // Disabled until we add this functionality in var pass = true; try { - var f = document.getElementById("iframe").contentDocument; - f.open(); - f.write(""); - f.close(); - $("
Testing
").appendTo(f.body); + $("
Testing
").appendTo(document.getElementById("iframe").contentDocument.body); } catch(e){ pass = false; } - ok( pass, "$('<tag>') needs optional document parameter to ease cross-frame DOM wrangling, see #968" ); + ok( pass, "$('<tag>') needs optional document parameter to ease cross-frame DOM wrangling, see #968" );*/ + + var code = $(""); + equals( code.length, 1, "Correct number of elements generated for code" ); + var img = $(""); + equals( img.length, 1, "Correct number of elements generated for img" ); + var div = $("

"); + equals( div.length, 4, "Correct number of elements generated for div hr code b" ); }); test("isFunction", function() { @@ -119,31 +123,43 @@ test("isFunction", function() { }); }); +test("$('html')", function() { + expect(2); + + reset(); + ok( $("")[0], "Creating a script" ); + + reset(); + ok( $("")[0], "Creating a link" ); + + reset(); +}); + test("length", function() { expect(1); - ok( $("div").length == 2, "Get Number of Elements Found" ); + ok( $("p").length == 6, "Get Number of Elements Found" ); }); test("size()", function() { expect(1); - ok( $("div").size() == 2, "Get Number of Elements Found" ); + ok( $("p").size() == 6, "Get Number of Elements Found" ); }); test("get()", function() { expect(1); - isSet( $("div").get(), q("main","foo"), "Get All Elements" ); + isSet( $("p").get(), q("firstp","ap","sndp","en","sap","first"), "Get All Elements" ); }); test("get(Number)", function() { expect(1); - ok( $("div").get(0) == document.getElementById("main"), "Get A Single Element" ); + ok( $("p").get(0) == document.getElementById("firstp"), "Get A Single Element" ); }); test("add(String|Element|Array)", function() { expect(7); isSet( $("#sndp").add("#en").add("#sap").get(), q("sndp", "en", "sap"), "Check elements from document" ); isSet( $("#sndp").add( $("#en")[0] ).add( $("#sap") ).get(), q("sndp", "en", "sap"), "Check elements from document" ); - ok( $([]).add($("#form")[0].elements).length > 13, "Check elements from array" ); + ok( $([]).add($("#form")[0].elements).length >= 13, "Check elements from array" ); var x = $([]).add($("

xxx

")).add($("

xxx

")); ok( x[0].id == "x1", "Check on-the-fly element1" ); @@ -197,17 +213,15 @@ test("attr(String)", function() { ok( $('#tAnchor5').attr('href') == "#5", 'Check for non-absolute href (an anchor)' ); }); -if ( location.protocol != "file:" ) { - test("attr(String) in XML Files", function() { - expect(2); - stop(); - $.get("data/dashboard.xml", function(xml) { - ok( $("locations", xml).attr("class") == "foo", "Check class attribute in XML document" ); - ok( $("location", xml).attr("for") == "bar", "Check for attribute in XML document" ); - start(); - }); +test("attr(String) in XML Files", function() { + expect(2); + stop(); + $.get("data/dashboard.xml", function(xml) { + ok( $("locations", xml).attr("class") == "foo", "Check class attribute in XML document" ); + ok( $("location", xml).attr("for") == "bar", "Check for attribute in XML document" ); + start(); }); -} +}); test("attr(String, Function)", function() { expect(2); @@ -225,7 +239,7 @@ test("attr(Hash)", function() { }); test("attr(String, Object)", function() { - expect(7); + expect(12); var div = $("div"); div.attr("foo", "bar"); var pass = true; @@ -246,23 +260,45 @@ test("attr(String, Object)", function() { ok( document.getElementById('text1').readOnly == true, 'Set readonly attribute' ); $("#text1").attr('readonly', false); ok( document.getElementById('text1').readOnly == false, 'Set readonly attribute' ); + $("#name").attr('maxlength', '5'); + ok( document.getElementById('name').maxLength == '5', 'Set maxlength attribute' ); + + reset(); + + var type = $("#check2").attr('type'); + var thrown = false; + try { + $("#check2").attr('type','hidden'); + } catch(e) { + thrown = true; + } + ok( thrown, "Exception thrown when trying to change type property" ); + equals( type, $("#check2").attr('type'), "Verify that you can't change the type of an input element" ); + + var check = document.createElement("input"); + 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 ( location.protocol != "file:" ) { - test("attr(String, Object)x", function() { - expect(2); - stop(); - $.get('data/dashboard.xml', function(xml) { - var titles = []; - $('tab', xml).each(function() { - titles.push($(this).attr('title')); - }); - ok( titles[0] == 'Location', 'attr() in XML context: Check first title' ); - ok( titles[1] == 'Users', 'attr() in XML context: Check second title' ); - start(); - }); +test("attr(String, Object) - Loaded via XML document", function() { + expect(2); + stop(); + $.get('data/dashboard.xml', function(xml) { + var titles = []; + $('tab', xml).each(function() { + titles.push($(this).attr('title')); + }); + ok( titles[0] == 'Location', 'attr() in XML context: Check first title' ); + ok( titles[1] == 'Users', 'attr() in XML context: Check second title' ); + start(); }); -} +}); test("css(String|Hash)", function() { expect(19); @@ -328,7 +364,7 @@ test("text()", function() { }); test("wrap(String|Element)", function() { - expect(7); + expect(6); var defaultText = 'Try them out:' var result = $('#first').wrap('
').text(); ok( defaultText == result, 'Check for wrapping of on-the-fly html' ); @@ -341,22 +377,52 @@ test("wrap(String|Element)", function() { ok( result.text() == defaultText, 'Check for element wrapping' ); reset(); - stop(); $('#check1').click(function() { var checkbox = this; ok( checkbox.checked, "Checkbox's state is erased after wrap() action, see #769" ); $(checkbox).wrap( '' ); ok( checkbox.checked, "Checkbox's state is erased after wrap() action, see #769" ); - // use a fade in to check state after this event handler has finished - setTimeout(function() { - ok( !checkbox.checked, "Checkbox's state is erased after wrap() action, see #769" ); - start(); - }, 100); }).click(); }); +test("wrapAll(String|Element)", function() { + expect(8); + var prev = $("#first")[0].previousSibling; + var p = $("#first")[0].parentNode; + var result = $('#first,#firstp').wrapAll('
'); + equals( result.parent().length, 1, 'Check for wrapping of on-the-fly html' ); + ok( $('#first').parent().parent().is('.red'), 'Check if wrapper has class "red"' ); + ok( $('#firstp').parent().parent().is('.red'), 'Check if wrapper has class "red"' ); + equals( $("#first").parent().parent()[0].previousSibling, prev, "Correct Previous Sibling" ); + equals( $("#first").parent().parent()[0].parentNode, p, "Correct Parent" ); + + reset(); + var prev = $("#first")[0].previousSibling; + var p = $("#first")[0].parentNode; + var result = $('#first,#firstp').wrapAll(document.getElementById('empty')); + equals( $("#first").parent()[0], $("#firstp").parent()[0], "Same Parent" ); + equals( $("#first").parent()[0].previousSibling, prev, "Correct Previous Sibling" ); + equals( $("#first").parent()[0].parentNode, p, "Correct Parent" ); +}); + +test("wrapInner(String|Element)", function() { + expect(6); + var num = $("#first").children().length; + var result = $('#first').wrapInner('
'); + equals( $("#first").children().length, 1, "Only one child" ); + ok( $("#first").children().is(".red"), "Verify Right Element" ); + equals( $("#first").children().children().children().length, num, "Verify Elements Intact" ); + + reset(); + var num = $("#first").children().length; + var result = $('#first').wrapInner(document.getElementById('empty')); + equals( $("#first").children().length, 1, "Only one child" ); + ok( $("#first").children().is("#empty"), "Verify Right Element" ); + equals( $("#first").children().children().length, num, "Verify Elements Intact" ); +}); + test("append(String|Element|Array<Element>|jQuery)", function() { - expect(17); + expect(18); var defaultText = 'Try them out:' var result = $('#first').append('buga'); ok( result.text() == defaultText + 'buga', 'Check if text appending works' ); @@ -405,7 +471,7 @@ test("append(String|Element|Array<Element>|jQuery)", function() { ok( pass, "Test for appending a DOM node to the contents of an IFrame" ); reset(); - $('
').appendTo('#form').append('test'); + $('
').appendTo('#form').append('test'); t( 'Append legend', '#legend', ['legend'] ); reset(); @@ -415,10 +481,14 @@ test("append(String|Element|Array<Element>|jQuery)", function() { $('#table').append(''); ok( $('#table colgroup').length, "Append colgroup" ); - $('#table colgroup').append(''); + $('#table colgroup').append(''); ok( $('#table colgroup col').length, "Append col" ); reset(); + $('#table').append(''); + ok( $('#table caption').length, "Append caption" ); + + reset(); $('form:last') .append('') .append(''); @@ -593,6 +663,54 @@ test("insertAfter(String|Element|Array<Element>|jQuery)", function() { ok( expected == $('#en').text(), "Insert jQuery after" ); }); +test("replaceWith(String|Element|Array<Element>|jQuery)", function() { + expect(10); + $('#yahoo').replaceWith('buga'); + ok( $("#replace")[0], 'Replace element with string' ); + ok( !$("#yahoo")[0], 'Verify that original element is gone, after string' ); + + reset(); + $('#yahoo').replaceWith(document.getElementById('first')); + ok( $("#first")[0], 'Replace element with element' ); + ok( !$("#yahoo")[0], 'Verify that original element is gone, after element' ); + + reset(); + $('#yahoo').replaceWith([document.getElementById('first'), document.getElementById('mark')]); + ok( $("#first")[0], 'Replace element with array of elements' ); + ok( $("#mark")[0], 'Replace element with array of elements' ); + ok( !$("#yahoo")[0], 'Verify that original element is gone, after array of elements' ); + + reset(); + $('#yahoo').replaceWith($("#first, #mark")); + ok( $("#first")[0], 'Replace element with set of elements' ); + ok( $("#mark")[0], 'Replace element with set of elements' ); + ok( !$("#yahoo")[0], 'Verify that original element is gone, after set of elements' ); +}); + +test("replaceAll(String|Element|Array<Element>|jQuery)", function() { + expect(10); + $('buga').replaceAll("#yahoo"); + ok( $("#replace")[0], 'Replace element with string' ); + ok( !$("#yahoo")[0], 'Verify that original element is gone, after string' ); + + reset(); + $(document.getElementById('first')).replaceAll("#yahoo"); + ok( $("#first")[0], 'Replace element with element' ); + ok( !$("#yahoo")[0], 'Verify that original element is gone, after element' ); + + reset(); + $([document.getElementById('first'), document.getElementById('mark')]).replaceAll("#yahoo"); + ok( $("#first")[0], 'Replace element with array of elements' ); + ok( $("#mark")[0], 'Replace element with array of elements' ); + ok( !$("#yahoo")[0], 'Verify that original element is gone, after array of elements' ); + + reset(); + $("#first, #mark").replaceAll("#yahoo"); + ok( $("#first")[0], 'Replace element with set of elements' ); + ok( $("#mark")[0], 'Replace element with set of elements' ); + ok( !$("#yahoo")[0], 'Verify that original element is gone, after set of elements' ); +}); + test("end()", function() { expect(3); ok( 'Yahoo' == $('#yahoo').parent().end().text(), 'Check for end' ); @@ -624,52 +742,65 @@ test("is(String)", function() { ok( !$('#mark').is('.link'), 'Check for class: Did not expect class "link"' ); ok( $('#simon').is('.blog.link'), 'Check for multiple classes: Expected classes "blog" and "link"' ); ok( !$('#simon').is('.blogTest'), 'Check for multiple classes: Expected classes "blog" and "link", but not "blogTest"' ); - ok( $('#en').is('[@lang="en"]'), 'Check for attribute: Expected attribute lang to be "en"' ); - ok( !$('#en').is('[@lang="de"]'), 'Check for attribute: Expected attribute lang to be "en", not "de"' ); - ok( $('#text1').is('[@type="text"]'), 'Check for attribute: Expected attribute type to be "text"' ); - ok( !$('#text1').is('[@type="radio"]'), 'Check for attribute: Expected attribute type to be "text", not "radio"' ); + ok( $('#en').is('[lang="en"]'), 'Check for attribute: Expected attribute lang to be "en"' ); + ok( !$('#en').is('[lang="de"]'), 'Check for attribute: Expected attribute lang to be "en", not "de"' ); + ok( $('#text1').is('[type="text"]'), 'Check for attribute: Expected attribute type to be "text"' ); + ok( !$('#text1').is('[type="radio"]'), 'Check for attribute: Expected attribute type to be "text", not "radio"' ); ok( $('#text2').is(':disabled'), 'Check for pseudoclass: Expected to be disabled' ); ok( !$('#text1').is(':disabled'), 'Check for pseudoclass: Expected not disabled' ); ok( $('#radio2').is(':checked'), 'Check for pseudoclass: Expected to be checked' ); ok( !$('#radio1').is(':checked'), 'Check for pseudoclass: Expected not checked' ); - ok( $('#foo').is('[p]'), 'Check for child: Expected a child "p" element' ); - ok( !$('#foo').is('[ul]'), 'Check for child: Did not expect "ul" element' ); - ok( $('#foo').is('[p][a][code]'), 'Check for childs: Expected "p", "a" and "code" child elements' ); - ok( !$('#foo').is('[p][a][code][ol]'), 'Check for childs: Expected "p", "a" and "code" child elements, but no "ol"' ); + ok( $('#foo').is(':has(p)'), 'Check for child: Expected a child "p" element' ); + ok( !$('#foo').is(':has(ul)'), 'Check for child: Did not expect "ul" element' ); + ok( $('#foo').is(':has(p):has(a):has(code)'), 'Check for childs: Expected "p", "a" and "code" child elements' ); + ok( !$('#foo').is(':has(p):has(a):has(code):has(ol)'), 'Check for childs: Expected "p", "a" and "code" child elements, but no "ol"' ); ok( !$('#foo').is(0), 'Expected false for an invalid expression - 0' ); ok( !$('#foo').is(null), 'Expected false for an invalid expression - null' ); ok( !$('#foo').is(''), 'Expected false for an invalid expression - ""' ); ok( !$('#foo').is(undefined), 'Expected false for an invalid expression - undefined' ); // test is() with comma-seperated expressions - ok( $('#en').is('[@lang="en"],[@lang="de"]'), 'Comma-seperated; Check for lang attribute: Expect en or de' ); - ok( $('#en').is('[@lang="de"],[@lang="en"]'), 'Comma-seperated; Check for lang attribute: Expect en or de' ); - ok( $('#en').is('[@lang="en"] , [@lang="de"]'), 'Comma-seperated; Check for lang attribute: Expect en or de' ); - ok( $('#en').is('[@lang="de"] , [@lang="en"]'), 'Comma-seperated; Check for lang attribute: Expect en or de' ); + ok( $('#en').is('[lang="en"],[lang="de"]'), 'Comma-seperated; Check for lang attribute: Expect en or de' ); + ok( $('#en').is('[lang="de"],[lang="en"]'), 'Comma-seperated; Check for lang attribute: Expect en or de' ); + ok( $('#en').is('[lang="en"] , [lang="de"]'), 'Comma-seperated; Check for lang attribute: Expect en or de' ); + ok( $('#en').is('[lang="de"] , [lang="en"]'), 'Comma-seperated; Check for lang attribute: Expect en or de' ); }); test("$.extend(Object, Object)", function() { - expect(2); + expect(10); + var settings = { xnumber1: 5, xnumber2: 7, xstring1: "peter", xstring2: "pan" }, options = { xnumber2: 1, xstring2: "x", xxx: "newstring" }, optionsCopy = { xnumber2: 1, xstring2: "x", xxx: "newstring" }, - merged = { xnumber1: 5, xnumber2: 1, xstring1: "peter", xstring2: "x", xxx: "newstring" }; + merged = { xnumber1: 5, xnumber2: 1, xstring1: "peter", xstring2: "x", xxx: "newstring" }, + deep1 = { foo: { bar: true } }, + deep1copy = { foo: { bar: true } }, + deep2 = { foo: { baz: true } }, + deep2copy = { foo: { baz: true } }, + deepmerged = { foo: { bar: true, baz: true } }; + jQuery.extend(settings, options); isObj( settings, merged, "Check if extended: settings must be extended" ); isObj( options, optionsCopy, "Check if not modified: options must not be modified" ); -}); -test("$.extend(Object, Object, Object, Object)", function() { - expect(4); + jQuery.extend(settings, null, options); + isObj( settings, merged, "Check if extended: settings must be extended" ); + isObj( options, optionsCopy, "Check if not modified: options must not be modified" ); + + jQuery.extend(true, deep1, deep2); + isObj( deep1.foo, deepmerged.foo, "Check if foo: settings must be extended" ); + isObj( deep2.foo, deep2copy.foo, "Check if not deep2: options must not be modified" ); + var defaults = { xnumber1: 5, xnumber2: 7, xstring1: "peter", xstring2: "pan" }, defaultsCopy = { xnumber1: 5, xnumber2: 7, xstring1: "peter", xstring2: "pan" }, options1 = { xnumber2: 1, xstring2: "x" }, options1Copy = { xnumber2: 1, xstring2: "x" }, options2 = { xstring2: "xx", xxx: "newstringx" }, options2Copy = { xstring2: "xx", xxx: "newstringx" }, - merged = { xnumber1: 5, xnumber2: 1, xstring1: "peter", xstring2: "xx", xxx: "newstringx" }; + merged2 = { xnumber1: 5, xnumber2: 1, xstring1: "peter", xstring2: "xx", xxx: "newstringx" }; + var settings = jQuery.extend({}, defaults, options1, options2); - isObj( settings, merged, "Check if extended: settings must be extended" ); + isObj( settings, merged2, "Check if extended: settings must be extended" ); isObj( defaults, defaultsCopy, "Check if not modified: options1 must not be modified" ); isObj( options1, options1Copy, "Check if not modified: options1 must not be modified" ); isObj( options2, options2Copy, "Check if not modified: options2 must not be modified" ); @@ -690,7 +821,7 @@ test("val(String)", function() { }); test("html(String)", function() { - expect(2); + expect(1); var div = $("div"); div.html("test"); var pass = true; @@ -698,13 +829,14 @@ test("html(String)", function() { if ( div.get(i).childNodes.length == 0 ) pass = false; } ok( pass, "Set HTML" ); - - $("#main").html('').evalScripts(); + + // Ccommented out until we can resolve it + // $("#main").html('').evalScripts(); }); test("filter()", function() { expect(4); - isSet( $("input").filter(":checked").get(), q("radio2", "check1"), "filter(String)" ); + isSet( $("#form input").filter(":checked").get(), q("radio2", "check1"), "filter(String)" ); isSet( $("p").filter("#ap, #sndp").get(), q("ap", "sndp"), "filter('String, String')" ); isSet( $("p").filter("#ap,#sndp").get(), q("ap", "sndp"), "filter('String,String')" ); isSet( $("p").filter(function() { return !$("a", this).length }).get(), q("sndp", "first"), "filter(Function)" ); @@ -717,41 +849,58 @@ test("not()", function() { isSet( $("p").not($("#ap, #sndp, .result")).get(), q("firstp", "en", "sap", "first"), "not(jQuery)" ); }); -test("siblings([String])", function() { +test("andSelf()", function() { expect(4); + isSet( $("#en").siblings().andSelf().get(), q("sndp", "sap","en"), "Check for siblings and self" ); + isSet( $("#foo").children().andSelf().get(), q("sndp", "en", "sap", "foo"), "Check for children and self" ); + isSet( $("#en, #sndp").parent().andSelf().get(), q("foo","en","sndp"), "Check for parent and self" ); + isSet( $("#groups").parents("p, div").andSelf().get(), q("ap", "main", "groups"), "Check for parents and self" ); +}); + +test("siblings([String])", function() { + expect(5); isSet( $("#en").siblings().get(), q("sndp", "sap"), "Check for siblings" ); - isSet( $("#sndp").siblings("[code]").get(), q("sap"), "Check for filtered siblings (has code child element)" ); - isSet( $("#sndp").siblings("[a]").get(), q("en", "sap"), "Check for filtered siblings (has anchor child element)" ); - isSet( $("#foo").siblings("form, b").get(), q("form", "lengthtest", "floatTest"), "Check for multiple filters" ); + isSet( $("#sndp").siblings(":has(code)").get(), q("sap"), "Check for filtered siblings (has code child element)" ); + isSet( $("#sndp").siblings(":has(a)").get(), q("en", "sap"), "Check for filtered siblings (has anchor child element)" ); + isSet( $("#foo").siblings("form, b").get(), q("form", "lengthtest", "testForm", "floatTest"), "Check for multiple filters" ); + isSet( $("#en, #sndp").siblings().get(), q("sndp", "sap", "en"), "Check for unique results from siblings" ); }); test("children([String])", function() { expect(3); isSet( $("#foo").children().get(), q("sndp", "en", "sap"), "Check for children" ); - isSet( $("#foo").children("[code]").get(), q("sndp", "sap"), "Check for filtered children" ); + isSet( $("#foo").children(":has(code)").get(), q("sndp", "sap"), "Check for filtered children" ); isSet( $("#foo").children("#en, #sap").get(), q("en", "sap"), "Check for multiple filters" ); }); -test("parent[s]([String])", function() { - expect(8); +test("parent([String])", function() { + expect(5); ok( $("#groups").parent()[0].id == "ap", "Simple parent check" ); ok( $("#groups").parent("p")[0].id == "ap", "Filtered parent check" ); ok( $("#groups").parent("div").length == 0, "Filtered parent check, no match" ); ok( $("#groups").parent("div, p")[0].id == "ap", "Check for multiple filters" ); + isSet( $("#en, #sndp").parent().get(), q("foo"), "Check for unique results from parent" ); +}); +test("parents([String])", function() { + expect(5); ok( $("#groups").parents()[0].id == "ap", "Simple parents check" ); ok( $("#groups").parents("p")[0].id == "ap", "Filtered parents check" ); ok( $("#groups").parents("div")[0].id == "main", "Filtered parents check2" ); isSet( $("#groups").parents("p, div").get(), q("ap", "main"), "Check for multiple filters" ); + isSet( $("#en, #sndp").parents().get(), q("foo", "main", "dl", "body", "html"), "Check for unique results from parents" ); }); -test("next/prev([String])", function() { - expect(8); +test("next([String])", function() { + expect(4); ok( $("#ap").next()[0].id == "foo", "Simple next check" ); ok( $("#ap").next("div")[0].id == "foo", "Filtered next check" ); ok( $("#ap").next("p").length == 0, "Filtered next check, no match" ); ok( $("#ap").next("div, p")[0].id == "foo", "Multiple filters" ); +}); +test("prev([String])", function() { + expect(4); ok( $("#foo").prev()[0].id == "ap", "Simple prev check" ); ok( $("#foo").prev("p")[0].id == "ap", "Filtered prev check" ); ok( $("#foo").prev("div").length == 0, "Filtered prev check, no match" ); @@ -879,10 +1028,38 @@ test("empty()", function() { ok( $("#ap").children().length == 4, "Check elements are not removed" ); }); -test("eq(), gt(), lt(), contains()", function() { +test("slice()", function() { expect(4); - ok( $("#ap a").eq(1)[0].id == "groups", "eq()" ); - isSet( $("#ap a").gt(0).get(), q("groups", "anchor1", "mark"), "gt()" ); - isSet( $("#ap a").lt(3).get(), q("google", "groups", "anchor1"), "lt()" ); - isSet( $("#foo a").contains("log").get(), q("anchor2", "simon"), "contains()" ); + isSet( $("#ap a").slice(1,2), q("groups"), "slice(1,2)" ); + isSet( $("#ap a").slice(1), q("groups", "anchor1", "mark"), "slice(1)" ); + isSet( $("#ap a").slice(0,3), q("google", "groups", "anchor1"), "slice(0,3)" ); + isSet( $("#ap a").slice(-1), q("mark"), "slice(-1)" ); +}); + +test("map()", function() { + expect(2); + + isSet( + $("#ap").map(function(){ + return $(this).find("a").get(); + }), + q("google", "groups", "anchor1", "mark"), + "Array Map" + ); + + isSet( + $("#ap > a").map(function(){ + return this.parentNode; + }), + q("ap","ap","ap"), + "Single Map" + ); +}); + +test("contents()", function() { + expect(2); + equals( $("#ap").contents().length, 9, "Check element contents" ); + ok( $("#iframe").contents()[0], "Check existance of IFrame document" ); + // Disabled, randomly fails + //ok( $("#iframe").contents()[0].body, "Check existance of IFrame body" ); });