mirror of
https://github.com/jquery/jquery.git
synced 2024-11-23 02:54:22 +00:00
Build: Remove unused Sizzle test files
This commit is contained in:
parent
5150442e1b
commit
62f7f7be9b
@ -50,11 +50,7 @@ module.exports = function( grunt ) {
|
||||
},
|
||||
src: {
|
||||
files: {
|
||||
"src/sizzle/dist": "sizzle/dist",
|
||||
"src/sizzle/test/data": "sizzle/test/data",
|
||||
"src/sizzle/test/unit": "sizzle/test/unit",
|
||||
"src/sizzle/test/index.html": "sizzle/test/index.html",
|
||||
"src/sizzle/test/jquery.js": "sizzle/test/jquery.js"
|
||||
"src/sizzle/dist": "sizzle/dist"
|
||||
}
|
||||
},
|
||||
tests: {
|
||||
|
@ -1,22 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<script>var QUnit = parent.QUnit</script>
|
||||
<script src="testinit.js"></script>
|
||||
<script src="../../dist/sizzle.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
var doc = parent.document,
|
||||
unframed = [ doc.getElementById( "qunit-fixture" ), doc.body, doc.documentElement ],
|
||||
framed = Sizzle( "*" );
|
||||
|
||||
window.parent.iframeCallback(
|
||||
Sizzle.uniqueSort( unframed.concat( framed ) ),
|
||||
framed.concat( unframed.reverse() ),
|
||||
"Mixed array was sorted correctly"
|
||||
);
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -1,136 +0,0 @@
|
||||
var fireNative,
|
||||
jQuery = this.jQuery || "jQuery", // For testing .noConflict()
|
||||
$ = this.$ || "$",
|
||||
originaljQuery = jQuery,
|
||||
original$ = $;
|
||||
|
||||
(function() {
|
||||
// Config parameter to force basic code paths
|
||||
QUnit.config.urlConfig.push({
|
||||
id: "basic",
|
||||
label: "Bypass optimizations",
|
||||
tooltip: "Force use of the most basic code by disabling native querySelectorAll; contains; compareDocumentPosition"
|
||||
});
|
||||
if ( QUnit.urlParams.basic ) {
|
||||
document.querySelectorAll = null;
|
||||
document.documentElement.contains = null;
|
||||
document.documentElement.compareDocumentPosition = null;
|
||||
// Return array of length two to pass assertion
|
||||
// But support should be false as its not native
|
||||
document.getElementsByClassName = function() { return [ 0, 1 ]; };
|
||||
}
|
||||
})();
|
||||
|
||||
/**
|
||||
* Returns an array of elements with the given IDs
|
||||
* @example q("main", "foo", "bar")
|
||||
* @result [<div id="main">, <span id="foo">, <input id="bar">]
|
||||
*/
|
||||
function q() {
|
||||
var r = [],
|
||||
i = 0;
|
||||
|
||||
for ( ; i < arguments.length; i++ ) {
|
||||
r.push( document.getElementById( arguments[i] ) );
|
||||
}
|
||||
return r;
|
||||
}
|
||||
|
||||
/**
|
||||
* Asserts that a select matches the given IDs
|
||||
* @param {String} a - Assertion name
|
||||
* @param {String} b - Sizzle selector
|
||||
* @param {String} c - Array of ids to construct what is expected
|
||||
* @example t("Check for something", "//[a]", ["foo", "baar"]);
|
||||
* @result returns true if "//[a]" return two elements with the IDs 'foo' and 'baar'
|
||||
*/
|
||||
function t( a, b, c ) {
|
||||
var f = Sizzle(b),
|
||||
s = "",
|
||||
i = 0;
|
||||
|
||||
for ( ; i < f.length; i++ ) {
|
||||
s += ( s && "," ) + '"' + f[ i ].id + '"';
|
||||
}
|
||||
|
||||
deepEqual(f, q.apply( q, c ), a + " (" + b + ")");
|
||||
}
|
||||
|
||||
/**
|
||||
* Add random number to url to stop caching
|
||||
*
|
||||
* @example url("data/test.html")
|
||||
* @result "data/test.html?10538358428943"
|
||||
*
|
||||
* @example url("data/test.php?foo=bar")
|
||||
* @result "data/test.php?foo=bar&10538358345554"
|
||||
*/
|
||||
function url( value ) {
|
||||
return value + (/\?/.test(value) ? "&" : "?") + new Date().getTime() + "" + parseInt(Math.random()*100000);
|
||||
}
|
||||
|
||||
var createWithFriesXML = function() {
|
||||
var string = '<?xml version="1.0" encoding="UTF-8"?> \
|
||||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" \
|
||||
xmlns:xsd="http://www.w3.org/2001/XMLSchema" \
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> \
|
||||
<soap:Body> \
|
||||
<jsconf xmlns="http://www.example.com/ns1"> \
|
||||
<response xmlns:ab="http://www.example.com/ns2"> \
|
||||
<meta> \
|
||||
<component id="seite1" class="component"> \
|
||||
<properties xmlns:cd="http://www.example.com/ns3"> \
|
||||
<property name="prop1"> \
|
||||
<thing /> \
|
||||
<value>1</value> \
|
||||
</property> \
|
||||
<property name="prop2"> \
|
||||
<thing att="something" /> \
|
||||
</property> \
|
||||
<foo_bar>foo</foo_bar> \
|
||||
</properties> \
|
||||
</component> \
|
||||
</meta> \
|
||||
</response> \
|
||||
</jsconf> \
|
||||
</soap:Body> \
|
||||
</soap:Envelope>';
|
||||
|
||||
return jQuery.parseXML( string );
|
||||
};
|
||||
|
||||
fireNative = document.createEvent ?
|
||||
function( node, type ) {
|
||||
var event = document.createEvent("HTMLEvents");
|
||||
event.initEvent( type, true, true );
|
||||
node.dispatchEvent( event );
|
||||
} :
|
||||
function( node, type ) {
|
||||
var event = document.createEventObject();
|
||||
node.fireEvent( "on" + type, event );
|
||||
};
|
||||
|
||||
function testIframeWithCallback( title, fileName, func ) {
|
||||
test( title, function() {
|
||||
var iframe;
|
||||
|
||||
stop();
|
||||
window.iframeCallback = function() {
|
||||
var self = this,
|
||||
args = arguments;
|
||||
setTimeout(function() {
|
||||
window.iframeCallback = undefined;
|
||||
iframe.remove();
|
||||
func.apply( self, args );
|
||||
func = function() {};
|
||||
start();
|
||||
}, 0 );
|
||||
};
|
||||
iframe = jQuery( "<div/>" ).css({ position: "absolute", width: "500px", left: "-600px" })
|
||||
.append( jQuery( "<iframe/>" ).attr( "src", url( "./data/" + fileName ) ) )
|
||||
.appendTo( "#qunit-fixture" );
|
||||
});
|
||||
};
|
||||
window.iframeCallback = undefined;
|
||||
|
||||
function moduleTeardown() {}
|
@ -1,242 +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>Sizzle Test Suite</title>
|
||||
<link rel="Stylesheet" media="screen" href="libs/qunit/qunit.css" />
|
||||
<script type="text/javascript" src="libs/qunit/qunit.js"></script>
|
||||
<script type="text/javascript" src="data/testinit.js"></script>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="../dist/sizzle.js"></script>
|
||||
<script type="text/javascript" src="unit/selector.js"></script>
|
||||
<script type="text/javascript" src="unit/utilities.js"></script>
|
||||
<script type="text/javascript" src="unit/extending.js"></script>
|
||||
</head>
|
||||
|
||||
<body id="body">
|
||||
<div id="qunit"></div>
|
||||
|
||||
<!-- Test HTML -->
|
||||
<dl id="dl" style="position:absolute;top:-32767px;left:-32767px;width:1px">
|
||||
<div id="qunit-fixture">
|
||||
<p id="firstp">See <a id="simon1" href="http://simon.incutio.com/archive/2003/03/25/#getElementsBySelector" rel="bookmark">this blog entry</a> for more information.</p>
|
||||
<p id="ap">
|
||||
Here are some [links] in a normal paragraph: <a id="google" href="http://www.google.com/" title="Google!">Google</a>,
|
||||
<a id="groups" href="http://groups.google.com/" class="GROUPS">Google Groups (Link)</a>.
|
||||
This link has <code id="code1"><a href="http://smin" id="anchor1">class="blog"</a></code>:
|
||||
<a href="http://diveintomark.org/" class="blog" hreflang="en" id="mark">diveintomark</a>
|
||||
|
||||
</p>
|
||||
<div id="foo">
|
||||
<p id="sndp">Everything inside the red border is inside a div with <code>id="foo"</code>.</p>
|
||||
<p lang="en" id="en">This is a normal link: <a id="yahoo" href="http://www.yahoo.com/" class="blogTest">Yahoo</a></p>
|
||||
<p id="sap">This link has <code><a href="#2" id="anchor2">class="blog"</a></code>: <a href="http://simon.incutio.com/" class="blog link" id="simon">Simon Willison's Weblog</a></p>
|
||||
|
||||
</div>
|
||||
<div id="nothiddendiv" style="height:1px;background:white;" class="nothiddendiv">
|
||||
<div id="nothiddendivchild"></div>
|
||||
</div>
|
||||
<span id="name+value"></span>
|
||||
<p id="first">Try them out:</p>
|
||||
<ul id="firstUL"></ul>
|
||||
<ol id="empty"><!-- comment --></ol>
|
||||
<form id="form" action="formaction">
|
||||
<label for="action" id="label-for">Action:</label>
|
||||
<input type="text" name="action" value="Test" id="text1" maxlength="30"/>
|
||||
<input type="text" name="text2" value="Test" id="text2" disabled="disabled"/>
|
||||
<input type="radio" name="radio1" id="radio1" value="on"/>
|
||||
|
||||
<input type="radio" name="radio2" id="radio2" checked="checked"/>
|
||||
<input type="checkbox" name="check" id="check1" checked="checked"/>
|
||||
<input type="checkbox" id="check2" value="on"/>
|
||||
|
||||
<input type="hidden" name="hidden" id="hidden1"/>
|
||||
<input type="text" style="display:none;" name="foo[bar]" id="hidden2"/>
|
||||
|
||||
<input type="text" id="name" name="name" value="name" />
|
||||
<input type="search" id="search" name="search" value="search" />
|
||||
|
||||
<button id="button" name="button" type="button">Button</button>
|
||||
|
||||
<textarea id="area1" maxlength="30">foobar</textarea>
|
||||
|
||||
<select name="select1" id="select1">
|
||||
<option id="option1a" class="emptyopt" value="">Nothing</option>
|
||||
<option id="option1b" value="1">1</option>
|
||||
<option id="option1c" value="2">2</option>
|
||||
<option id="option1d" value="3">3</option>
|
||||
</select>
|
||||
<select name="select2" id="select2">
|
||||
<option id="option2a" class="emptyopt" value="">Nothing</option>
|
||||
<option id="option2b" value="1">1</option>
|
||||
<option id="option2c" value="2">2</option>
|
||||
<option id="option2d" selected="selected" value="3">3</option>
|
||||
</select>
|
||||
<select name="select3" id="select3" multiple="multiple">
|
||||
<option id="option3a" class="emptyopt" value="">Nothing</option>
|
||||
<option id="option3b" selected="selected" value="1">1</option>
|
||||
<option id="option3c" selected="selected" value="2">2</option>
|
||||
<option id="option3d" value="3">3</option>
|
||||
<option id="option3e">no value</option>
|
||||
</select>
|
||||
<select name="select4" id="select4" multiple="multiple">
|
||||
<optgroup disabled="disabled">
|
||||
<option id="option4a" class="emptyopt" value="">Nothing</option>
|
||||
<option id="option4b" disabled="disabled" selected="selected" value="1">1</option>
|
||||
<option id="option4c" selected="selected" value="2">2</option>
|
||||
</optgroup>
|
||||
<option selected="selected" disabled="disabled" id="option4d" value="3">3</option>
|
||||
<option id="option4e">no value</option>
|
||||
</select>
|
||||
<select name="select5" id="select5">
|
||||
<option id="option5a" value="3">1</option>
|
||||
<option id="option5b" value="2">2</option>
|
||||
<option id="option5c" value="1">3</option>
|
||||
</select>
|
||||
|
||||
<object id="object1" codebase="stupid">
|
||||
<param name="p1" value="x1" />
|
||||
<param name="p2" value="x2" />
|
||||
</object>
|
||||
|
||||
<span id="台北Táiběi"></span>
|
||||
<span id="台北" lang="中文"></span>
|
||||
<span id="utf8class1" class="台北Táiběi 台北"></span>
|
||||
<span id="utf8class2" class="台北"></span>
|
||||
<span id="foo:bar" class="foo:bar"><span id="foo_descendent"></span></span>
|
||||
<span id="test.foo[5]bar" class="test.foo[5]bar"></span>
|
||||
|
||||
<foo_bar id="foobar">test element</foo_bar>
|
||||
</form>
|
||||
<b id="floatTest">Float test.</b>
|
||||
<iframe id="iframe" name="iframe"></iframe>
|
||||
<form id="lengthtest">
|
||||
<input type="text" id="length" name="test"/>
|
||||
<input type="text" id="idTest" name="id"/>
|
||||
</form>
|
||||
<table id="table"></table>
|
||||
|
||||
<form id="name-tests">
|
||||
<!-- Inputs with a grouped name attribute. -->
|
||||
<input name="types[]" id="types_all" type="checkbox" value="all" />
|
||||
<input name="types[]" id="types_anime" type="checkbox" value="anime" />
|
||||
<input name="types[]" id="types_movie" type="checkbox" value="movie" />
|
||||
</form>
|
||||
|
||||
<form id="testForm" action="#" method="get">
|
||||
<textarea name="T3" rows="2" cols="15">?
|
||||
Z</textarea>
|
||||
<input type="hidden" name="H1" value="x" />
|
||||
<input type="hidden" name="H2" />
|
||||
<input name="PWD" type="password" value="" />
|
||||
<input name="T1" type="text" />
|
||||
<input name="T2" type="text" value="YES" readonly="readonly" />
|
||||
<input type="checkbox" name="C1" value="1" />
|
||||
<input type="checkbox" name="C2" />
|
||||
<input type="radio" name="R1" value="1" />
|
||||
<input type="radio" name="R1" value="2" />
|
||||
<input type="text" name="My Name" value="me" />
|
||||
<input type="reset" name="reset" value="NO" />
|
||||
<select name="S1">
|
||||
<option value="abc">ABC</option>
|
||||
<option value="abc">ABC</option>
|
||||
<option value="abc">ABC</option>
|
||||
</select>
|
||||
<select name="S2" multiple="multiple" size="3">
|
||||
<option value="abc">ABC</option>
|
||||
<option value="abc">ABC</option>
|
||||
<option value="abc">ABC</option>
|
||||
</select>
|
||||
<select name="S3">
|
||||
<option selected="selected">YES</option>
|
||||
</select>
|
||||
<select name="S4">
|
||||
<option value="" selected="selected">NO</option>
|
||||
</select>
|
||||
<input type="submit" name="sub1" value="NO" />
|
||||
<input type="submit" name="sub2" value="NO" />
|
||||
<input type="image" name="sub3" value="NO" />
|
||||
<button name="sub4" type="submit" value="NO">NO</button>
|
||||
<input name="D1" type="text" value="NO" disabled="disabled" />
|
||||
<input type="checkbox" checked="checked" disabled="disabled" name="D2" value="NO" />
|
||||
<input type="radio" name="D3" value="NO" checked="checked" disabled="disabled" />
|
||||
<select name="D4" disabled="disabled">
|
||||
<option selected="selected" value="NO">NO</option>
|
||||
</select>
|
||||
<input id="list-test" type="text" />
|
||||
<datalist id="datalist">
|
||||
<option value="option"></option>
|
||||
</datalist>
|
||||
</form>
|
||||
<div id="moretests">
|
||||
<form>
|
||||
<div id="checkedtest" style="display:none;">
|
||||
<input type="radio" name="checkedtestradios" checked="checked"/>
|
||||
<input type="radio" name="checkedtestradios" value="on"/>
|
||||
<input type="checkbox" name="checkedtestcheckboxes" checked="checked"/>
|
||||
<input type="checkbox" name="checkedtestcheckboxes" />
|
||||
</div>
|
||||
</form>
|
||||
<div id="nonnodes"><span>hi</span> there <!-- mon ami --></div>
|
||||
<div id="t2037">
|
||||
<div><div class="hidden">hidden</div></div>
|
||||
</div>
|
||||
<div id="t6652">
|
||||
<div></div>
|
||||
</div>
|
||||
<div id="t12087">
|
||||
<input type="hidden" id="el12087" data-comma="0,1"/>
|
||||
</div>
|
||||
<div id="no-clone-exception"><object><embed></embed></object></div>
|
||||
<div id="names-group">
|
||||
<span id="name-is-example" name="example"></span>
|
||||
<span id="name-is-div" name="div"></span>
|
||||
</div>
|
||||
<script id="script-no-src"></script>
|
||||
<script id="script-src" src="data/empty.js"></script>
|
||||
<div id="id-name-tests">
|
||||
<a id="tName1ID" name="tName1"><span></span></a>
|
||||
<a id="tName2ID" name="tName2"><span></span></a>
|
||||
<div id="tName1"><span id="tName1-span">C</span></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="tabindex-tests">
|
||||
<ol id="listWithTabIndex" tabindex="5">
|
||||
<li id="foodWithNegativeTabIndex" tabindex="-1">Rice</li>
|
||||
<li id="foodNoTabIndex">Beans</li>
|
||||
<li>Blinis</li>
|
||||
<li>Tofu</li>
|
||||
</ol>
|
||||
|
||||
<div id="divWithNoTabIndex">I'm hungry. I should...</div>
|
||||
<span>...</span><a href="#" id="linkWithNoTabIndex">Eat lots of food</a><span>...</span> |
|
||||
<span>...</span><a href="#" id="linkWithTabIndex" tabindex="2">Eat a little food</a><span>...</span> |
|
||||
<span>...</span><a href="#" id="linkWithNegativeTabIndex" tabindex="-1">Eat no food</a><span>...</span>
|
||||
<span>...</span><a id="linkWithNoHrefWithNoTabIndex">Eat a burger</a><span>...</span>
|
||||
<span>...</span><a id="linkWithNoHrefWithTabIndex" tabindex="1">Eat some funyuns</a><span>...</span>
|
||||
<span>...</span><a id="linkWithNoHrefWithNegativeTabIndex" tabindex="-1">Eat some funyuns</a><span>...</span>
|
||||
</div>
|
||||
|
||||
<div id="liveHandlerOrder">
|
||||
<span id="liveSpan1"><a href="#" id="liveLink1"></a></span>
|
||||
<span id="liveSpan2"><a href="#" id="liveLink2"></a></span>
|
||||
</div>
|
||||
|
||||
<div id="siblingTest">
|
||||
<em id="siblingfirst">1</em>
|
||||
<em id="siblingnext">2</em>
|
||||
<em id="siblingthird">
|
||||
<em id="siblingchild">
|
||||
<em id="siblinggrandchild">
|
||||
<em id="siblinggreatgrandchild"></em>
|
||||
</em>
|
||||
</em>
|
||||
</em>
|
||||
<span id="siblingspan"></span>
|
||||
</div>
|
||||
</div>
|
||||
</dl>
|
||||
<br id="last"/>
|
||||
</body>
|
||||
</html>
|
9597
src/sizzle/test/jquery.js
vendored
9597
src/sizzle/test/jquery.js
vendored
File diff suppressed because it is too large
Load Diff
@ -1,95 +0,0 @@
|
||||
module("extending", { teardown: moduleTeardown });
|
||||
|
||||
test("custom pseudos", function() {
|
||||
expect( 6 );
|
||||
|
||||
Sizzle.selectors.filters.foundation = Sizzle.selectors.filters.root;
|
||||
deepEqual( Sizzle(":foundation"), [ document.documentElement ], "Copy element filter with new name" );
|
||||
delete Sizzle.selectors.filters.foundation;
|
||||
|
||||
Sizzle.selectors.setFilters.primary = Sizzle.selectors.setFilters.first;
|
||||
t( "Copy set filter with new name", "div:primary", ["qunit"] );
|
||||
delete Sizzle.selectors.setFilters.primary;
|
||||
|
||||
Sizzle.selectors.filters.aristotlean = Sizzle.selectors.createPseudo(function() {
|
||||
return function( elem ) {
|
||||
return !!elem.id;
|
||||
};
|
||||
});
|
||||
t( "Custom element filter", "#foo :aristotlean", [ "sndp", "en", "yahoo", "sap", "anchor2", "simon" ] );
|
||||
delete Sizzle.selectors.filters.aristotlean;
|
||||
|
||||
Sizzle.selectors.filters.endswith = Sizzle.selectors.createPseudo(function( text ) {
|
||||
return function( elem ) {
|
||||
return Sizzle.getText( elem ).slice( -text.length ) === text;
|
||||
};
|
||||
});
|
||||
t( "Custom element filter with argument", "a:endswith(ogle)", ["google"] );
|
||||
delete Sizzle.selectors.filters.endswith;
|
||||
|
||||
Sizzle.selectors.setFilters.second = Sizzle.selectors.createPseudo(function() {
|
||||
return Sizzle.selectors.createPseudo(function( seed, matches ) {
|
||||
if ( seed[1] ) {
|
||||
matches[1] = seed[1];
|
||||
seed[1] = false;
|
||||
}
|
||||
});
|
||||
});
|
||||
t( "Custom set filter", "#qunit-fixture p:second", ["ap"] );
|
||||
delete Sizzle.selectors.filters.second;
|
||||
|
||||
Sizzle.selectors.setFilters.slice = Sizzle.selectors.createPseudo(function( argument ) {
|
||||
var bounds = argument.split(":");
|
||||
return Sizzle.selectors.createPseudo(function( seed, matches ) {
|
||||
var i = bounds[1];
|
||||
|
||||
// Match elements found at the specified indexes
|
||||
while ( --i >= bounds[0] ) {
|
||||
if ( seed[i] ) {
|
||||
matches[i] = seed[i];
|
||||
seed[i] = false;
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
t( "Custom set filter with argument", "#qunit-fixture p:slice(1:3)", [ "ap", "sndp" ] );
|
||||
delete Sizzle.selectors.filters.slice;
|
||||
});
|
||||
|
||||
test("backwards-compatible custom pseudos", function() {
|
||||
expect( 3 );
|
||||
|
||||
Sizzle.selectors.filters.icontains = function( elem, i, match ) {
|
||||
return Sizzle.getText( elem ).toLowerCase().indexOf( (match[3] || "").toLowerCase() ) > -1;
|
||||
};
|
||||
t( "Custom element filter with argument", "a:icontains(THIS BLOG ENTRY)", ["simon1"] );
|
||||
delete Sizzle.selectors.filters.icontains;
|
||||
|
||||
Sizzle.selectors.setFilters.podium = function( elements, argument ) {
|
||||
var count = argument == null || argument === "" ? 3 : +argument;
|
||||
return elements.slice( 0, count );
|
||||
};
|
||||
// Using TAG as the first token here forces this setMatcher into a fail state
|
||||
// Where the descendent combinator was lost
|
||||
t( "Custom setFilter", "form#form :PODIUM", ["label-for", "text1", "text2"] );
|
||||
t( "Custom setFilter with argument", "#form input:Podium(1)", ["text1"] );
|
||||
delete Sizzle.selectors.setFilters.podium;
|
||||
});
|
||||
|
||||
test("custom attribute getters", function() {
|
||||
expect( 2 );
|
||||
|
||||
var original = Sizzle.selectors.attrHandle.hreflang,
|
||||
selector = "a:contains('mark')[hreflang='http://diveintomark.org/en']";
|
||||
|
||||
Sizzle.selectors.attrHandle.hreflang = function( elem, name ) {
|
||||
var href = elem.getAttribute("href"),
|
||||
lang = elem.getAttribute( name );
|
||||
return lang && ( href + lang );
|
||||
};
|
||||
|
||||
deepEqual( Sizzle(selector, createWithFriesXML()), [], "Custom attrHandle (preferred document)" );
|
||||
t( "Custom attrHandle (preferred document)", selector, ["mark"] );
|
||||
|
||||
Sizzle.selectors.attrHandle.hreflang = original;
|
||||
});
|
File diff suppressed because it is too large
Load Diff
@ -1,169 +0,0 @@
|
||||
module("utilities", { teardown: moduleTeardown });
|
||||
|
||||
function testAttr( doc ) {
|
||||
expect( 9 );
|
||||
|
||||
var el;
|
||||
if ( doc ) {
|
||||
// XML
|
||||
el = doc.createElement( "input" );
|
||||
el.setAttribute( "type", "checkbox" );
|
||||
} else {
|
||||
// Set checked on creation by creating with a fragment
|
||||
// See http://jsfiddle.net/8sVgA/1/show/light in oldIE
|
||||
el = jQuery( "<input type='checkbox' checked='checked' />" )[0];
|
||||
}
|
||||
|
||||
// Set it again for good measure
|
||||
el.setAttribute( "checked", "checked" );
|
||||
el.setAttribute( "id", "id" );
|
||||
el.setAttribute( "value", "on" );
|
||||
|
||||
strictEqual( Sizzle.attr( el, "nonexistent" ), null, "nonexistent" );
|
||||
strictEqual( Sizzle.attr( el, "id" ), "id", "existent" );
|
||||
strictEqual( Sizzle.attr( el, "value" ), "on", "value" );
|
||||
strictEqual( Sizzle.attr( el, "checked" ), "checked", "boolean" );
|
||||
strictEqual( Sizzle.attr( el, "href" ), null, "interpolation risk" );
|
||||
strictEqual( Sizzle.attr( el, "constructor" ), null,
|
||||
"Object.prototype property \"constructor\" (negative)" );
|
||||
strictEqual( Sizzle.attr( el, "watch" ), null,
|
||||
"Gecko Object.prototype property \"watch\" (negative)" );
|
||||
el.setAttribute( "constructor", "foo" );
|
||||
el.setAttribute( "watch", "bar" );
|
||||
strictEqual( Sizzle.attr( el, "constructor" ), "foo",
|
||||
"Object.prototype property \"constructor\"" );
|
||||
strictEqual( Sizzle.attr( el, "watch" ), "bar",
|
||||
"Gecko Object.prototype property \"watch\"" );
|
||||
}
|
||||
|
||||
test("Sizzle.attr (HTML)", function() {
|
||||
testAttr();
|
||||
});
|
||||
|
||||
test("Sizzle.attr (XML)", function() {
|
||||
testAttr( jQuery.parseXML("<root/>") );
|
||||
});
|
||||
|
||||
test("Sizzle.contains", function() {
|
||||
expect( 16 );
|
||||
|
||||
var container = document.getElementById("nonnodes"),
|
||||
element = container.firstChild,
|
||||
text = element.nextSibling,
|
||||
nonContained = container.nextSibling,
|
||||
detached = document.createElement("a");
|
||||
ok( element && element.nodeType === 1, "preliminary: found element" );
|
||||
ok( text && text.nodeType === 3, "preliminary: found text" );
|
||||
ok( nonContained, "preliminary: found non-descendant" );
|
||||
ok( Sizzle.contains(container, element), "child" );
|
||||
ok( Sizzle.contains(container.parentNode, element), "grandchild" );
|
||||
ok( Sizzle.contains(container, text), "text child" );
|
||||
ok( Sizzle.contains(container.parentNode, text), "text grandchild" );
|
||||
ok( !Sizzle.contains(container, container), "self" );
|
||||
ok( !Sizzle.contains(element, container), "parent" );
|
||||
ok( !Sizzle.contains(container, nonContained), "non-descendant" );
|
||||
ok( !Sizzle.contains(container, document), "document" );
|
||||
ok( !Sizzle.contains(container, document.documentElement), "documentElement (negative)" );
|
||||
ok( !Sizzle.contains(container, null), "Passing null does not throw an error" );
|
||||
ok( Sizzle.contains(document, document.documentElement), "documentElement (positive)" );
|
||||
ok( Sizzle.contains(document, element), "document container (positive)" );
|
||||
ok( !Sizzle.contains(document, detached), "document container (negative)" );
|
||||
});
|
||||
|
||||
if ( jQuery("<svg xmlns='http://www.w3.org/2000/svg' version='1.1' height='1' width='1'><g/></svg>")[0].firstChild ) {
|
||||
test("Sizzle.contains in SVG (jQuery #10832)", function() {
|
||||
expect( 4 );
|
||||
|
||||
var svg = jQuery(
|
||||
"<svg xmlns='http://www.w3.org/2000/svg' version='1.1' height='1' width='1'>" +
|
||||
"<g><circle cx='1' cy='1' r='1' /></g>" +
|
||||
"</svg>"
|
||||
).appendTo("#qunit-fixture")[0];
|
||||
|
||||
ok( Sizzle.contains( svg, svg.firstChild ), "root child" );
|
||||
ok( Sizzle.contains( svg.firstChild, svg.firstChild.firstChild ), "element child" );
|
||||
ok( Sizzle.contains( svg, svg.firstChild.firstChild ), "root granchild" );
|
||||
ok( !Sizzle.contains( svg.firstChild.firstChild, svg.firstChild ), "parent (negative)" );
|
||||
});
|
||||
}
|
||||
|
||||
test("Sizzle.uniqueSort", function() {
|
||||
expect( 14 );
|
||||
|
||||
function Arrayish( arr ) {
|
||||
var i = this.length = arr.length;
|
||||
while ( i-- ) {
|
||||
this[ i ] = arr[ i ];
|
||||
}
|
||||
}
|
||||
Arrayish.prototype = {
|
||||
slice: [].slice,
|
||||
sort: [].sort,
|
||||
splice: [].splice
|
||||
};
|
||||
|
||||
var i, tests,
|
||||
detached = [],
|
||||
body = document.body,
|
||||
fixture = document.getElementById("qunit-fixture"),
|
||||
detached1 = document.createElement("p"),
|
||||
detached2 = document.createElement("ul"),
|
||||
detachedChild = detached1.appendChild( document.createElement("a") ),
|
||||
detachedGrandchild = detachedChild.appendChild( document.createElement("b") );
|
||||
|
||||
for ( i = 0; i < 12; i++ ) {
|
||||
detached.push( document.createElement("li") );
|
||||
detached[i].id = "detached" + i;
|
||||
detached2.appendChild( document.createElement("li") ).id = "detachedChild" + i;
|
||||
}
|
||||
|
||||
tests = {
|
||||
"Empty": {
|
||||
input: [],
|
||||
expected: []
|
||||
},
|
||||
"Single-element": {
|
||||
input: [ fixture ],
|
||||
expected: [ fixture ]
|
||||
},
|
||||
"No duplicates": {
|
||||
input: [ fixture, body ],
|
||||
expected: [ body, fixture ]
|
||||
},
|
||||
"Duplicates": {
|
||||
input: [ body, fixture, fixture, body ],
|
||||
expected: [ body, fixture ]
|
||||
},
|
||||
"Detached": {
|
||||
input: detached.slice( 0 ),
|
||||
expected: detached.slice( 0 )
|
||||
},
|
||||
"Detached children": {
|
||||
input: [
|
||||
detached2.childNodes[0],
|
||||
detached2.childNodes[1],
|
||||
detached2.childNodes[2],
|
||||
detached2.childNodes[3]
|
||||
],
|
||||
expected: [
|
||||
detached2.childNodes[0],
|
||||
detached2.childNodes[1],
|
||||
detached2.childNodes[2],
|
||||
detached2.childNodes[3]
|
||||
]
|
||||
},
|
||||
"Attached/detached mixture": {
|
||||
input: [ detached1, fixture, detached2, document, detachedChild, body, detachedGrandchild ],
|
||||
expected: [ document, body, fixture ],
|
||||
length: 3
|
||||
}
|
||||
};
|
||||
|
||||
jQuery.each( tests, function( label, test ) {
|
||||
var length = test.length || test.input.length;
|
||||
deepEqual( Sizzle.uniqueSort( test.input ).slice( 0, length ), test.expected, label + " (array)" );
|
||||
deepEqual( Sizzle.uniqueSort( new Arrayish(test.input) ).slice( 0, length ), test.expected, label + " (quasi-array)" );
|
||||
});
|
||||
});
|
||||
|
||||
testIframeWithCallback( "Sizzle.uniqueSort works cross-window (jQuery #14381)", "mixed_sort.html", deepEqual );
|
Loading…
Reference in New Issue
Block a user