diff options
author | Oleg <markelog@gmail.com> | 2013-03-07 18:15:12 +0400 |
---|---|---|
committer | Dave Methvin <dave.methvin@gmail.com> | 2013-04-03 22:27:16 -0400 |
commit | 6da5eb10337c29c61ebc09fb8e3975509f58f419 (patch) | |
tree | 1f7ccad951a89d89f79bbf95af4c32be9bc4649f | |
parent | 5aaa276e9e0041d099c954fc2744f0797e3893b0 (diff) | |
download | jquery-6da5eb10337c29c61ebc09fb8e3975509f58f419.tar.gz jquery-6da5eb10337c29c61ebc09fb8e3975509f58f419.zip |
Follow-up for 22a4e5bd0a7c0a92b54b9965984b582fd42099f2, fix .checkOn, add support tests. Cloes gh-1199.
-rw-r--r-- | src/support.js | 2 | ||||
-rw-r--r-- | test/unit/support.js | 137 |
2 files changed, 138 insertions, 1 deletions
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" && |