| <!DOCTYPE html> |
| <!-- |
| Copyright (c) 2014 The Chromium Authors. All rights reserved. |
| Use of this source code is governed by a BSD-style license that can be |
| found in the LICENSE file. |
| --> |
| |
| <link rel="import" href="/base/units/generic_table_view.html"> |
| |
| <script> |
| 'use strict'; |
| |
| tr.b.unittest.testSuite(function() { |
| var GenericTableViewColumnDescriptor = |
| tr.b.units.GenericTableViewColumnDescriptor; |
| var GenericTableViewTotalsItem = tr.b.units.GenericTableViewTotalsItem; |
| |
| test('descBasicNumericMode', function() { |
| var colDesc = new GenericTableViewColumnDescriptor('a'); |
| assert.isFalse(colDesc.isInNumericMode); |
| |
| colDesc.updateModeGivenValue(4); |
| assert.isTrue(colDesc.isInNumericMode); |
| |
| colDesc.updateModeGivenValue(4); |
| assert.isTrue(colDesc.isInNumericMode); |
| |
| colDesc.updateModeGivenValue(undefined); |
| colDesc.updateModeGivenValue(null); |
| assert.isTrue(colDesc.isInNumericMode); |
| |
| colDesc.updateModeGivenValue('a'); |
| assert.isFalse(colDesc.isInNumericMode); |
| }); |
| |
| test('descBasicNonNumericMode', function() { |
| var colDesc = new GenericTableViewColumnDescriptor('a'); |
| assert.isFalse(colDesc.isInNumericMode); |
| colDesc.updateModeGivenValue(4); |
| assert.isTrue(colDesc.isInNumericMode); |
| colDesc.updateModeGivenValue('a'); |
| assert.isFalse(colDesc.isInNumericMode); |
| }); |
| |
| test('descCmpWithNumbers', function() { |
| var colDesc = new GenericTableViewColumnDescriptor('a', 1); |
| assert.equal(colDesc.cmp({a: 1}, {a: 2}), -1); |
| assert.equal(colDesc.cmp({a: 1}, undefined), -1); |
| }); |
| |
| test('descCmpWithText', function() { |
| var colDesc = new GenericTableViewColumnDescriptor('a', 'text'); |
| assert.equal(colDesc.cmp({a: 'a'}, {a: 'b'}), -1); |
| assert.equal(colDesc.cmp({a: 'a'}, undefined), -1); |
| }); |
| |
| test('descValue', function() { |
| var colDesc = new GenericTableViewColumnDescriptor('a', 1); |
| var value = colDesc.value({a: undefined}); |
| assert.equal(value, '-'); |
| |
| value = colDesc.value({a: 3}); |
| assert.equal(value, 3); |
| |
| var totalsValue = colDesc.value( |
| {a: new GenericTableViewTotalsItem([1, 2, 3])}); |
| assert.equal(totalsValue.tagName.toLowerCase(), |
| 'tr-b-u-array-of-numbers-span'); |
| assert.deepEqual(totalsValue.numbers, [1, 2, 3]); |
| }); |
| |
| test('everythingTogether', function() { |
| var table = document.createElement('tr-b-u-generic-table-view'); |
| table.items = [ |
| { |
| a: 'someString', |
| b: 2, |
| c: 'adsf' |
| }, |
| { |
| a: 'someOtherString', |
| b: 2, |
| c: 'adsf' |
| } |
| ]; |
| this.addHTMLOutput(table); |
| }); |
| |
| test('summableColumn', function() { |
| var table = document.createElement('tr-b-u-generic-table-view'); |
| table.items = [ |
| { |
| a: 1 |
| }, |
| { |
| a: 2 |
| }, |
| { |
| a: 3 |
| } |
| ]; |
| this.addHTMLOutput(table); |
| |
| assert.equal(table.$.table.tableColumns.length, 1); |
| assert.equal(table.$.table.tableRows.length, 3); |
| assert.isTrue(table.$.table.tableColumns[0].isInNumericMode); |
| assert.equal(table.$.table.tableColumns[0].fieldName, 'a'); |
| var totalsItem = table.$.table.footerRows[0].a; |
| assert.deepEqual(totalsItem.values, [1, 2, 3]); |
| }); |
| |
| |
| test('usingGenericTable', function() { |
| var table = document.createElement('tr-b-u-generic-table-view'); |
| table.items = new tr.b.units.GenericTable([ |
| { |
| a: 1 |
| } |
| ]); |
| assert.equal(table.items.length, 1); |
| }); |
| |
| test('mixedTypeTable', function() { |
| var table = document.createElement('tr-b-u-generic-table-view'); |
| table.items = [ |
| { |
| a: 1 |
| }, |
| { |
| a: 2 |
| }, |
| { |
| b: 'c' |
| } |
| ]; |
| this.addHTMLOutput(table); |
| }); |
| |
| test('emptyTable', function() { |
| var table = document.createElement('tr-b-u-generic-table-view'); |
| table.items = [{}]; |
| assert.equal(table.$.table.tableColumns.length, 0); |
| }); |
| |
| test('undefinedAndValue', function() { |
| var table = document.createElement('tr-b-u-generic-table-view'); |
| table.items = [ |
| { |
| }, |
| { |
| a: 2 |
| } |
| ]; |
| this.addHTMLOutput(table); |
| }); |
| |
| test('undefinedOnly', function() { |
| var table = document.createElement('tr-b-u-generic-table-view'); |
| table.items = [ |
| { |
| a: undefined |
| } |
| ]; |
| this.addHTMLOutput(table); |
| }); |
| }); |
| </script> |