generic_table_view_test.html revision cef7893435aa41160dd1255c43cb8498279738cc
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/value/generic_table.html">
9<link rel="import" href="/tracing/value/ui/generic_table_view.html">
10
11<script>
12'use strict';
13
14tr.b.unittest.testSuite(function() {
15  var GenericTableViewColumnDescriptor =
16      tr.v.ui.GenericTableViewColumnDescriptor;
17  var GenericTableViewTotalsItem = tr.v.ui.GenericTableViewTotalsItem;
18
19  test('descBasicNumericMode', function() {
20    var colDesc = new GenericTableViewColumnDescriptor('a');
21    assert.isFalse(colDesc.isInNumericMode);
22
23    colDesc.updateModeGivenValue(4);
24    assert.isTrue(colDesc.isInNumericMode);
25
26    colDesc.updateModeGivenValue(4);
27    assert.isTrue(colDesc.isInNumericMode);
28
29    colDesc.updateModeGivenValue(undefined);
30    colDesc.updateModeGivenValue(null);
31    assert.isTrue(colDesc.isInNumericMode);
32
33    colDesc.updateModeGivenValue('a');
34    assert.isFalse(colDesc.isInNumericMode);
35  });
36
37  test('descBasicNonNumericMode', function() {
38    var colDesc = new GenericTableViewColumnDescriptor('a');
39    assert.isFalse(colDesc.isInNumericMode);
40    colDesc.updateModeGivenValue(4);
41    assert.isTrue(colDesc.isInNumericMode);
42    colDesc.updateModeGivenValue('a');
43    assert.isFalse(colDesc.isInNumericMode);
44  });
45
46  test('descCmpWithNumbers', function() {
47    var colDesc = new GenericTableViewColumnDescriptor('a', 1);
48    assert.equal(colDesc.cmp({a: 1}, {a: 2}), -1);
49    assert.equal(colDesc.cmp({a: 1}, undefined), -1);
50  });
51
52  test('descCmpWithText', function() {
53    var colDesc = new GenericTableViewColumnDescriptor('a', 'text');
54    assert.equal(colDesc.cmp({a: 'a'}, {a: 'b'}), -1);
55    assert.equal(colDesc.cmp({a: 'a'}, undefined), -1);
56  });
57
58  test('descValue', function() {
59    var colDesc = new GenericTableViewColumnDescriptor('a', 1);
60    var value = colDesc.value({a: undefined});
61    assert.equal(value, '-');
62
63    value = colDesc.value({a: 3});
64    assert.equal(value, 3);
65
66    var totalsValue = colDesc.value(
67        {a: new GenericTableViewTotalsItem([1, 2, 3])});
68    assert.equal(totalsValue.tagName.toLowerCase(),
69                  'tr-v-ui-array-of-numbers-span');
70    assert.deepEqual(totalsValue.numbers, [1, 2, 3]);
71  });
72
73  test('everythingTogether', function() {
74    var table = document.createElement('tr-v-ui-generic-table-view');
75    table.items = [
76      {
77        a: 'someString',
78        b: 2,
79        c: 'adsf'
80      },
81      {
82        a: 'someOtherString',
83        b: 2,
84        c: 'adsf'
85      }
86    ];
87    this.addHTMLOutput(table);
88  });
89
90  test('summableColumn', function() {
91    var table = document.createElement('tr-v-ui-generic-table-view');
92    table.items = [
93      {
94        a: 1
95      },
96      {
97        a: 2
98      },
99      {
100        a: 3
101      }
102    ];
103    this.addHTMLOutput(table);
104
105    assert.equal(table.$.table.tableColumns.length, 1);
106    assert.equal(table.$.table.tableRows.length, 3);
107    assert.isTrue(table.$.table.tableColumns[0].isInNumericMode);
108    assert.equal(table.$.table.tableColumns[0].fieldName, 'a');
109    var totalsItem = table.$.table.footerRows[0].a;
110    assert.deepEqual(totalsItem.values, [1, 2, 3]);
111  });
112
113
114  test('usingGenericTable', function() {
115    var table = document.createElement('tr-v-ui-generic-table-view');
116    table.items = new tr.v.GenericTable([
117      {
118        a: 1
119      }
120    ]);
121    assert.equal(table.items.length, 1);
122  });
123
124  test('valueIsObject', function() {
125    var table = document.createElement('tr-v-ui-generic-table-view');
126    table.items = new tr.v.GenericTable([
127      {
128        a: {x: 1, y: 'string'}
129      },
130      {
131        a: 'something'
132      }
133    ]);
134    this.addHTMLOutput(table);
135    assert.equal(table.items.length, 2);
136  });
137
138  test('mixedTypeTable', function() {
139    var table = document.createElement('tr-v-ui-generic-table-view');
140    table.items = [
141      {
142        a: 1
143      },
144      {
145        a: 2
146      },
147      {
148        b: 'c'
149      }
150    ];
151    this.addHTMLOutput(table);
152  });
153
154  test('tableWithElement', function() {
155    var table = document.createElement('tr-v-ui-generic-table-view');
156    table.items = [
157      {
158        a: 1
159      },
160      {
161        a: tr.ui.b.createSpan({textContent: 'ohai'})
162      },
163      {
164        b: 'c'
165      }
166    ];
167    this.addHTMLOutput(table);
168  });
169
170
171  test('emptyTable', function() {
172    var table = document.createElement('tr-v-ui-generic-table-view');
173    table.items = [{}];
174    assert.equal(table.$.table.tableColumns.length, 0);
175  });
176
177  test('undefinedAndValue', function() {
178    var table = document.createElement('tr-v-ui-generic-table-view');
179    table.items = [
180      {
181      },
182      {
183        a: 2
184      }
185    ];
186    this.addHTMLOutput(table);
187  });
188
189  test('undefinedOnly', function() {
190    var table = document.createElement('tr-v-ui-generic-table-view');
191    table.items = [
192      {
193        a: undefined
194      }
195    ];
196    this.addHTMLOutput(table);
197  });
198});
199</script>
200