blob: 86ac57f97dba2b2d14f7567ce62fdaa8e70ba120 [file] [log] [blame]
<html>
<head>
<script src="../../http/tests/inspector/inspector-test.js"></script>
<script>
function initialize_SegmentsMerge() {
InspectorTest.preloadModule("coverage");
}
function test()
{
testAndDump([], []);
testAndDump([{end: 10, count: 1}], []);
testAndDump([{end: 10, count: 1}], [{end: 10, count: 1}]);
testAndDump([{end: 10, count: 1}], [{end: 20, count: 1}]);
testAndDump([{end: 10, count: 1}, {end: 20, count: 1}], []);
testAndDump([{end: 30, count: 1}], [{end: 10, count: undefined}, {end: 20, count: 2}]);
testAndDump([{end: 30, count: undefined}], [{end: 10, count: undefined}, {end: 20, count: 2}]);
InspectorTest.completeTest();
function testAndDump(a, b)
{
dumpSegments("A: ", a);
dumpSegments("B: ", b);
var mergedAB = Coverage.CoverageInfo._mergeCoverage(a, b);
dumpSegments("merged: ", mergedAB);
var mergedBA = Coverage.CoverageInfo._mergeCoverage(b, a);
if (!rangesEqual(mergedAB, mergedBA))
dumpSegments("FAIL, merge(b, a) != merge(a, b): ", mergedBA);
}
function dumpSegments(prefix, arr)
{
InspectorTest.addResult((prefix || "") + JSON.stringify(arr));
}
function rangesEqual(a, b)
{
if (a.length !== b.length)
return false;
for (var i = 0; i < a.length; i++) {
if (a[i].end !== b[i].end)
return false;
if (a[i].count !== b[i].count)
return false;
}
return true;
}
}
</script>
</head>
<body onload="runTest()">
<p>Tests the merge of disjoint segment lists in CoverageModel.</p>
</body>
</html>