Added test for css(String, Function) and css(Object) where values are Functions;...
[jquery.git] / test / unit / css.js
index af1983c..9f84d86 100644 (file)
@@ -1,7 +1,7 @@
 module("css");
 
 test("css(String|Hash)", function() {
-       expect(19);
+       expect(23);
 
        equals( jQuery('#main').css("display"), 'none', 'Check for css property "display"');
 
@@ -11,6 +11,12 @@ test("css(String|Hash)", function() {
        jQuery('#nothiddendiv').css({display: 'block'});
        ok( jQuery('#nothiddendiv').is(':visible'), 'Modified CSS display: Assert element is visible');
 
+       // handle negative numbers by ignoring #1599, #4216
+       var width = parseFloat(jQuery('#nothiddendiv').css('width')), height = parseFloat(jQuery('#nothiddendiv').css('height'));
+       jQuery('#nothiddendiv').css({ width: -1, height: -1 });
+       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'});
@@ -28,6 +34,10 @@ test("css(String|Hash)", function() {
        });
        jQuery('#foo').css({opacity: ''});
        equals( jQuery('#foo').css('opacity'), '1', "Assert opacity is 1 when set to an empty String" );
+
+       equals( jQuery('#empty').css('opacity'), '0', "Assert opacity is accessible via filter property set in stylesheet in IE" );
+       jQuery('#empty').css({ opacity: '1' });
+       equals( jQuery('#empty').css('opacity'), '1', "Assert opacity is taken from style attribute when set vs stylesheet in IE with filters" );
 });
 
 test("css(String, Object)", function() {
@@ -71,6 +81,68 @@ test("css(String, Object)", function() {
        equals( jQuery("#t2037 .hidden").css("display"), "none", "Make sure browser thinks it is hidden" );
 });
 
+test("css(String, Function)", function() {
+       try { 
+               expect(3);
+               
+               var colors = ["red", "green", "blue"];
+       
+               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("color", function() {
+                       var color = colors[index];
+                       index++;
+                       return color;
+               });
+               
+               index = 0;
+               
+               jQuery("#cssFunctionTest div").each(function() {
+                       equals( jQuery(this).css("color"), colors[index], "Div #" + index + " should be " + colors[index] );
+                       index++;
+               });
+               
+       } finally {
+               jQuery("#cssFunctionTest").remove();
+       }
+});
+
+test("css(Object) where values are Functions", function() {
+       try { 
+               expect(3);
+               
+               var colors = ["red", "green", "blue"];
+       
+               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({color: function() {
+                       var color = colors[index];
+                       index++;
+                       return color;
+               }});
+               
+               index = 0;
+               
+               jQuery("#cssFunctionTest div").each(function() {
+                       equals( jQuery(this).css("color"), colors[index], "Div #" + index + " should be " + colors[index] );
+                       index++;
+               });
+               
+       } finally {
+               jQuery("#cssFunctionTest").remove();
+       }
+});
+
 test("jQuery.css(elem, 'height') doesn't clear radio buttons (bug #1095)", function () {
        expect(4);