Fixed #2027 - make sure that cloned elements (within appendTo, etc.) have their event...
[jquery.git] / test / unit / core.js
index 03f89d1..932d0a5 100644 (file)
@@ -420,7 +420,7 @@ test("css(String|Hash)", function() {
 });
 
 test("css(String, Object)", function() {
-       expect(20);
+       expect(21);
        ok( $('#foo').is(':visible'), 'Modifying CSS display: Assert element is visible');
        $('#foo').css('display', 'none');
        ok( !$('#foo').is(':visible'), 'Modified CSS display: Assert element is hidden');
@@ -454,6 +454,10 @@ test("css(String, Object)", function() {
        var j = $("#nonnodes").contents();
        j.css("padding-left", "1px");
        equals( j.css("padding-left"), "1px", "Check node,textnode,comment css works" );
+
+       // opera sometimes doesn't update 'display' correctly, see #2037
+       $("#t2037")[0].innerHTML = $("#t2037")[0].innerHTML
+       equals( $("#t2037 .hidden").css("display"), "none", "Make sure browser thinks it is hidden" );
 });
 
 test("jQuery.css(elem, 'height') doesn't clear radio buttons (bug #1095)", function () {
@@ -469,12 +473,55 @@ test("jQuery.css(elem, 'height') doesn't clear radio buttons (bug #1095)", funct
 });
 
 test("width()", function() {
-       expect(2);
+       expect(9);
+
+       var $div = $("#nothiddendiv");
+       $div.width(30);
+       equals($div.width(), 30, "Test set to 30 correctly");
+       $div.width(-1); // handle negative numbers by ignoring #1599
+       equals($div.width(), 30, "Test negative width ignored");
+       $div.css("padding", "20px");
+       equals($div.width(), 30, "Test padding specified with pixels");
+       $div.css("border", "2px solid #fff");
+       equals($div.width(), 30, "Test border specified with pixels");
+       $div.css("padding", "2em");
+       equals($div.width(), 30, "Test padding specified with ems");
+       $div.css("border", "1em solid #fff");
+       equals($div.width(), 30, "Test border specified with ems");
+       $div.css("padding", "2%");
+       equals($div.width(), 30, "Test padding specified with percent");
+       $div.hide();
+       equals($div.width(), 30, "Test hidden div");
+       
+       $div.css({ display: "", border: "", padding: "" });
+       
+       $("#nothiddendivchild").css({ padding: "3px", border: "2px solid #fff" });
+       equals($("#nothiddendivchild").width(), 20, "Test child width with border and padding");
+       $("#nothiddendiv, #nothiddendivchild").css({ border: "", padding: "", width: "" });
+});
+
+test("height()", function() {
+       expect(8);
 
-       $("#nothiddendiv").width(30);
-       equals($("#nothiddendiv").width(), 30, "Test set to 30 correctly");
-       $("#nothiddendiv").width(-1); // handle negative numbers by ignoring #1599
-       equals($("#nothiddendiv").width(), 30, "Test negative width ignored");
+       var $div = $("#nothiddendiv");
+       $div.height(30);
+       equals($div.height(), 30, "Test set to 30 correctly");
+       $div.height(-1); // handle negative numbers by ignoring #1599
+       equals($div.height(), 30, "Test negative height ignored");
+       $div.css("padding", "20px");
+       equals($div.height(), 30, "Test padding specified with pixels");
+       $div.css("border", "2px solid #fff");
+       equals($div.height(), 30, "Test border specified with pixels");
+       $div.css("padding", "2em");
+       equals($div.height(), 30, "Test padding specified with ems");
+       $div.css("border", "1em solid #fff");
+       equals($div.height(), 30, "Test border specified with ems");
+       $div.css("padding", "2%");
+       equals($div.height(), 30, "Test padding specified with percent");
+       $div.hide();
+       equals($div.height(), 30, "Test hidden div");
+       
+       $div.css({ display: "", border: "", padding: "", height: "1px" });
 });
 
 test("text()", function() {
@@ -982,11 +1029,12 @@ test("$.extend(Object, Object)", function() {
 });
 
 test("val()", function() {
-       expect(3);
+       expect(4);
        ok( $("#text1").val() == "Test", "Check for value of input element" );
        ok( !$("#text1").val() == "", "Check for value of input element" );
        // ticket #1714 this caused a JS error in IE
        ok( $("#first").val() == "", "Check a paragraph element to see if it has a value" );
+       ok( $([]).val() === undefined, "Check an empty jQuery object will return undefined from val" );
 });
 
 test("val(String)", function() {
@@ -1054,12 +1102,17 @@ test("filter()", function() {
 });
 
 test("not()", function() {
-       expect(5);
+       expect(8);
        ok( $("#main > p#ap > a").not("#google").length == 2, "not('selector')" );
+       ok( $("#main > p#ap > a").not(document.getElementById("google")).length == 2, "not(DOMElement)" );
        isSet( $("p").not(".result").get(), q("firstp", "ap", "sndp", "en", "sap", "first"), "not('.class')" );
        isSet( $("p").not("#ap, #sndp, .result").get(), q("firstp", "en", "sap", "first"), "not('selector, selector')" );
        isSet( $("p").not($("#ap, #sndp, .result")).get(), q("firstp", "en", "sap", "first"), "not(jQuery)" );
+       ok( $("p").not(document.getElementsByTagName("p")).length == 0, "not(Array-like DOM collection)" );
        isSet( $("#form option").not("option.emptyopt:contains('Nothing'),[selected],[value='1']").get(), q("option1c", "option1d", "option2c", "option3d" ), "not('complex selector')");
+       
+       var selects = $("#form select");
+       isSet( selects.not( selects[1] ), q("select1", "select3"), "filter out DOM element");
 });
 
 test("andSelf()", function() {
@@ -1262,6 +1315,24 @@ test("$.className", function() {
        ok( c.has(x, "bar"), "Check has2" );
 });
 
+test("$.data", function() {
+       expect(3);
+       var div = $("#foo")[0];
+       ok( jQuery.data(div, "test") == undefined, "Check for no data exists" );
+       jQuery.data(div, "test", "success");
+       ok( jQuery.data(div, "test") == "success", "Check for added data" );
+       jQuery.data(div, "test", "overwritten");
+       ok( jQuery.data(div, "test") == "overwritten", "Check for overwritten data" );
+});
+
+test("$.removeData", function() {
+       expect(1);
+       var div = $("#foo")[0];
+       jQuery.data(div, "test", "testing");
+       jQuery.removeData(div, "test");
+       ok( jQuery.data(div, "test") == undefined, "Check removal of data" );
+});
+
 test("remove()", function() {
        expect(6);
        $("#ap").children().remove();