assert.strictEqual( util.isIPv6Address( ipCase[ 1 ] ), ipCase[ 0 ], ipCase[ 2 ] );
} );
} );
+
+ QUnit.test( 'escapeRegExp', function ( assert ) {
+ var specials, normal;
+
+ specials = [
+ '\\',
+ '{',
+ '}',
+ '(',
+ ')',
+ '[',
+ ']',
+ '|',
+ '.',
+ '?',
+ '*',
+ '+',
+ '-',
+ '^',
+ '$'
+ ];
+
+ normal = [
+ 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
+ 'abcdefghijklmnopqrstuvwxyz',
+ '0123456789'
+ ].join( '' );
+
+ specials.forEach( function ( str ) {
+ assert.propEqual( str.match( new RegExp( mw.util.escapeRegExp( str ) ) ), [ str ], 'Match ' + str );
+ } );
+
+ assert.strictEqual( mw.util.escapeRegExp( normal ), normal, 'Alphanumerals are left alone' );
+ } );
+
+ QUnit.test( 'debounce', function ( assert ) {
+ var fn,
+ q = [],
+ done = assert.async();
+
+ fn = mw.util.debounce( 0, function ( data ) {
+ q.push( data );
+ } );
+
+ fn( 1 );
+ fn( 2 );
+ fn( 3 );
+
+ setTimeout( function () {
+ assert.deepEqual(
+ q,
+ [ 3 ],
+ 'Last one ran'
+ );
+ done();
+ } );
+ } );
}() );