Fix for #1162
[jquery.git] / src / jquery / coreTest.js
index 05fd026..4776a66 100644 (file)
@@ -12,7 +12,7 @@ test("Basic requirements", function() {
 });
 
 test("$()", function() {
-       expect(3);
+       expect(4);
        
        var main = $("#main");
        isSet( $("div p", main).get(), q("sndp", "en", "sap"), "Basic selector with jQuery object as context" );
@@ -32,6 +32,9 @@ test("$()", function() {
                pass = false;
        }
        ok( pass, "$('<tag>') needs optional document parameter to ease cross-frame DOM wrangling, see #968" );
+       
+       var form = $("form")[0];
+       equals( 15, $(form.elements).size(), "$(form.elements)" );
 });
 
 test("isFunction", function() {
@@ -356,14 +359,14 @@ test("wrap(String|Element)", function() {
 });
 
 test("append(String|Element|Array<Element>|jQuery)", function() {
-       expect(13);
+       expect(17);
        var defaultText = 'Try them out:'
        var result = $('#first').append('<b>buga</b>');
        ok( result.text() == defaultText + 'buga', 'Check if text appending works' );
        ok( $('#select3').append('<option value="appendTest">Append Test</option>').find('option:last-child').attr('value') == 'appendTest', 'Appending html options to select element');
        
        reset();
-       expected = "This link has class=\"blog\": Simon Willison's WeblogTry them out:";
+       var expected = "This link has class=\"blog\": Simon Willison's WeblogTry them out:";
        $('#sap').append(document.getElementById('first'));
        ok( expected == $('#sap').text(), "Check for appending of element" );
        
@@ -405,20 +408,36 @@ test("append(String|Element|Array&lt;Element&gt;|jQuery)", function() {
        ok( pass, "Test for appending a DOM node to the contents of an IFrame" );
        
        reset();
-       $('#select1').appendTo('#foo');
-       t( 'Append select', '#foo select', ['select1'] );
+       $('<fieldset>').appendTo('#form').append('<legend id="legend">test</legend>');
+       t( 'Append legend', '#legend', ['legend'] );
+       
+       reset();
+       $('#select1').append('<OPTION>Test</OPTION>');
+       ok( $('#select1 option:last').text() == "Test", "Appending &lt;OPTION&gt; (all caps)" );
+       
+       $('#table').append('<colgroup></colgroup>');
+       ok( $('#table colgroup').length, "Append colgroup" );
        
+       $('#table colgroup').append('<col>');
+       ok( $('#table colgroup col').length, "Append col" );
+       
+       reset();
+       $('form:last')
+               .append('<select id="appendSelect1"></select>')
+               .append('<select id="appendSelect2"><option>Test</option></select>');
+       
+       t( "Append Select", "#appendSelect1, #appendSelect2", ["appendSelect1", "appendSelect2"] );
 });
 
 test("appendTo(String|Element|Array&lt;Element&gt;|jQuery)", function() {
-       expect(5);
+       expect(6);
        var defaultText = 'Try them out:'
        $('<b>buga</b>').appendTo('#first');
        ok( $("#first").text() == defaultText + 'buga', 'Check if text appending works' );
        ok( $('<option value="appendTest">Append Test</option>').appendTo('#select3').parent().find('option:last-child').attr('value') == 'appendTest', 'Appending html options to select element');
        
        reset();
-       expected = "This link has class=\"blog\": Simon Willison's WeblogTry them out:";
+       var expected = "This link has class=\"blog\": Simon Willison's WeblogTry them out:";
        $(document.getElementById('first')).appendTo('#sap');
        ok( expected == $('#sap').text(), "Check for appending of element" );
        
@@ -431,6 +450,10 @@ test("appendTo(String|Element|Array&lt;Element&gt;|jQuery)", function() {
        expected = "This link has class=\"blog\": Simon Willison's WeblogTry them out:Yahoo";
        $("#first, #yahoo").appendTo('#sap');
        ok( expected == $('#sap').text(), "Check for appending of jQuery object" );
+       
+       reset();
+       $('#select1').appendTo('#foo');
+       t( 'Append select', '#foo select', ['select1'] );
 });
 
 test("prepend(String|Element|Array&lt;Element&gt;|jQuery)", function() {
@@ -441,7 +464,7 @@ test("prepend(String|Element|Array&lt;Element&gt;|jQuery)", function() {
        ok( $('#select3').prepend('<option value="prependTest">Prepend Test</option>').find('option:first-child').attr('value') == 'prependTest', 'Prepending html options to select element');
        
        reset();
-       expected = "Try them out:This link has class=\"blog\": Simon Willison's Weblog";
+       var expected = "Try them out:This link has class=\"blog\": Simon Willison's Weblog";
        $('#sap').prepend(document.getElementById('first'));
        ok( expected == $('#sap').text(), "Check for prepending of element" );
 
@@ -457,14 +480,14 @@ test("prepend(String|Element|Array&lt;Element&gt;|jQuery)", function() {
 });
 
 test("prependTo(String|Element|Array&lt;Element&gt;|jQuery)", function() {
-       expect(5);
+       expect(6);
        var defaultText = 'Try them out:'
        $('<b>buga</b>').prependTo('#first');
        ok( $('#first').text() == 'buga' + defaultText, 'Check if text prepending works' );
        ok( $('<option value="prependTest">Prepend Test</option>').prependTo('#select3').parent().find('option:first-child').attr('value') == 'prependTest', 'Prepending html options to select element');
        
        reset();
-       expected = "Try them out:This link has class=\"blog\": Simon Willison's Weblog";
+       var expected = "Try them out:This link has class=\"blog\": Simon Willison's Weblog";
        $(document.getElementById('first')).prependTo('#sap');
        ok( expected == $('#sap').text(), "Check for prepending of element" );
 
@@ -477,6 +500,12 @@ test("prependTo(String|Element|Array&lt;Element&gt;|jQuery)", function() {
        expected = "Try them out:YahooThis link has class=\"blog\": Simon Willison's Weblog";
        $("#yahoo, #first").prependTo('#sap');
        ok( expected == $('#sap').text(), "Check for prepending of jQuery object" );
+       
+       reset();
+       $('<select id="prependSelect1"></select>').prependTo('form:last');
+       $('<select id="prependSelect2"><option>Test</option></select>').prependTo('form:last');
+       
+       t( "Prepend Select", "#prependSelect1, #prependSelect2", ["prependSelect1", "prependSelect2"] );
 });
 
 test("before(String|Element|Array&lt;Element&gt;|jQuery)", function() {
@@ -629,8 +658,8 @@ test("$.extend(Object, Object)", function() {
                optionsCopy = { xnumber2: 1, xstring2: "x", xxx: "newstring" },
                merged = { xnumber1: 5, xnumber2: 1, xstring1: "peter", xstring2: "x", xxx: "newstring" };
        jQuery.extend(settings, options);
-       isSet( settings, merged, "Check if extended: settings must be extended" );
-       isSet ( options, optionsCopy, "Check if not modified: options must not be modified" );
+       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() {
@@ -643,10 +672,10 @@ test("$.extend(Object, Object, Object, Object)", function() {
                options2Copy = { xstring2: "xx", xxx: "newstringx" },
                merged = { xnumber1: 5, xnumber2: 1, xstring1: "peter", xstring2: "xx", xxx: "newstringx" };
        var settings = jQuery.extend({}, defaults, options1, options2);
-       isSet( settings, merged, "Check if extended: settings must be extended" );
-       isSet ( defaults, defaultsCopy, "Check if not modified: options1 must not be modified" );
-       isSet ( options1, options1Copy, "Check if not modified: options1 must not be modified" );
-       isSet ( options2, options2Copy, "Check if not modified: options2 must not be modified" );
+       isObj( settings, merged, "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" );
 });
 
 test("val()", function() {
@@ -753,7 +782,7 @@ test("addClass(String)", function() {
 });
 
 test("removeClass(String) - simple", function() {
-       expect(2);
+       expect(3);
        var div = $("div").addClass("test").removeClass("test"),
                pass = true;
        for ( var i = 0; i < div.size(); i++ ) {
@@ -769,6 +798,11 @@ test("removeClass(String) - simple", function() {
         if ( div.get(i).className.match(/test|bar|foo/) ) pass = false;
        }
        ok( pass, "Remove multiple classes" );
+       
+       reset();
+       var div = $("div:eq(0)").addClass("test").removeClass("");
+       ok( div.is('.test'), "Empty string passed to removeClass" );
+       
 });
 
 test("toggleClass(String)", function() {