diff options
author | Michał Gołębiowski-Owczarek <m.goleb@gmail.com> | 2023-09-20 00:54:40 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-09-20 00:54:40 +0200 |
commit | 93ca49e6d1ac23fee33b3bc3b7f4d93dd1a25cb7 (patch) | |
tree | 26a2692a0e704e48348b45814e341777c4cbaed3 /test | |
parent | 46f6e3da796ee9d28c7c1428793b72d66bcbb0b7 (diff) | |
download | jquery-93ca49e6d1ac23fee33b3bc3b7f4d93dd1a25cb7.tar.gz jquery-93ca49e6d1ac23fee33b3bc3b7f4d93dd1a25cb7.zip |
Core: Simplify code post browser support reduction
Summary of the changes:
* Core: Simplify code post browser support reduction
* Tests: Remove legacy jQuery.cache & oldIE leftovers
* Tests: Reformat JavaScript in delegatetest.html
* Docs: "jQuery Foundation Projects" -> "jQuery Projects"
* Tests: Drop an unused localfile.html file (modern browsers don't support
the `file:` protocol this way, there's no point in keeping the file around)
* Effects: Remove a redundant `!fn` check (`fn || !fn && easing` is equivalent
to `fn || easing`; simplify the code)
* CSS: Explain the fallback to direct object access in curCSS better
* Tests: Deduplicate `jQuery.parseHTML` test titles
* Dimensions: Add a test for fractional values
* Tests: Fix a buggy WebKit regex
Closes gh-5296
Diffstat (limited to 'test')
-rw-r--r-- | test/data/testinit.js | 16 | ||||
-rw-r--r-- | test/delegatetest.html | 130 | ||||
-rw-r--r-- | test/localfile.html | 75 | ||||
-rw-r--r-- | test/unit/core.js | 2 | ||||
-rw-r--r-- | test/unit/css.js | 2 | ||||
-rw-r--r-- | test/unit/dimensions.js | 24 | ||||
-rw-r--r-- | test/unit/wrap.js | 2 |
7 files changed, 94 insertions, 157 deletions
diff --git a/test/data/testinit.js b/test/data/testinit.js index baf758205..aafe2902c 100644 --- a/test/data/testinit.js +++ b/test/data/testinit.js @@ -144,16 +144,12 @@ this.createXMLFragment = function() { return frag; }; -window.fireNative = document.createEvent ? - function( node, type ) { - var event = document.createEvent( "HTMLEvents" ); - - event.initEvent( type, true, true ); - node.dispatchEvent( event ); - } : - function( node, type ) { - node.fireEvent( "on" + type, document.createEventObject() ); - }; +window.fireNative = function( node, type ) { + var event = document.createEvent( "HTMLEvents" ); + + event.initEvent( type, true, true ); + node.dispatchEvent( event ); +}; /** * Add random number to url to stop caching diff --git a/test/delegatetest.html b/test/delegatetest.html index d3225196e..53efe54ce 100644 --- a/test/delegatetest.html +++ b/test/delegatetest.html @@ -125,103 +125,95 @@ th, td { <script type='text/javascript'> -$("#fileversion").text($.fn.jquery); +$( "#fileversion" ).text( $.fn.jquery ); // Try an auto-submit, it should only fire once -$(function(){ +$( function() { var triggered = false; - $("#autosub input").trigger("keypress"); - $("body").on("submit", "#autosub", function( e ){ + $( "#autosub input" ).trigger( "keypress" ); + $( "body" ).on( "submit", "#autosub", function( e ) { e.preventDefault(); e.stopPropagation(); if ( triggered ) { - alert("autosubmit FAIL"); + alert( "autosubmit FAIL" ); } triggered = true; - }); - $("#autosub").submit().remove(); -}); + } ); + $( "#autosub" ).submit().remove(); +} ); // Events we want to track in row-order -var events = "bind-change live-change onX-change bind-propertychange live-beforeactivate live-focusin bind-focus live-beforedeactivate live-focusout bind-blur live-click live-keydown".split(" "), +var events = "bind-change live-change onX-change bind-propertychange live-beforeactivate live-focusin bind-focus live-beforedeactivate live-focusout bind-blur live-click live-keydown".split( " " ), counter = 0; - blinker = function(event){ - if ( !counter ) { - $("#changes tbody td").text(""); - } - var $el = event.data, - prev = $el.text(); - prev = prev? prev +" | " : ""; - return $el - .text(prev + ++counter+" " + (this.value.replace(/^on$/,"") || this.id || this.checked || "")) - .css("backgroundColor","#0f0") - .delay(800) - .queue(function(next){ - $el.css("backgroundColor","#afa"); - --counter; - next(); - }); - }; +blinker = function( event ) { + if ( !counter ) { + $( "#changes tbody td" ).text( "" ); + } + var $el = event.data, + prev = $el.text(); + prev = prev ? prev + " | " : ""; + return $el + .text( prev + ++counter + " " + ( this.value.replace( /^on$/, "" ) || this.id || this.checked || "" ) ) + .css( "backgroundColor", "#0f0" ) + .delay( 800 ) + .queue( function( next ) { + $el.css( "backgroundColor", "#afa" ); + --counter; + next(); + } ); +}; -for ( var i=0; i < events.length; i++ ) { - var m = events[i].split("-"), - api = m[0], - type = m[1], - $row = $("<tr><th>"+type+" "+api+"</th></tr>"); +for ( var i = 0; i < events.length; i++ ) { + var m = events[ i ].split( "-" ), + api = m[ 0 ], + type = m[ 1 ], + $row = $( "<tr><th>" + type + " " + api + "</th></tr>" ); - $("#changes thead td").each(function(){ - var id = "#"+this.id, - $cell = $("<td></td>"); + $( "#changes thead td" ).each( function() { + var id = "#" + this.id, + $cell = $( "<td></td>" ); if ( api == "onX" ) { - $(this).find("input, button, select, textarea").each(function(){ - this["on"+type] = function(e){ e = $.event.fix(e||event); e.data = $cell; blinker.call(this, e); }; - }); + $( this ).find( "input, button, select, textarea" ).each( function() { + this[ "on" + type ] = function( e ) { + e = $.event.fix( e || event ); e.data = $cell; blinker.call( this, e ); +}; + } ); } else if ( api == "bind" ) { - $(this).find("input, button, select, textarea").bind(type, $cell, blinker); + $( this ).find( "input, button, select, textarea" ).bind( type, $cell, blinker ); } else { - $(id+" input,"+id+" button,"+id+" select,"+id+" textarea").live(type, $cell, blinker); + $( id + " input," + id + " button," + id + " select," + id + " textarea" ).live( type, $cell, blinker ); } - $row.append($cell); - }); - $("#changes tbody").append($row); -} - -// Ensure that cloned elements get the delegated event magic; this is -// implementation-specific knowledge but otherwise impossible to test. -// The beforeactivate event attaches a direct-bound change event. -// (Only care about the live change for this third select element.) -var sel1 = $("#select-one select:first-child"); -if ( typeof(sel1[0].fireEvent) !== "undefined" ) { - sel1.trigger( "beforeactivate" ).clone().appendTo("#select-one"); - //alert($("#select-one select").map(function(){ return this._change_attached || "undef"; }).get().join("|")); + $row.append( $cell ); + } ); + $( "#changes tbody" ).append( $row ); } -jQuery.fn.blink = function(){ +jQuery.fn.blink = function() { return this - .css("backgroundColor","green") - .text( (parseInt(this.text(), 10) || 0) + 1 ) - .delay(700).queue(function(next){ - jQuery(this).css("backgroundColor","#afa"); + .css( "backgroundColor", "green" ) + .text( ( parseInt( this.text(), 10 ) || 0 ) + 1 ) + .delay( 700 ).queue( function( next ) { + jQuery( this ).css( "backgroundColor", "#afa" ); next(); - }); + } ); }; jQuery.fn.addSubmitTest = function( id, prevent ) { - return this.live("submit", function(e){ + return this.live( "submit", function( e ) { if ( prevent ) { - e.preventDefault(); + e.preventDefault(); } - jQuery(id).blink(); - }); + jQuery( id ).blink(); + } ); }; -$("#text_submit").addSubmitTest("#textSubmit", true); -$("#password_submit").addSubmitTest("#passwordSubmit", true); -$("#submit_submit").addSubmitTest("#submitSubmit", true); -$("#prog_submit").addSubmitTest("#submitSubmit", true); -$(document).bind("submit", function(){ - jQuery("#boundSubmit").blink(); -}); +$( "#text_submit" ).addSubmitTest( "#textSubmit", true ); +$( "#password_submit" ).addSubmitTest( "#passwordSubmit", true ); +$( "#submit_submit" ).addSubmitTest( "#submitSubmit", true ); +$( "#prog_submit" ).addSubmitTest( "#submitSubmit", true ); +$( document ).bind( "submit", function() { + jQuery( "#boundSubmit" ).blink(); +} ); </script> </body> diff --git a/test/localfile.html b/test/localfile.html deleted file mode 100644 index 5a79bfec1..000000000 --- a/test/localfile.html +++ /dev/null @@ -1,75 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr" id="html"> -<head> - <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> - <title>jQuery Local File Test</title> - <!-- Includes --> - <script src="jquery.js"></script> - <style> - .error { color: red; } - .success { color: green; } - </style> -</head> -<body> - <h1>jQuery Local File Test</h1> - <h2> - Introduction - </h2> - <ul> - <li> - Access this file using the "file:" protocol, - </li> - <li> - two green "OK" strings must appear below, - </li> - <li> - Empty local files will issue errors, it's a known limitation. - </li> - </ul> - <h2> - Results - </h2> - <ul> - <li> - Success: - <span id="success"> - </span> - </li> - <li> - Error: - <span id="error"> - </span> - </li> - </ul> - <h2> - Logs: - </h2> - <ul id="log"> - </ul> - <script> - var logUL = jQuery( "#log" ); - function doLog( message, args ) { - jQuery( "<li></li>" ).appendTo( logUL ).text( message + ': "' + Array.prototype.join.call( args, '" - "' ) + '"' ); - } - jQuery.ajax( "./data/badjson.js" , { - context: jQuery( "#success" ), - dataType: "text" - }).success(function( data, _, xhr ) { - doLog( "Success (" + xhr.status + ")" , arguments ); - this.addClass( data ? "success" : "error" ).text( "OK" ); - }).error(function( xhr ) { - doLog( "Success (" + xhr.status + ")" , arguments ); - this.addClass( "error" ).text( "FAIL" ); - }); - jQuery.ajax( "./data/doesnotexist.ext" , { - context: jQuery( "#error" ), - dataType: "text" - }).error(function( xhr ) { - doLog( "Error (" + xhr.status + ")" , arguments ); - this.addClass( "success" ).text( "OK" ); - }).success(function( data, _, xhr ) { - doLog( "Error (" + xhr.status + ")" , arguments ); - this.addClass( "error" ).text( "FAIL" ); - }); - </script> -</body> diff --git a/test/unit/core.js b/test/unit/core.js index 294664d5c..666f0e820 100644 --- a/test/unit/core.js +++ b/test/unit/core.js @@ -1403,7 +1403,7 @@ QUnit.test( "jQuery.parseHTML(<a href>) - gh-2965", function( assert ) { assert.ok( /\/example\.html$/.test( href ), "href is not lost after parsing anchor" ); } ); -QUnit.test( "jQuery.parseHTML", function( assert ) { +QUnit.test( "jQuery.parseHTML error handling", function( assert ) { var done = assert.async(); assert.expect( 1 ); diff --git a/test/unit/css.js b/test/unit/css.js index 31d043544..146dcd9da 100644 --- a/test/unit/css.js +++ b/test/unit/css.js @@ -1757,7 +1757,7 @@ QUnit.testUnlessIE( "css(--customProperty)", function( assert ) { var div = jQuery( "<div>" ).appendTo( "#qunit-fixture" ), $elem = jQuery( "<div>" ).addClass( "test__customProperties" ) .appendTo( "#qunit-fixture" ), - webkitOrBlink = /\webkit\b/i.test( navigator.userAgent ), + webkitOrBlink = /webkit\b/i.test( navigator.userAgent ), expected = 20; if ( webkitOrBlink ) { diff --git a/test/unit/dimensions.js b/test/unit/dimensions.js index 85a69cdb7..6b0c9c798 100644 --- a/test/unit/dimensions.js +++ b/test/unit/dimensions.js @@ -284,6 +284,30 @@ QUnit.test( "outerHeight()", function( assert ) { div.remove(); } ); +QUnit.test( "fractional getters", function( assert ) { + assert.expect( 8 ); + + var elem = jQuery( "<div>" ).css( { + width: "10.5px", + height: "20.5px", + border: "10px solid white", + padding: "2px", + margin: "3px" + } ); + + elem.appendTo( "#qunit-fixture" ); + + assert.strictEqual( elem.width(), 10.5, "width supports fractions" ); + assert.strictEqual( elem.innerWidth(), 14.5, "innerWidth supports fractions" ); + assert.strictEqual( elem.outerWidth(), 34.5, "outerWidth supports fractions" ); + assert.strictEqual( elem.outerWidth( true ), 40.5, "outerWidth( true ) supports fractions" ); + + assert.strictEqual( elem.height(), 20.5, "height supports fractions" ); + assert.strictEqual( elem.innerHeight(), 24.5, "innerHeight supports fractions" ); + assert.strictEqual( elem.outerHeight(), 44.5, "outerHeight supports fractions" ); + assert.strictEqual( elem.outerHeight( true ), 50.5, "outerHeight( true ) supports fractions" ); +} ); + QUnit.test( "child of a hidden elem (or unconnected node) has accurate inner/outer/Width()/Height() see trac-9441 trac-9300", function( assert ) { assert.expect( 16 ); diff --git a/test/unit/wrap.js b/test/unit/wrap.js index 24136ac0e..31f9cd300 100644 --- a/test/unit/wrap.js +++ b/test/unit/wrap.js @@ -23,7 +23,7 @@ function testWrap( val, assert ) { assert.expect( 18 ); - var defaultText, result, j, i, cacheLength; + var defaultText, result, j; defaultText = "Try them out:"; result = jQuery( "#first" ).wrap( val( "<div class='red'><span></span></div>" ) ).text(); |