| <!DOCTYPE html> |
| <!-- |
| Copyright (c) 2013 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="/tracing/base/unit.html"> |
| <link rel="import" href="/tracing/model/object_instance.html"> |
| <link rel="import" href="/tracing/ui/analysis/generic_object_view.html"> |
| <link rel="import" href="/tracing/ui/base/deep_utils.html"> |
| <link rel="import" href="/tracing/value/numeric.html"> |
| |
| <script> |
| 'use strict'; |
| |
| tr.b.unittest.testSuite(function() { |
| test('undefinedValue', function() { |
| var view = document.createElement('tr-ui-a-generic-object-view'); |
| view.object = undefined; |
| assert.equal(Polymer.dom(view.$.content).textContent, 'undefined'); |
| }); |
| |
| test('nullValue', function() { |
| var view = document.createElement('tr-ui-a-generic-object-view'); |
| view.object = null; |
| assert.equal(Polymer.dom(view.$.content).textContent, 'null'); |
| }); |
| |
| test('stringValue', function() { |
| var view = document.createElement('tr-ui-a-generic-object-view'); |
| view.object = 'string value'; |
| assert.equal(Polymer.dom(view.$.content).textContent, '"string value"'); |
| }); |
| |
| test('multiLineStringValue', function() { |
| var view = document.createElement('tr-ui-a-generic-object-view'); |
| view.object = 'i am a\n string value\ni have\n various indents'; |
| this.addHTMLOutput(view); |
| var c = view.$.content; |
| }); |
| |
| test('multiLineStringValueInsideObject', function() { |
| var view = document.createElement('tr-ui-a-generic-object-view'); |
| view.object = {key: 'i am a\n string value\ni have\n various indents', |
| value: 'simple'}; |
| this.addHTMLOutput(view); |
| var c = view.$.content; |
| |
| }); |
| |
| test('jsonObjectStringValue', function() { |
| var view = document.createElement('tr-ui-a-generic-object-view'); |
| view.object = '{"x": 1}'; |
| assert.equal(view.$.content.children.length, 1); |
| assert.equal(view.$.content.children[0].children.length, 4); |
| }); |
| |
| test('jsonArrayStringValue', function() { |
| var view = document.createElement('tr-ui-a-generic-object-view'); |
| view.object = '[1,2,3]'; |
| assert.equal(view.$.content.children.length, 3); |
| }); |
| |
| test('booleanValue', function() { |
| var view = document.createElement('tr-ui-a-generic-object-view'); |
| view.object = false; |
| assert.equal(Polymer.dom(view.$.content).textContent, 'false'); |
| }); |
| |
| test('numberValue', function() { |
| var view = document.createElement('tr-ui-a-generic-object-view'); |
| view.object = 3.14159; |
| assert.equal(Polymer.dom(view.$.content).textContent, '3.14159'); |
| }); |
| |
| test('objectSnapshotValue', function() { |
| var view = document.createElement('tr-ui-a-generic-object-view'); |
| |
| var i10 = new tr.model.ObjectInstance( |
| {}, '0x1000', 'cat', 'name', 10); |
| var s10 = i10.addSnapshot(10, {foo: 1}); |
| |
| view.object = s10; |
| this.addHTMLOutput(view); |
| assert.strictEqual(view.$.content.children[0].dataElement.tagName, |
| 'TR-UI-A-ANALYSIS-LINK'); |
| }); |
| |
| test('objectInstanceValue', function() { |
| var view = document.createElement('tr-ui-a-generic-object-view'); |
| |
| var i10 = new tr.model.ObjectInstance( |
| {}, '0x1000', 'cat', 'name', 10); |
| var s10 = i10.addSnapshot(10, {foo: 1}); |
| |
| view.object = i10; |
| assert.strictEqual(view.$.content.children[0].dataElement.tagName, |
| 'TR-UI-A-ANALYSIS-LINK'); |
| }); |
| |
| test('instantiate_emptyArrayValue', function() { |
| var view = document.createElement('tr-ui-a-generic-object-view'); |
| view.object = []; |
| this.addHTMLOutput(view); |
| }); |
| |
| test('instantiate_twoValueArrayValue', function() { |
| var view = document.createElement('tr-ui-a-generic-object-view'); |
| view.object = [1, 2]; |
| this.addHTMLOutput(view); |
| }); |
| |
| test('instantiate_twoValueBArrayValue', function() { |
| var view = document.createElement('tr-ui-a-generic-object-view'); |
| view.object = [1, {x: 1}]; |
| this.addHTMLOutput(view); |
| }); |
| |
| test('instantiate_arrayValue', function() { |
| var view = document.createElement('tr-ui-a-generic-object-view'); |
| view.object = [1, 2, 'three']; |
| this.addHTMLOutput(view); |
| }); |
| |
| test('instantiate_arrayWithSimpleObjectValue', function() { |
| var view = document.createElement('tr-ui-a-generic-object-view'); |
| view.object = [{simple: 'object'}]; |
| this.addHTMLOutput(view); |
| }); |
| |
| test('instantiate_arrayWithComplexObjectValue', function() { |
| var view = document.createElement('tr-ui-a-generic-object-view'); |
| view.object = [{col0: 'object', col1: 0}, |
| {col2: 'Object', col3: 1}]; |
| this.addHTMLOutput(view); |
| assert.equal(undefined, tr.b.findDeepElementMatching( |
| view.$.content, 'table')); |
| }); |
| |
| test('instantiate_arrayWithDeepObjectValue', function() { |
| var view = document.createElement('tr-ui-a-generic-object-view'); |
| view.object = [{key: {deep: 'object values make isTable() return false'}}]; |
| this.addHTMLOutput(view); |
| assert.equal(undefined, tr.b.findDeepElementMatching( |
| view.$.content, 'table')); |
| }); |
| |
| test('jsonTableValue', function() { |
| var view = document.createElement('tr-ui-a-generic-object-view'); |
| view.object = [ |
| {col0: 'object', col1: 0, col2: 'foo'}, |
| {col0: 'Object', col1: 1, col2: 42} |
| ]; |
| this.addHTMLOutput(view); |
| |
| var table = tr.b.findDeepElementMatching(view.$.content, 'tr-ui-b-table'); |
| assert.equal('col0', table.tableColumns[0].title); |
| assert.equal('col1', table.tableColumns[1].title); |
| assert.equal('object', table.tableColumns[0].value(table.tableRows[0])); |
| assert.equal('Object', table.tableColumns[0].value(table.tableRows[1])); |
| assert.equal(0, table.tableColumns[1].value(table.tableRows[0])); |
| assert.equal(1, table.tableColumns[1].value(table.tableRows[1])); |
| assert.isDefined(table.tableColumns[0].cmp); |
| assert.isDefined(table.tableColumns[1].cmp); |
| assert.isUndefined(table.tableColumns[2].cmp); |
| }); |
| |
| test('instantiate_objectValue', function() { |
| var view = document.createElement('tr-ui-a-generic-object-view'); |
| view.object = { |
| 'entry_one': 'entry_one_value', |
| 'entry_two': 2, |
| 'entry_three': [3, 4, 5] |
| }; |
| this.addHTMLOutput(view); |
| }); |
| |
| test('timeDurationValue', function() { |
| var view = document.createElement('tr-ui-a-generic-object-view'); |
| view.object = |
| new tr.v.ScalarNumeric(tr.b.Unit.byName.timeDurationInMs, 3); |
| assert.isDefined(tr.b.findDeepElementMatching( |
| view.$.content, 'tr-v-ui-scalar-span')); |
| }); |
| |
| test('timeStampValue', function() { |
| var view = document.createElement('tr-ui-a-generic-object-view'); |
| view.object = new tr.v.ScalarNumeric(tr.b.Unit.byName.timeStampInMs, 3); |
| assert.isDefined(tr.b.findDeepElementMatching( |
| view.$.content, 'tr-v-ui-scalar-span')); |
| }); |
| |
| test('scalarValue', function() { |
| var view = document.createElement('tr-ui-a-generic-object-view'); |
| view.object = |
| new tr.v.ScalarNumeric(tr.b.Unit.byName.normalizedPercentage, .3); |
| var m = tr.b.findDeepElementMatching( |
| view.$.content, 'tr-v-ui-scalar-span'); |
| assert.isDefined(m); |
| assert.equal(m.value, .3); |
| assert.equal(m.unit, tr.b.Unit.byName.normalizedPercentage); |
| }); |
| |
| test('httpLink', function() { |
| var view = document.createElement('tr-ui-a-generic-object-view'); |
| var url = 'https://google.com/chrome'; |
| view.object = {a: url}; |
| this.addHTMLOutput(view); |
| var a = tr.b.findDeepElementMatching(view.$.content, 'a'); |
| assert.isDefined(a); |
| assert.strictEqual(url, a.href); |
| assert.strictEqual(url, a.textContent); |
| }); |
| }); |
| </script> |