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