1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
|
/*!
* VisualEditor BranchNode tests.
*
* @copyright See AUTHORS.txt
*/
QUnit.module( 've.DiffMatchPatch' );
/* Tests */
QUnit.test( 'indexOf/lastIndexOf', ( assert ) => {
const dmp = new ve.DiffMatchPatch( new ve.dm.HashValueStore(), new ve.dm.HashValueStore() ),
textString = 'hello world',
textArray = textString.split( '' ),
cases = [
{
msg: 'search value present',
searchValue: 'o'
},
{
msg: 'search value present, from index negative',
searchValue: 'o',
fromIndex: -2
},
{
msg: 'search value present, from index 0',
searchValue: 'o',
fromIndex: 0
},
{
msg: 'search value present, from index before first occurrence',
searchValue: 'o',
fromIndex: 2
},
{
msg: 'search value present, from index first occurrence',
searchValue: 'o',
fromIndex: 4
},
{
msg: 'search value present, from index between first and last occurrence',
searchValue: 'o',
fromIndex: 6
},
{
msg: 'search value present, from index last occurrence',
searchValue: 'o',
fromIndex: 7
},
{
msg: 'search value present, from index array length',
searchValue: 'o',
fromIndex: 11
},
{
msg: 'search value present, from greater than array length',
searchValue: 'o',
fromIndex: 13
},
{
msg: 'empty string',
searchValue: ''
},
{
msg: 'empty string, negative index',
searchValue: '',
fromIndex: -2
},
{
msg: 'empty string, index within array',
searchValue: '',
fromIndex: 6
},
{
msg: 'empty string, index greater than array length',
searchValue: '',
fromIndex: 99
},
{
msg: 'search value not present',
searchValue: 'heya'
},
{
msg: 'search value multiple characters',
searchValue: 'world'
}
];
cases.forEach( ( caseItem ) => {
let expected = textString.indexOf( caseItem.searchValue, caseItem.fromIndex );
assert.strictEqual(
dmp.indexOf( textArray, caseItem.searchValue, caseItem.fromIndex ),
expected,
caseItem.msg + ': indexOf is ' + expected
);
expected = textString.lastIndexOf( caseItem.searchValue, caseItem.fromIndex );
assert.strictEqual(
dmp.lastIndexOf( textArray, caseItem.searchValue, caseItem.fromIndex ),
expected,
caseItem.msg + ': lastIndexOf is ' + expected
);
} );
} );
|