OLD | NEW |
| (Empty) |
1 <!DOCTYPE html> | |
2 <!-- | |
3 Copyright (c) 2013 The Chromium Authors. All rights reserved. | |
4 Use of this source code is governed by a BSD-style license that can be | |
5 found in the LICENSE file. | |
6 --> | |
7 | |
8 <link rel="import" href="/tracing/base/range_utils.html"> | |
9 <link rel="import" href="/tracing/core/test_utils.html"> | |
10 | |
11 <script> | |
12 'use strict'; | |
13 | |
14 tr.b.unittest.testSuite(function() { | |
15 function simpleMerger(events) { | |
16 return { | |
17 min: events[0].min, | |
18 max: events[events.length - 1].max | |
19 }; | |
20 } | |
21 test('simple', function() { | |
22 var inEvents = [ | |
23 {min: 0, max: 100}, | |
24 {min: 100, max: 120}, | |
25 {min: 200, max: 220} | |
26 ]; | |
27 | |
28 var merged = tr.b.mergeRanges(inEvents, 50, simpleMerger); | |
29 | |
30 assert.equal(merged.length, 2); | |
31 assert.deepEqual(merged[0], {min: 0, max: 120}); | |
32 assert.deepEqual(merged[1], {min: 200, max: 220}); | |
33 }); | |
34 | |
35 test('overlapping', function() { | |
36 var inEvents = [ | |
37 {min: 0, max: 100}, | |
38 {min: 80, max: 120}, | |
39 {min: 200, max: 220} | |
40 ]; | |
41 | |
42 var merged = tr.b.mergeRanges(inEvents, 50, simpleMerger); | |
43 | |
44 assert.equal(merged.length, 2); | |
45 assert.deepEqual(merged[0], {min: 0, max: 120}); | |
46 assert.deepEqual(merged[1], {min: 200, max: 220}); | |
47 }); | |
48 | |
49 test('middleOneIsSmall', function() { | |
50 var inEvents = [ | |
51 {min: 0, max: 100}, | |
52 {min: 40, max: 50}, | |
53 {min: 100, max: 120} | |
54 ]; | |
55 | |
56 var merged = tr.b.mergeRanges(inEvents, 50, simpleMerger); | |
57 | |
58 assert.equal(merged.length, 1); | |
59 assert.deepEqual(merged[0], {min: 0, max: 120}); | |
60 }); | |
61 | |
62 test('firstEventIsSplitPoint', function() { | |
63 var inEvents = [ | |
64 {min: 0, max: 100}, | |
65 {min: 150, max: 200} | |
66 ]; | |
67 | |
68 var merged = tr.b.mergeRanges(inEvents, 25, simpleMerger); | |
69 | |
70 assert.equal(merged.length, 2); | |
71 assert.deepEqual(merged[0], {min: 0, max: 100}); | |
72 assert.deepEqual(merged[1], {min: 150, max: 200}); | |
73 }); | |
74 | |
75 test('mergeSingleEvent', function() { | |
76 var inEvents = [ | |
77 {min: 0, max: 100} | |
78 ]; | |
79 | |
80 var mergeCount = 0; | |
81 tr.b.mergeRanges(inEvents, 25, function(events) { | |
82 assert.deepEqual(events, inEvents); | |
83 mergeCount++; | |
84 }); | |
85 assert.equal(mergeCount, 1); | |
86 }); | |
87 | |
88 test('zeroDurationSplit', function() { | |
89 var inEvents = [0, 10, 20, 50, 60]; | |
90 inEvents = inEvents.map(function(event) { | |
91 return tr.b.Range.fromExplicitRange(event, event); | |
92 }); | |
93 var timestampMerger = function(timestamps) { | |
94 return { | |
95 min: timestamps[0].min, | |
96 max: timestamps[timestamps.length - 1].max | |
97 }; | |
98 }; | |
99 var merged = tr.b.mergeRanges(inEvents, 15, timestampMerger); | |
100 assert.equal(merged.length, 2); | |
101 assert.deepEqual(merged[0], {min: 0, max: 20}); | |
102 assert.deepEqual(merged[1], {min: 50, max: 60}); | |
103 }); | |
104 | |
105 test('findEmptyRangesBetweenRanges', function() { | |
106 var events = [ | |
107 {min: 2, max: 4}, | |
108 {min: 1, max: 3}, | |
109 {min: 6, max: 8} | |
110 ]; | |
111 var ranges = tr.b.findEmptyRangesBetweenRanges( | |
112 events, {min: 0, max: 10}); | |
113 assert.equal(3, ranges.length); | |
114 assert.equal(0, ranges[0].min); | |
115 assert.equal(1, ranges[0].max); | |
116 assert.equal(4, ranges[1].min); | |
117 assert.equal(6, ranges[1].max); | |
118 assert.equal(8, ranges[2].min); | |
119 assert.equal(10, ranges[2].max); | |
120 }); | |
121 | |
122 test('findEmptyRangesWithEmptyInput', function() { | |
123 var ranges = tr.b.findEmptyRangesBetweenRanges( | |
124 [], {min: 0, max: 10}); | |
125 assert.equal(1, ranges.length); | |
126 assert.equal(0, ranges[0].min); | |
127 assert.equal(10, ranges[0].max); | |
128 | |
129 ranges = tr.b.findEmptyRangesBetweenRanges([]); | |
130 assert.equal(0, ranges.length); | |
131 }); | |
132 }); | |
133 </script> | |
OLD | NEW |