From 6da5eb10337c29c61ebc09fb8e3975509f58f419 Mon Sep 17 00:00:00 2001 From: Oleg Date: Thu, 7 Mar 2013 18:15:12 +0400 Subject: [PATCH] Follow-up for 22a4e5bd0a7c0a92b54b9965984b582fd42099f2, fix .checkOn, add support tests. Cloes gh-1199. --- src/support.js | 2 +- test/unit/support.js | 137 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 138 insertions(+), 1 deletion(-) diff --git a/src/support.js b/src/support.js index 67ba005dc..52f832f42 100644 --- a/src/support.js +++ b/src/support.js @@ -13,7 +13,7 @@ jQuery.support = (function( support ) { input.type = "checkbox"; // Check the default checkbox/radio value ("" on old WebKit; "on" elsewhere) - support.checkOn = input.value === ""; + support.checkOn = input.value !== ""; // Must access the parent to make an option select properly // Support: IE9, IE10 diff --git a/test/unit/support.js b/test/unit/support.js index 4754a68c9..f557a954b 100644 --- a/test/unit/support.js +++ b/test/unit/support.js @@ -34,6 +34,143 @@ testIframeWithCallback( "box-sizing does not affect jQuery.support.shrinkWrapBlo strictEqual( shrinkWrapBlocks, jQuery.support.shrinkWrapBlocks, "jQuery.support.shrinkWrapBlocks properties are the same" ); }); +(function() { + var expected, + userAgent = window.navigator.userAgent; + + if ( /chrome/i.test( userAgent ) ) { + expected = { + "checkOn":true, + "optSelected":true, + "optDisabled":true, + "focusinBubbles":false, + "reliableMarginRight":true, + "noCloneChecked":true, + "radioValue":true, + "checkClone":true, + "boxModel":true, + "ajax":true, + "cors":true, + "clearCloneStyle": true, + "boxSizing": true, + "boxSizingReliable": true, + "pixelPosition": false + }; + } else if ( /opera.*version\/12\.1/i.test( userAgent ) ) { + expected = { + "checkOn":true, + "optSelected":true, + "optDisabled":true, + "focusinBubbles":false, + "reliableMarginRight":true, + "noCloneChecked":true, + "radioValue":false, + "checkClone":true, + "boxModel":true, + "ajax":true, + "cors":true, + "clearCloneStyle": true, + "boxSizing": true, + "boxSizingReliable": true, + "pixelPosition": true + }; + } else if ( /msie 10\.0/i.test( userAgent ) ) { + expected = { + "checkOn":true, + "optSelected":false, + "optDisabled":true, + "focusinBubbles":true, + "reliableMarginRight":true, + "noCloneChecked":false, + "radioValue":false, + "checkClone":true, + "boxModel":true, + "ajax":true, + "cors":true, + "clearCloneStyle": false, + "boxSizing": true, + "boxSizingReliable": false, + "pixelPosition": true + }; + } else if ( /msie 9\.0/i.test( userAgent ) ) { + expected = { + "checkOn":true, + "optSelected":false, + "optDisabled":true, + "focusinBubbles":true, + "reliableMarginRight":true, + "noCloneChecked":false, + "radioValue":false, + "checkClone":true, + "boxModel":true, + "ajax":true, + "cors":false, + "clearCloneStyle": false, + "boxSizing": true, + "boxSizingReliable": false, + "pixelPosition": true + }; + } else if ( /5\.1\.\d+ safari/i.test( userAgent ) ) { + expected = { + "checkOn":false, + "optSelected":true, + "optDisabled":true, + "focusinBubbles":false, + "reliableMarginRight":true, + "noCloneChecked":true, + "radioValue":true, + "checkClone":false, + "boxModel":true, + "ajax":true, + "cors":true, + "clearCloneStyle": true, + "boxSizing": true, + "boxSizingReliable": true, + "pixelPosition": false + }; + } else if ( /firefox/i.test( userAgent ) ) { + expected = { + "checkOn":true, + "optSelected":true, + "optDisabled":true, + "focusinBubbles":false, + "reliableMarginRight":true, + "noCloneChecked":true, + "radioValue":true, + "checkClone":true, + "boxModel":true, + "ajax":true, + "cors":true, + "clearCloneStyle": true, + "boxSizing": true, + "boxSizingReliable": false, + "pixelPosition": true + }; + } + + if ( expected ) { + test("Verify that the support tests resolve as expected per browser", function() { + var i, prop, + j = 0; + + for ( prop in jQuery.support ) { + j++; + } + + expect( j ); + + for ( i in expected ) { + if ( jQuery.ajax || i !== "ajax" && i !== "cors" ) { + equal( jQuery.support[i], expected[i], "jQuery.support['" + i + "']: " + jQuery.support[i] + ", expected['" + i + "']: " + expected[i]); + } else { + ok( true, "no ajax; skipping jQuery.support['" + i + "']" ); + } + } + }); + } + +})(); + // Support: Safari 5.1 // Shameless browser-sniff, but Safari 5.1 mishandles CSP if ( !( typeof navigator !== "undefined" && -- 2.39.5