Merge branch 'bug_7413' of https://github.com/rwldrn/jquery into rwldrn-bug_7413
authorjeresig <jeresig@gmail.com>
Thu, 9 Dec 2010 17:32:15 +0000 (12:32 -0500)
committerjeresig <jeresig@gmail.com>
Thu, 9 Dec 2010 17:32:15 +0000 (12:32 -0500)
1  2 
src/core.js
test/unit/core.js

diff --combined src/core.js
@@@ -215,7 -215,7 +215,7 @@@ jQuery.fn = jQuery.prototype = 
                        this.toArray() :
  
                        // Return just the object
 -                      ( num < 0 ? this.slice(num)[ 0 ] : this[ num ] );
 +                      ( num < 0 ? this[ this.length + num ] : this[ num ] );
        },
  
        // Take an array of elements and push it onto the stack
@@@ -532,6 -532,12 +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;
                }
diff --combined test/unit/core.js
@@@ -547,15 -547,15 +547,15 @@@ test("toArray()", function() 
  })
  
  test("get(Number)", function() {
 -      expect(1);
 +      expect(2);
        equals( jQuery("p").get(0), document.getElementById("firstp"), "Get A Single Element" );
 +      strictEqual( jQuery("#firstp").get(1), undefined, "Try get with index larger elements count" );
  });
  
  test("get(-Number)",function() {
 -      expect(1);
 -      equals( jQuery("p").get(-1),
 -              document.getElementById("first"),
 -              "Get a single element with negative index" )
 +      expect(2);
 +      equals( jQuery("p").get(-1), document.getElementById("first"), "Get a single element with negative index" );
 +      strictEqual( jQuery("#firstp").get(-2), undefined, "Try get with index negative index larger then elements count" );
  })
  
  test("each(Function)", function() {
@@@ -848,13 -848,20 +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(){