From fc563cc42a4cf9b8d717f1fa4f397e76a132d90a Mon Sep 17 00:00:00 2001 From: rwldrn Date: Tue, 9 Nov 2010 16:14:11 -0500 Subject: [PATCH] Fixes #7413; isEmptyObject() check to see if obj passes isPlainObject --- src/core.js | 6 ++++++ test/unit/core.js | 15 +++++++++++---- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/core.js b/src/core.js index 9e1bfc6..c11133f 100644 --- a/src/core.js +++ b/src/core.js @@ -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; } diff --git a/test/unit/core.js b/test/unit/core.js index 7ef2ad7..b634ade 100644 --- a/test/unit/core.js +++ b/test/unit/core.js @@ -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(){ -- 1.7.10.4