From: jeresig Date: Thu, 9 Dec 2010 17:37:30 +0000 (-0500) Subject: Merge branch 'rfxnum' of https://github.com/lrbabe/jquery into lrbabe-rfxnum X-Git-Url: http://git.asbjorn.biz/?a=commitdiff_plain;h=a13089d5b4af876a3184cdbc1850d3687a75332d;hp=796d25cf07ad63e2008ff4b70db182d33a3533dd;p=jquery.git Merge branch 'rfxnum' of https://github.com/lrbabe/jquery into lrbabe-rfxnum --- diff --git a/src/core.js b/src/core.js index 18cd3a3..07d5caf 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/attributes.js b/test/unit/attributes.js index d17653d..f30779d 100644 --- a/test/unit/attributes.js +++ b/test/unit/attributes.js @@ -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); diff --git a/test/unit/core.js b/test/unit/core.js index 7057783..3cbf3f6 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(){