• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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