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