Complete overhaul of the Ajax test suite, it's now passing in all browsers. In order...
[jquery.git] / src / jquery / coreTest.js
index b65877a..289a416 100644 (file)
@@ -116,6 +116,18 @@ test("isFunction", function() {
        });
 });
 
+test("$('html')", function() {
+       expect(2);
+       
+       reset();
+       ok( $("<script>var foo='test';</script>")[0], "Creating a script" );
+       
+       reset();
+       ok( $("<link rel='stylesheet'/>")[0], "Creating a link" );
+       
+       reset();
+});
+
 test("length", function() {
        expect(1);
        ok( $("p").length == 6, "Get Number of Elements Found" );
@@ -194,17 +206,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);
@@ -247,21 +257,19 @@ test("attr(String, Object)", function() {
        ok( document.getElementById('name').maxLength == '5', 'Set maxlength attribute' );
 });
 
-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);
@@ -652,27 +660,40 @@ test("is(String)", function() {
 });
 
 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(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" );
@@ -722,11 +743,12 @@ test("not()", function() {
 });
 
 test("siblings([String])", function() {
-       expect(4);
+       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( $("#en, #sndp").siblings().get(), q("sndp", "sap", "en"), "Check for unique results from siblings" );
 });
 
 test("children([String])", function() {
@@ -736,26 +758,34 @@ test("children([String])", function() {
        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" );