Make sure that calling .width(num) or .height(num) on an empty set returns the empty...
[jquery.git] / test / unit / core.js
index 0640cf5..576deb7 100644 (file)
@@ -16,7 +16,7 @@ test("jQuery()", function() {
 
        // Basic constructor's behavior
 
-       equals( jQuery().length, 1, "jQuery() === jQuery(document)" );
+       equals( jQuery().length, 0, "jQuery() === jQuery([])" );
        equals( jQuery(undefined).length, 0, "jQuery(undefined) === jQuery([])" );
        equals( jQuery(null).length, 0, "jQuery(null) === jQuery([])" );
        equals( jQuery("").length, 0, "jQuery('') === jQuery([])" );
@@ -200,6 +200,51 @@ test("trim", function() {
   equals( jQuery.trim("  " + nbsp + "hello  " + nbsp + " "), "hello", " " );
 });
 
+test("isPlainObject", function() {
+       expect(7);
+
+       stop();
+
+       // The use case that we want to match
+       ok(jQuery.isPlainObject({}), "{}");
+       // Instantiated objects shouldn't be matched
+       ok(!jQuery.isPlainObject(new Date), "new Date");
+       var fn = function(){};
+       // Functions shouldn't be matched
+       ok(!jQuery.isPlainObject(fn), "fn");
+       // Again, instantiated objects shouldn't be matched
+       ok(!jQuery.isPlainObject(new fn), "new fn (no methods)");
+       // Makes the function a little more realistic
+       // (and harder to detect, incidentally)
+       fn.prototype = {someMethod: function(){}};
+       // Again, instantiated objects shouldn't be matched
+       ok(!jQuery.isPlainObject(new fn), "new fn");
+
+       // DOM Element
+       ok(!jQuery.isPlainObject(document.createElement("div")), "DOM Element");
+       var iframe = document.createElement("iframe");
+       document.body.appendChild(iframe);
+
+       window.iframeDone = function(otherObject){
+               // Objects from other windows should be matched
+               ok(jQuery.isPlainObject(new otherObject), "new otherObject");
+               document.body.removeChild( iframe );
+               start();
+       };
+       var doc = iframe.contentDocument || iframe.contentWindow.document;
+       doc.open();
+       doc.write("<body onload='window.top.iframeDone(Object);'>");
+       doc.close();
+});
+
 test("isFunction", function() {
        expect(19);
 
@@ -666,7 +711,7 @@ test("jQuery.each(Object,Function)", function() {
 });
 
 test("jQuery.makeArray", function(){
-       expect(15);
+       expect(17);
 
        equals( jQuery.makeArray(jQuery('html>*'))[0].nodeName.toUpperCase(), "HEAD", "Pass makeArray a jQuery object" );
 
@@ -699,6 +744,10 @@ test("jQuery.makeArray", function(){
        equals( jQuery.makeArray(/a/)[0].constructor, RegExp, "Pass makeArray a regex" );
 
        ok( jQuery.makeArray(document.getElementById('form')).length >= 13, "Pass makeArray a form (treat as elements)" );
+
+       // For #5610
+       same( jQuery.makeArray({'length': '0'}), [], "Make sure object is coerced properly.");
+       same( jQuery.makeArray({'length': '5'}), [], "Make sure object is coerced properly.");
 });
 
 test("jQuery.isEmptyObject", function(){