Merge branch 'attrFollowupFix' of https://github.com/jitter/jquery into jitter-attrFo...
authorjeresig <jeresig@gmail.com>
Thu, 9 Dec 2010 17:43:10 +0000 (12:43 -0500)
committerjeresig <jeresig@gmail.com>
Thu, 9 Dec 2010 17:43:10 +0000 (12:43 -0500)
src/core.js
src/effects.js
test/unit/attributes.js
test/unit/core.js

index 18cd3a3..07d5caf 100644 (file)
@@ -532,6 +532,12 @@ jQuery.extend({
        },
 
        isEmptyObject: function( obj ) {
+
+    // Fixes #7413 Check to see if obj passes isPlainObject
+    if ( !jQuery.isPlainObject( obj ) ) {
+      return false;
+    }
+       
                for ( var name in obj ) {
                        return false;
                }
index 51ce0c5..067383b 100644 (file)
@@ -2,7 +2,7 @@
 
 var elemdisplay = {},
        rfxtypes = /^(?:toggle|show|hide)$/,
-       rfxnum = /^([+\-]=)?([\d+.\-]+)(.*)$/,
+       rfxnum = /^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,
        timerId,
        fxAttrs = [
                // height animations
index 1a7c79b..f9506b3 100644 (file)
@@ -3,6 +3,31 @@ module("attributes");
 var bareObj = function(value) { return value; };
 var functionReturningObj = function(value) { return (function() { return value; }); };
 
+test("jQuery.props: itegrity test", function() {
+  
+  expect(1);
+  
+  //  This must be maintained and equal jQuery.props
+  //  Ensure that accidental or erroneous property 
+  //  overwrites don't occur
+  //  This is simply for better code coverage and future proofing. 
+  var propsShouldBe = {
+    "for": "htmlFor",
+    "class": "className",
+    readonly: "readOnly",
+    maxlength: "maxLength",
+    cellspacing: "cellSpacing",
+    rowspan: "rowSpan",
+    colspan: "colSpan",
+    tabindex: "tabIndex",
+    usemap: "useMap",
+    frameborder: "frameBorder"
+  };
+  
+  same(propsShouldBe, jQuery.props, "jQuery.props passes integrity check");
+
+});
+
 test("attr(String)", function() {
        expect(37);
 
index 7057783..3cbf3f6 100644 (file)
@@ -848,13 +848,20 @@ test("jQuery.makeArray", function(){
 });
 
 test("jQuery.isEmptyObject", function(){
-       expect(2);
+       expect(11);
        
        equals(true, jQuery.isEmptyObject({}), "isEmptyObject on empty object literal" );
        equals(false, jQuery.isEmptyObject({a:1}), "isEmptyObject on non-empty object literal" );
-       
-       // What about this ?
-       // equals(true, jQuery.isEmptyObject(null), "isEmptyObject on null" );
+  equals(false, jQuery.isEmptyObject(1), "isEmptyObject on number (wrong argument type)");
+  equals(false, jQuery.isEmptyObject(0), "isEmptyObject on falsy number (wrong argument type)");  
+  equals(false, jQuery.isEmptyObject("test"), "isEmptyObject on string (wrong argument type)");
+  equals(false, jQuery.isEmptyObject(""), "isEmptyObject on falsy string (wrong argument type)");
+  equals(false, jQuery.isEmptyObject([1,2,3]), "isEmptyObject on array (wrong argument type)");
+  equals(false, jQuery.isEmptyObject([]), "isEmptyObject on an empty array (wrong argument type)");
+  equals(false, jQuery.isEmptyObject(undefined), "isEmptyObject on undefined (wrong argument type)");
+  equals(false, jQuery.isEmptyObject(false), "isEmptyObject on undefined (wrong argument type)");
+  equals(false, jQuery.isEmptyObject(null), "isEmptyObject on null (wrong argument type)" );   
+
 });
 
 test("jQuery.proxy", function(){