OLD | NEW |
| (Empty) |
1 <html> | |
2 <head> | |
3 <script src="../../http/tests/inspector/inspector-test.js"></script> | |
4 <script src="datagrid-test.js"></script> | |
5 <script> | |
6 function test() | |
7 { | |
8 function testCase(testName, data, merge, expectSameBackwards) | |
9 { | |
10 InspectorTest.addResult("Test case: " + testName); | |
11 InspectorTest.addResult("Input Segments: " + JSON.stringify(data)); | |
12 var range = WebInspector.SegmentedRange(merge); | |
13 | |
14 var forwardRange = new WebInspector.SegmentedRange(merge); | |
15 data.map(entry => new WebInspector.Segment(entry[0], entry[1], entry[2])
).forEach(forwardRange.append, forwardRange); | |
16 var forward = forwardRange.segments(); | |
17 | |
18 var backwardRange = new WebInspector.SegmentedRange(merge); | |
19 data.reverse().map(entry => new WebInspector.Segment(entry[0], entry[1],
entry[2])).forEach(backwardRange.append, backwardRange); | |
20 var backward = backwardRange.segments(); | |
21 | |
22 // Only do reverse if we merge, otherwise result is order-dependent. | |
23 if (expectSameBackwards && forward.length !== backward.length) { | |
24 InspectorTest.addResult(`FAIL: mismatch between forward and backward
results, ${forward.length} vs. ${backward.length}`); | |
25 expectSameBackwards = false; | |
26 } | |
27 InspectorTest.addResult("Result:"); | |
28 for (var i = 0; i < forward.length; ++i) { | |
29 var f = forward[i], b = backward[i]; | |
30 InspectorTest.addResult(`${f.begin} - ${f.end}: ${f.data}`); | |
31 if (expectSameBackwards && b && (f.begin !== b.begin || f.end !== b.
end || f.data !== b.data)) | |
32 InspectorTest.addResult(`FAIL: Forward/backward mismatch, rever
se segment is ${b.begin} - ${b.end}: ${b.data}`); | |
33 } | |
34 if (!expectSameBackwards) { | |
35 InspectorTest.addResult("Result backwards:"); | |
36 for (var b of backward) | |
37 InspectorTest.addResult(`${b.begin} - ${b.end}: ${b.data}`); | |
38 } | |
39 } | |
40 | |
41 function merge(first, second) | |
42 { | |
43 if (first.begin > second.begin) | |
44 InspectorTest.addResult(`FAIL: merge() callback called with argumen
ts in wrong order, ${first.begin} vs. ${second.begin}`); | |
45 return first.end >= second.begin && first.data === second.data ? first
: null; | |
46 } | |
47 | |
48 testCase("one", [[0, 1, "a"]], merge, true); | |
49 testCase("two adjacent", [[0, 1, "a"], [1, 2, "a"]], merge, true); | |
50 testCase("two apart", [[0, 1, "a"], [2, 3, "a"]], merge, true); | |
51 testCase("two overlapping", [[0, 2, "a"], [2, 3, "a"]], merge, true); | |
52 testCase("two overlapping no merge ", [[0, 2, "a"], [2, 3, "b"]], null, true
); | |
53 testCase("one inside another", [[0, 3, "a"], [1, 2, "a"]], merge, true); | |
54 testCase("one inside another, no merge", [[0, 3, "a"], [1, 2, "b"]]); | |
55 testCase("one between two others", [[0, 2, "a"], [3, 5, "a"], [2, 3, "a"]],
merge, true); | |
56 testCase("one between two others, no merge", [[0, 2, "a"], [3, 5, "b"], [2,
3, "a"]], null, true); | |
57 testCase("one overlapping two others", [[0, 2, "a"], [3, 5, "a"], [1, 4, "a"
]], merge, true); | |
58 testCase("one overlapping two others, no merge", [[0, 2, "a"], [3, 5, "b"],
[1, 4, "a"]]); | |
59 testCase("one consuming many:", [[0, 1, "a"], [2, 3, "a"], [4, 5, "a"], [6,
7, "a"], [2, 6, "a"]], merge, true); | |
60 testCase("one consuming many, no merge:", [[0, 1, "a"], [2, 3, "a"], [4, 5,
"a"], [6, 7, "a"], [2, 6, "a"]]); | |
61 InspectorTest.completeTest(); | |
62 } | |
63 </script> | |
64 </head> | |
65 <body onload="runTest()"> | |
66 <p>Tests SegmentedRange</p> | |
67 </body> | |
68 </html> | |
OLD | NEW |