Make sure that non-px values aren't manipulated before input to height/width.
[jquery.git] / test / unit / css.js
index efcb913..0e91ae1 100644 (file)
@@ -1,7 +1,7 @@
 module("css");
 
 test("css(String|Hash)", function() {
-       expect(30);
+       expect(29);
 
        equals( jQuery('#main').css("display"), 'none', 'Check for css property "display"');
 
@@ -19,10 +19,6 @@ test("css(String|Hash)", function() {
        equals( parseFloat(jQuery('#nothiddendiv').css('width')), width, 'Test negative width ignored')
        equals( parseFloat(jQuery('#nothiddendiv').css('height')), height, 'Test negative height ignored')
 
-       jQuery('#floatTest').css({styleFloat: 'right'});
-       equals( jQuery('#floatTest').css('styleFloat'), 'right', 'Modified CSS float using "styleFloat": Assert float is right');
-       jQuery('#floatTest').css({cssFloat: 'left'});
-       equals( jQuery('#floatTest').css('cssFloat'), 'left', 'Modified CSS float using "cssFloat": Assert float is left');
        jQuery('#floatTest').css({'float': 'right'});
        equals( jQuery('#floatTest').css('float'), 'right', 'Modified CSS float using "float": Assert float is right');
        jQuery('#floatTest').css({'font-size': '30px'});
@@ -48,6 +44,9 @@ test("css(String|Hash)", function() {
        equals( parseInt(child.css("fontSize")), 16, "Verify fontSize px set." );
        equals( parseInt(child.css("font-size")), 16, "Verify fontSize px set." );
 
+       child.css("height", "100%");
+       equals( child[0].style.height, "100%", "Make sure the height is being set correctly." );
+
        child.attr("class", "em");
        equals( parseInt(child.css("fontSize")), 32, "Verify fontSize em set." );
 
@@ -65,7 +64,7 @@ test("css(String|Hash)", function() {
 });
 
 test("css(String, Object)", function() {
-       expect(21);
+       expect(19);
        ok( jQuery('#nothiddendiv').is(':visible'), 'Modifying CSS display: Assert element is visible');
        jQuery('#nothiddendiv').css("display", 'none');
        ok( !jQuery('#nothiddendiv').is(':visible'), 'Modified CSS display: Assert element is hidden');
@@ -75,10 +74,6 @@ test("css(String, Object)", function() {
        jQuery("#nothiddendiv").css("top", "-1em");
        ok( jQuery("#nothiddendiv").css("top"), -16, "Check negative number in EMs." );
 
-       jQuery('#floatTest').css('styleFloat', 'left');
-       equals( jQuery('#floatTest').css('styleFloat'), 'left', 'Modified CSS float using "styleFloat": Assert float is left');
-       jQuery('#floatTest').css('cssFloat', 'right');
-       equals( jQuery('#floatTest').css('cssFloat'), 'right', 'Modified CSS float using "cssFloat": Assert float is right');
        jQuery('#floatTest').css('float', 'left');
        equals( jQuery('#floatTest').css('float'), 'left', 'Modified CSS float using "float": Assert float is left');
        jQuery('#floatTest').css('font-size', '20px');
@@ -149,6 +144,36 @@ test("css(String, Function)", function() {
        jQuery("#cssFunctionTest").remove();
 });
 
+test("css(String, Function) with incoming value", function() {
+       expect(3);
+               
+       var sizes = ["10px", "20px", "30px"];
+       
+       jQuery("<div id='cssFunctionTest'><div class='cssFunction'></div>" + 
+                                "<div class='cssFunction'></div>" + 
+                                "<div class='cssFunction'></div></div>")
+               .appendTo("body");
+       
+       var index = 0;
+       
+       jQuery("#cssFunctionTest div").css("font-size", function() {
+               var size = sizes[index];
+               index++;
+               return size;
+       });
+               
+       index = 0;
+       
+       jQuery("#cssFunctionTest div").css("font-size", function(i, computedSize) {
+               var expectedSize = sizes[index]
+               equals( computedSize, expectedSize, "Div #" + index + " should be " + expectedSize );
+               index++;
+               return computedSize;
+       });
+
+       jQuery("#cssFunctionTest").remove();
+});
+
 test("css(Object) where values are Functions", function() {
        expect(3);
                
@@ -179,6 +204,36 @@ test("css(Object) where values are Functions", function() {
        jQuery("#cssFunctionTest").remove();
 });
 
+test("css(Object) where values are Functions with incoming values", function() {
+       expect(3);
+               
+       var sizes = ["10px", "20px", "30px"];
+       
+       jQuery("<div id='cssFunctionTest'><div class='cssFunction'></div>" + 
+                                "<div class='cssFunction'></div>" + 
+                                "<div class='cssFunction'></div></div>")
+               .appendTo("body");
+
+       var index = 0;
+       
+       jQuery("#cssFunctionTest div").css({fontSize: function() {
+               var size = sizes[index];
+               index++;
+               return size;
+       }});
+               
+       index = 0;
+               
+       jQuery("#cssFunctionTest div").css({"font-size": function(i, computedSize) {
+               var expectedSize = sizes[index]
+               equals( computedSize, expectedSize, "Div #" + index + " should be " + expectedSize );
+               index++;
+               return computedSize;
+       }});
+               
+       jQuery("#cssFunctionTest").remove();
+});
+
 test("jQuery.css(elem, 'height') doesn't clear radio buttons (bug #1095)", function () {
        expect(4);