( function ( $ ) { QUnit.module( 'jquery.highlightText', QUnit.newMwEnvironment() ); QUnit.test( 'Check', function ( assert ) { var $fixture, cases = [ { desc: 'Test 001', text: 'Blue Öyster Cult', highlight: 'Blue', expected: 'Blue Öyster Cult' }, { desc: 'Test 002', text: 'Blue Öyster Cult', highlight: 'Blue ', expected: 'Blue Öyster Cult' }, { desc: 'Test 003', text: 'Blue Öyster Cult', highlight: 'Blue Ö', expected: 'Blue Öyster Cult' }, { desc: 'Test 004', text: 'Blue Öyster Cult', highlight: 'Blue Öy', expected: 'Blue Öyster Cult' }, { desc: 'Test 005', text: 'Blue Öyster Cult', highlight: ' Blue', expected: 'Blue Öyster Cult' }, { desc: 'Test 006', text: 'Blue Öyster Cult', highlight: ' Blue ', expected: 'Blue Öyster Cult' }, { desc: 'Test 007', text: 'Blue Öyster Cult', highlight: ' Blue Ö', expected: 'Blue Öyster Cult' }, { desc: 'Test 008', text: 'Blue Öyster Cult', highlight: ' Blue Öy', expected: 'Blue Öyster Cult' }, { desc: 'Test 009: Highlighter broken on starting Umlaut?', text: 'Österreich', highlight: 'Österreich', expected: 'Österreich' }, { desc: 'Test 010: Highlighter broken on starting Umlaut?', text: 'Österreich', highlight: 'Ö', expected: 'Österreich' }, { desc: 'Test 011: Highlighter broken on starting Umlaut?', text: 'Österreich', highlight: 'Öst', expected: 'Österreich' }, { desc: 'Test 012: Highlighter broken on starting Umlaut?', text: 'Österreich', highlight: 'Oe', expected: 'Österreich' }, { desc: 'Test 013: Highlighter broken on punctuation mark?', text: 'So good. To be there', highlight: 'good', expected: 'So good. To be there' }, { desc: 'Test 014: Highlighter broken on space?', text: 'So good. To be there', highlight: 'be', expected: 'So good. To be there' }, { desc: 'Test 015: Highlighter broken on space?', text: 'So good. To be there', highlight: ' be', expected: 'So good. To be there' }, { desc: 'Test 016: Highlighter broken on space?', text: 'So good. To be there', highlight: 'be ', expected: 'So good. To be there' }, { desc: 'Test 017: Highlighter broken on space?', text: 'So good. To be there', highlight: ' be ', expected: 'So good. To be there' }, { desc: 'Test 018: en de Highlighter broken on special character at the end?', text: 'So good. xbß', highlight: 'xbß', expected: 'So good. xbß' }, { desc: 'Test 019: en de Highlighter broken on special character at the end?', text: 'So good. xbß.', highlight: 'xbß.', expected: 'So good. xbß.' }, { desc: 'Test 020: RTL he Hebrew', text: 'חסיד אומות העולם', highlight: 'חסיד אומות העולם', expected: 'חסיד אומות העולם' }, { desc: 'Test 021: RTL he Hebrew', text: 'חסיד אומות העולם', highlight: 'חסי', expected: 'חסיד אומות העולם' }, { desc: 'Test 022: ja Japanese', text: '諸国民の中の正義の人', highlight: '諸国民の中の正義の人', expected: '諸国民の中の正義の人' }, { desc: 'Test 023: ja Japanese', text: '諸国民の中の正義の人', highlight: '諸国', expected: '諸国民の中の正義の人' }, { desc: 'Test 024: fr French text and « french quotes » (guillemets)', text: '« L\'oiseau est sur l’île »', highlight: '« L\'oiseau est sur l’île »', expected: '« L\'oiseau est sur l’île »' }, { desc: 'Test 025: fr French text and « french quotes » (guillemets)', text: '« L\'oiseau est sur l’île »', highlight: '« L\'oise', expected: '« L\'oiseau est sur l’île »' }, { desc: 'Test 025a: fr French text and « french quotes » (guillemets) - does it match the single strings "«" and "L" separately?', text: '« L\'oiseau est sur l’île »', highlight: '« L', expected: '« L\'oiseau est sur l’île »' }, { desc: 'Test 026: ru Russian', text: 'Праведники мира', highlight: 'Праведники мира', expected: 'Праведники мира' }, { desc: 'Test 027: ru Russian', text: 'Праведники мира', highlight: 'Праве', expected: 'Праведники мира' }, { desc: 'Test 028 ka Georgian', text: 'მთავარი გვერდი', highlight: 'მთავარი გვერდი', expected: 'მთავარი გვერდი' }, { desc: 'Test 029 ka Georgian', text: 'მთავარი გვერდი', highlight: 'მთა', expected: 'მთავარი გვერდი' }, { desc: 'Test 030 hy Armenian', text: 'Նոնա Գափրինդաշվիլի', highlight: 'Նոնա Գափրինդաշվիլի', expected: 'Նոնա Գափրինդաշվիլի' }, { desc: 'Test 031 hy Armenian', text: 'Նոնա Գափրինդաշվիլի', highlight: 'Նոն', expected: 'Նոնա Գափրինդաշվիլի' }, { desc: 'Test 032: th Thai', text: 'พอล แอร์ดิช', highlight: 'พอล แอร์ดิช', expected: 'พอล แอร์ดิช' }, { desc: 'Test 033: th Thai', text: 'พอล แอร์ดิช', highlight: 'พอ', expected: 'พอล แอร์ดิช' }, { desc: 'Test 034: RTL ar Arabic', text: 'بول إيردوس', highlight: 'بول إيردوس', expected: 'بول إيردوس' }, { desc: 'Test 035: RTL ar Arabic', text: 'بول إيردوس', highlight: 'بو', expected: 'بول إيردوس' } ]; QUnit.expect( cases.length ); $.each( cases, function ( i, item ) { $fixture = $( '

' ).text( item.text ).highlightText( item.highlight ); assert.equal( $fixture.html(), // Re-parse to normalize $( '

' ).html( item.expected ).html(), item.desc || undefined ); } ); } ); }( jQuery ) );