diff options
Diffstat (limited to 'test/unit/support.js')
-rw-r--r-- | test/unit/support.js | 219 |
1 files changed, 104 insertions, 115 deletions
diff --git a/test/unit/support.js b/test/unit/support.js index 3edc92b48..fda26870b 100644 --- a/test/unit/support.js +++ b/test/unit/support.js @@ -1,5 +1,22 @@ module("support", { teardown: moduleTeardown }); +var computedSupport = getComputedSupport( jQuery.support ); + +function getComputedSupport( support ) { + var prop, + result = {}; + + for ( prop in support ) { + if ( typeof support[ prop ] === "function" ) { + result[ prop ] = support[ prop ](); + } else { + result[ prop ] = support[ prop ]; + } + } + + return result; +} + if ( jQuery.css ) { testIframeWithCallback( "body background is not lost if set prior to loading jQuery (#9239)", "support/bodyBackground.html", function( color, support ) { expect( 2 ); @@ -9,137 +26,109 @@ if ( jQuery.css ) { }; ok( okValue[ color ], "color was not reset (" + color + ")" ); - stop(); - // Run doc ready tests as well - jQuery(function() { - deepEqual( jQuery.extend( {}, support ), jQuery.support, "Same support properties" ); - start(); - }); + deepEqual( jQuery.extend( {}, support ), computedSupport, "Same support properties" ); }); } -testIframeWithCallback( "A non-1 zoom on body doesn't cause WebKit to fail box-sizing test", "support/boxSizing.html", function( boxSizing ) { - expect( 1 ); - equal( boxSizing, jQuery.support.boxSizing, "box-sizing properly detected on page with non-1 body zoom" ); -}); - -testIframeWithCallback( "A background on the testElement does not cause IE8 to crash (#9823)", "support/testElementCrash.html", function() { - expect( 1 ); - ok( true, "IE8 does not crash" ); -}); - -testIframeWithCallback( "box-sizing does not affect jQuery.support.shrinkWrapBlocks", "support/shrinkWrapBlocks.html", function( shrinkWrapBlocks ) { - expect( 1 ); - strictEqual( shrinkWrapBlocks, jQuery.support.shrinkWrapBlocks, "jQuery.support.shrinkWrapBlocks properties are the same" ); -}); - (function() { - var expected, version, + var expected, userAgent = window.navigator.userAgent; if ( /chrome/i.test( userAgent ) ) { - version = userAgent.match( /chrome\/(\d+)/i )[ 1 ]; expected = { - "checkOn":true, - "optSelected":true, - "optDisabled":true, - "focusinBubbles":false, - "reliableMarginRight":true, - "noCloneChecked":true, - "radioValue":true, - "checkClone":true, - "ajax":true, - "cors":true, - "clearCloneStyle": true, - "boxSizing": true, + "ajax": true, "boxSizingReliable": true, - "pixelPosition": version >= 28 + "checkClone": true, + "checkOn": true, + "clearCloneStyle": true, + "cors": true, + "focusinBubbles": false, + "noCloneChecked": true, + "optDisabled": true, + "optSelected": true, + "pixelPosition": true, + "radioValue": true, + "reliableMarginRight": true }; } 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, - "ajax":true, - "cors":true, - "clearCloneStyle": true, - "boxSizing": true, + "ajax": true, "boxSizingReliable": true, - "pixelPosition": true + "checkClone": true, + "checkOn": true, + "clearCloneStyle": true, + "cors": true, + "focusinBubbles": false, + "noCloneChecked": true, + "optDisabled": true, + "optSelected": true, + "pixelPosition": true, + "radioValue": false, + "reliableMarginRight": 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, - "ajax":true, - "cors":true, - "clearCloneStyle": false, - "boxSizing": true, + "ajax": true, "boxSizingReliable": false, - "pixelPosition": true + "checkClone": true, + "checkOn": true, + "clearCloneStyle": false, + "cors": true, + "focusinBubbles": true, + "noCloneChecked": false, + "optDisabled": true, + "optSelected": false, + "pixelPosition": true, + "radioValue": false, + "reliableMarginRight": 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, - "ajax":true, - "cors":false, - "clearCloneStyle": false, - "boxSizing": true, + "ajax": true, "boxSizingReliable": false, - "pixelPosition": true + "checkClone": true, + "checkOn": true, + "clearCloneStyle": false, + "cors": false, + "focusinBubbles": true, + "noCloneChecked": false, + "optDisabled": true, + "optSelected": false, + "pixelPosition": true, + "radioValue": false, + "reliableMarginRight": true }; - } else if ( /5\.1\.\d+ safari/i.test( userAgent ) ) { + } else if ( /6\.0\.\d+ safari/i.test( userAgent ) ) { expected = { - "checkOn":false, - "optSelected":true, - "optDisabled":true, - "focusinBubbles":false, - "reliableMarginRight":true, - "noCloneChecked":true, - "radioValue":true, - "checkClone":false, - "ajax":true, - "cors":true, - "clearCloneStyle": true, - "boxSizing": true, + "ajax": true, "boxSizingReliable": true, - "pixelPosition": false + "checkClone": true, + "checkOn": true, + "clearCloneStyle": true, + "cors": true, + "focusinBubbles": false, + "noCloneChecked": true, + "optDisabled": true, + "optSelected": true, + "pixelPosition": false, + "radioValue": true, + "reliableMarginRight": true }; } else if ( /firefox/i.test( userAgent ) ) { - version = userAgent.match( /firefox\/(\d+)/i )[ 1 ]; expected = { - "checkOn":true, - "optSelected":true, - "optDisabled":true, - "focusinBubbles":false, - "reliableMarginRight":true, - "noCloneChecked":true, - "radioValue":true, - "checkClone":true, - "ajax":true, - "cors":true, + "ajax": true, + "boxSizingReliable": true, + "checkClone": true, + "checkOn": true, "clearCloneStyle": true, - "boxSizing": true, - "boxSizingReliable": version >= 23, - "pixelPosition": true + "cors": true, + "focusinBubbles": false, + "noCloneChecked": true, + "optDisabled": true, + "optSelected": true, + "pixelPosition": true, + "radioValue": true, + "reliableMarginRight": true }; } @@ -148,17 +137,20 @@ testIframeWithCallback( "box-sizing does not affect jQuery.support.shrinkWrapBlo var i, prop, j = 0; - for ( prop in jQuery.support ) { + for ( prop in computedSupport ) { j++; } expect( j ); for ( i in expected ) { + // TODO check for all modules containing support properties if ( jQuery.ajax || i !== "ajax" && i !== "cors" ) { - equal( jQuery.support[i], expected[i], "jQuery.support['" + i + "']: " + jQuery.support[i] + ", expected['" + i + "']: " + expected[i]); + equal( computedSupport[ i ], expected[ i ], + "jQuery.support['" + i + "']: " + computedSupport[ i ] + + ", expected['" + i + "']: " + expected[ i ]); } else { - ok( true, "no ajax; skipping jQuery.support['" + i + "']" ); + ok( true, "no ajax; skipping jQuery.support[' " + i + " ']" ); } } }); @@ -166,13 +158,10 @@ testIframeWithCallback( "box-sizing does not affect jQuery.support.shrinkWrapBlo })(); -// Support: Safari 5.1 -// Shameless browser-sniff, but Safari 5.1 mishandles CSP -if ( !( typeof navigator !== "undefined" && - (/ AppleWebKit\/\d.*? Version\/(\d+)/.exec(navigator.userAgent) || [])[1] < 6 ) ) { - - testIframeWithCallback( "Check CSP (https://developer.mozilla.org/en-US/docs/Security/CSP) restrictions", "support/csp.php", function( support ) { +testIframeWithCallback( "Check CSP (https://developer.mozilla.org/en-US/docs/Security/CSP) restrictions", + "support/csp.php", + function( support ) { expect( 1 ); - deepEqual( jQuery.extend( {}, support ), jQuery.support, "No violations of CSP polices" ); - }); -} + deepEqual( jQuery.extend( {}, support ), computedSupport, "No violations of CSP polices" ); + } +); |