| <!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="/extras/audits/utils.html"> |
| <link rel="import" href="/core/test_utils.html"> |
| |
| <script> |
| 'use strict'; |
| |
| tv.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 = tv.e.audits.mergeEvents(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 = tv.e.audits.mergeEvents(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 = tv.e.audits.mergeEvents(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 = tv.e.audits.mergeEvents(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; |
| var merged = tv.e.audits.mergeEvents(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 = tv.e.audits.mergeEvents(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}); |
| }); |
| |
| }); |
| </script> |