| 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 |