1<!DOCTYPE html> 2<!-- 3Copyright (c) 2014 The Chromium Authors. All rights reserved. 4Use of this source code is governed by a BSD-style license that can be 5found in the LICENSE file. 6--> 7 8<link rel="import" href="/tracing/ui/base/name_bar_chart.html"> 9 10<script> 11'use strict'; 12 13tr.b.unittest.testSuite(function() { 14 test('instantiation_singleSeries', function() { 15 var chart = new tr.ui.b.NameBarChart(); 16 chart.width = 200; 17 chart.height = 200; 18 chart.chartTitle = 'Chart title'; 19 var data = [ 20 {x: 'apple', value: 100}, 21 {x: 'ball', value: 110}, 22 {x: 'cat', value: 100}, 23 {x: 'dog', value: 50} 24 ]; 25 chart.data = data; 26 this.addHTMLOutput(chart); 27 }); 28 29 test('undefined', function() { 30 var chart = new tr.ui.b.NameBarChart(); 31 assert.throws(function() { 32 chart.data = undefined; 33 }); 34 }); 35 36 test('instantiation_twoSeries', function() { 37 var chart = new tr.ui.b.NameBarChart(); 38 39 chart.width = 200; 40 chart.height = 200; 41 chart.chartTitle = 'Chart title'; 42 var data = [ 43 {x: 'apple', alpha: 100, beta: 50}, 44 {x: 'ball', alpha: 110, beta: 75}, 45 {x: 'cat', alpha: 100, beta: 125}, 46 {x: 'dog', alpha: 50, beta: 125} 47 ]; 48 chart.data = data; 49 50 var r = new tr.b.Range(); 51 r.addValue(20); 52 r.addValue(40); 53 chart.brushedRange = r; 54 55 this.addHTMLOutput(chart); 56 }); 57 58 test('instantiation_twoSparseSeriesWithFirstValueSparse', function() { 59 var chart = new tr.ui.b.NameBarChart(); 60 61 chart.width = 200; 62 chart.height = 200; 63 chart.chartTitle = 'Chart title'; 64 var data = [ 65 {x: 'apple', alpha: 20, beta: undefined}, 66 {x: 'ball', alpha: undefined, beta: 10}, 67 {x: 'cat', alpha: 10, beta: undefined}, 68 {x: 'dog', alpha: undefined, beta: 20}, 69 {x: 'echo', alpha: 30, beta: 30} 70 ]; 71 chart.data = data; 72 73 this.addHTMLOutput(chart); 74 }); 75 76 test('instantiation_twoSparseSeriesWithFirstValueNotSparse', function() { 77 var chart = new tr.ui.b.NameBarChart(); 78 79 chart.width = 200; 80 chart.height = 200; 81 chart.chartTitle = 'Chart title'; 82 var data = [ 83 {x: 'apple', alpha: 20, beta: 40}, 84 {x: 'ball', alpha: undefined, beta: 10}, 85 {x: 'cat', alpha: 10, beta: undefined}, 86 {x: 'dog', alpha: undefined, beta: 20}, 87 {x: 'echo', alpha: 30, beta: undefined} 88 ]; 89 chart.data = data; 90 91 this.addHTMLOutput(chart); 92 }); 93 94 test('brushRangeFromIndices', function() { 95 var chart = new tr.ui.b.NameBarChart(); 96 var data = [ 97 {x: 'apple', value: 50}, 98 {x: 'ball', value: 60}, 99 {x: 'cat', value: 70}, 100 {x: 'dog', value: 80}, 101 {x: 'echo', value: 90} 102 ]; 103 chart.data = data; 104 var r = new tr.b.Range(); 105 106 // Range min should be 10. 107 r = chart.computeBrushRangeFromIndices(-2, 1); 108 assert.equal(r.min, 0); 109 110 // Range max should be 120. 111 r = chart.computeBrushRangeFromIndices(3, 10); 112 assert.equal(r.max, 4); 113 114 // Range should be [10, 120] 115 r = chart.computeBrushRangeFromIndices(-2, 10); 116 assert.equal(r.min, 0); 117 assert.equal(r.max, 4); 118 119 // Range should be [20, 100] 120 r = chart.computeBrushRangeFromIndices(1, 3); 121 assert.equal(r.min, 0.5); 122 assert.equal(r.max, 3.5); 123 }); 124 125 test('instantiation_interactiveBrushing', function() { 126 var chart = new tr.ui.b.NameBarChart(); 127 chart.width = 300; 128 chart.height = 200; 129 chart.chartTitle = 'Chart title'; 130 var data = [ 131 {x: 'apple', value: 50}, 132 {x: 'ball', value: 60}, 133 {x: 'cat', value: 80}, 134 {x: 'dog', value: 20}, 135 {x: 'echo', value: 30}, 136 {x: 'fortune', value: 20}, 137 {x: 'gpu', value: 15}, 138 {x: 'happy', value: 20} 139 ]; 140 chart.data = data; 141 142 var mouseDownIndex = undefined; 143 var currentMouseIndex = undefined; 144 145 function updateBrushedRange() { 146 var r = new tr.b.Range(); 147 r.min = Math.max(0, Math.min(mouseDownIndex, currentMouseIndex)); 148 r.max = Math.min(data.length, Math.max(mouseDownIndex, 149 currentMouseIndex) + 1); 150 chart.brushedRange = r; 151 } 152 153 chart.addEventListener('item-mousedown', function(e) { 154 mouseDownIndex = e.index; 155 currentMouseIndex = e.index; 156 updateBrushedRange(); 157 }); 158 chart.addEventListener('item-mousemove', function(e) { 159 if (e.button === undefined) 160 return; 161 currentMouseIndex = e.index; 162 updateBrushedRange(); 163 }); 164 chart.addEventListener('item-mouseup', function(e) { 165 currentMouseIndex = e.index; 166 updateBrushedRange(); 167 }); 168 this.addHTMLOutput(chart); 169 }); 170}); 171</script> 172 173