blob: 824e57a1a0fffd4c5552155d8d92304e8c15748c [file] [log] [blame]
<!DOCTYPE html>
<!--
Copyright (c) 2013 The Chromium Authors. All rights reserved.
Use of this source code is governed by a BSD-style license that can be
found in the LICENSE file.
-->
<link rel="import" href="/base/range_utils.html">
<link rel="import" href="/core/test_utils.html">
<script>
'use strict';
tr.b.unittest.testSuite(function() {
function simpleMerger(events) {
return {
start: events[0].start,
end: events[events.length - 1].end
};
}
test('simple', function() {
var inEvents = [
{start: 0, end: 100},
{start: 100, end: 120},
{start: 200, end: 220}
];
var merged = tr.e.audits.mergeExplicitRanges(inEvents, 50, simpleMerger);
assert.equal(merged.length, 2);
assert.deepEqual(merged[0], {start: 0, end: 120});
assert.deepEqual(merged[1], {start: 200, end: 220});
});
test('overlapping', function() {
var inEvents = [
{start: 0, end: 100},
{start: 80, end: 120},
{start: 200, end: 220}
];
var merged = tr.e.audits.mergeExplicitRanges(inEvents, 50, simpleMerger);
assert.equal(merged.length, 2);
assert.deepEqual(merged[0], {start: 0, end: 120});
assert.deepEqual(merged[1], {start: 200, end: 220});
});
test('middleOneIsSmall', function() {
var inEvents = [
{start: 0, end: 100},
{start: 40, end: 50},
{start: 100, end: 120}
];
var merged = tr.e.audits.mergeExplicitRanges(inEvents, 50, simpleMerger);
assert.equal(merged.length, 1);
assert.deepEqual(merged[0], {start: 0, end: 120});
});
test('firstEventIsSplitPoint', function() {
var inEvents = [
{start: 0, end: 100},
{start: 150, end: 200}
];
var merged = tr.e.audits.mergeExplicitRanges(inEvents, 25, simpleMerger);
assert.equal(merged.length, 2);
assert.deepEqual(merged[0], {start: 0, end: 100});
assert.deepEqual(merged[1], {start: 150, end: 200});
});
test('mergeSingleEvent', function() {
var inEvents = [
{start: 0, end: 100}
];
var mergeCount = 0;
tr.e.audits.mergeExplicitRanges(inEvents, 25, function(events) {
assert.deepEqual(events, inEvents);
mergeCount++;
});
assert.equal(mergeCount, 1);
});
test('zeroDurationSplit', function() {
var inEvents = [0, 10, 20, 50, 60];
var identityFunction = function(x) {
return x;
};
var timestampMerger = function(timestamps) {
console.log(timestamps);
return {
start: timestamps[0],
end: timestamps[timestamps.length - 1]
};
};
var merged = tr.e.audits.mergeExplicitRanges(inEvents, 15, timestampMerger,
identityFunction, identityFunction);
console.log(merged);
assert.equal(merged.length, 2);
assert.deepEqual(merged[0], {start: 0, end: 20});
assert.deepEqual(merged[1], {start: 50, end: 60});
});
test('findEmptyRangesBetweenExplicitRanges', function() {
var events = [
{start: 2, end: 4},
{start: 1, end: 3},
{start: 6, end: 8}
];
var ranges = tr.e.audits.findEmptyRangesBetweenExplicitRanges(
events, {start: 0, end: 10});
assert.equal(3, ranges.length);
assert.equal(0, ranges[0].min);
assert.equal(1, ranges[0].max);
assert.equal(4, ranges[1].min);
assert.equal(6, ranges[1].max);
assert.equal(8, ranges[2].min);
assert.equal(10, ranges[2].max);
});
test('findEmptyRangesWithEmptyInput', function() {
var ranges = tr.e.audits.findEmptyRangesBetweenExplicitRanges(
[], {start: 0, end: 10});
assert.equal(1, ranges.length);
assert.equal(0, ranges[0].min);
assert.equal(10, ranges[0].max);
ranges = tr.e.audits.findEmptyRangesBetweenExplicitRanges([]);
assert.equal(0, ranges.length);
});
});
</script>