File: ve.DiffMatchPatch.test.js

package info (click to toggle)
mediawiki 1%3A1.43.3%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 417,464 kB
  • sloc: php: 1,062,949; javascript: 664,290; sql: 9,714; python: 5,458; xml: 3,489; sh: 1,131; makefile: 64
file content (103 lines) | stat: -rw-r--r-- 2,349 bytes parent folder | download | duplicates (2)
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
		);
	} );
} );