@@ -2142,3 +2142,77 @@ QUnit.test( "jQuery.escapeSelector", function( assert ) {
2142
2142
assert . equal ( jQuery . escapeSelector ( "\uDF06" ) , "\uDF06" , "Doesn't escape lone low surrogate" ) ;
2143
2143
assert . equal ( jQuery . escapeSelector ( "\uD834" ) , "\uD834" , "Doesn't escape lone high surrogate" ) ;
2144
2144
} ) ;
2145
+
2146
+ QUnit . test ( "custom pseudos" , function ( assert ) {
2147
+ assert . expect ( 6 ) ;
2148
+
2149
+ try {
2150
+ jQuery . expr . filters . foundation = jQuery . expr . filters . root ;
2151
+ assert . deepEqual ( jQuery . find ( ":foundation" ) , [ document . documentElement ] , "Copy element filter with new name" ) ;
2152
+ } finally {
2153
+ delete jQuery . expr . filters . foundation ;
2154
+ }
2155
+
2156
+ try {
2157
+ jQuery . expr . setFilters . primary = jQuery . expr . setFilters . first ;
2158
+ assert . t ( "Copy set filter with new name" , "div#qunit-fixture :primary" , [ "firstp" ] ) ;
2159
+ } finally {
2160
+ delete jQuery . expr . setFilters . primary ;
2161
+ }
2162
+
2163
+ try {
2164
+ jQuery . expr . filters . aristotlean = jQuery . expr . createPseudo ( function ( ) {
2165
+ return function ( elem ) {
2166
+ return ! ! elem . id ;
2167
+ } ;
2168
+ } ) ;
2169
+ assert . t ( "Custom element filter" , "#foo :aristotlean" , [ "sndp" , "en" , "yahoo" , "sap" , "anchor2" , "simon" ] ) ;
2170
+ } finally {
2171
+ delete jQuery . expr . filters . aristotlean ;
2172
+ }
2173
+
2174
+ try {
2175
+ jQuery . expr . filters . endswith = jQuery . expr . createPseudo ( function ( text ) {
2176
+ return function ( elem ) {
2177
+ return jQuery . text ( elem ) . slice ( - text . length ) === text ;
2178
+ } ;
2179
+ } ) ;
2180
+ assert . t ( "Custom element filter with argument" , "a:endswith(ogle)" , [ "google" ] ) ;
2181
+ } finally {
2182
+ delete jQuery . expr . filters . endswith ;
2183
+ }
2184
+
2185
+ try {
2186
+ jQuery . expr . setFilters . second = jQuery . expr . createPseudo ( function ( ) {
2187
+ return jQuery . expr . createPseudo ( function ( seed , matches ) {
2188
+ if ( seed [ 1 ] ) {
2189
+ matches [ 1 ] = seed [ 1 ] ;
2190
+ seed [ 1 ] = false ;
2191
+ }
2192
+ } ) ;
2193
+ } ) ;
2194
+ assert . t ( "Custom set filter" , "#qunit-fixture p:second" , [ "ap" ] ) ;
2195
+ } finally {
2196
+ delete jQuery . expr . filters . second ;
2197
+ }
2198
+
2199
+ try {
2200
+ jQuery . expr . setFilters . slice = jQuery . expr . createPseudo ( function ( argument ) {
2201
+ var bounds = argument . split ( ":" ) ;
2202
+ return jQuery . expr . createPseudo ( function ( seed , matches ) {
2203
+ var i = bounds [ 1 ] ;
2204
+
2205
+ // Match elements found at the specified indexes
2206
+ while ( -- i >= bounds [ 0 ] ) {
2207
+ if ( seed [ i ] ) {
2208
+ matches [ i ] = seed [ i ] ;
2209
+ seed [ i ] = false ;
2210
+ }
2211
+ }
2212
+ } ) ;
2213
+ } ) ;
2214
+ assert . t ( "Custom set filter with argument" , "#qunit-fixture p:slice(1:3)" , [ "ap" , "sndp" ] ) ;
2215
+ } finally {
2216
+ delete jQuery . expr . filters . slice ;
2217
+ }
2218
+ } ) ;
0 commit comments