blob: 90677aa0dc6f4ff7beb26200f4bbb944560e194d [file] [log] [blame]
<!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="/base/deep_utils.html">
<link rel="import" href="/core/analysis/generic_object_view.html">
<link rel="import" href="/model/object_instance.html">
<script>
'use strict';
tr.b.unittest.testSuite(function() { // @suppress longLineCheck
test('undefinedValue', function() {
var view = document.createElement('tr-c-a-generic-object-view');
view.object = undefined;
assert.equal(view.$.content.textContent, 'undefined');
});
test('nullValue', function() {
var view = document.createElement('tr-c-a-generic-object-view');
view.object = null;
assert.equal(view.$.content.textContent, 'null');
});
test('stringValue', function() {
var view = document.createElement('tr-c-a-generic-object-view');
view.object = 'string value';
assert.equal(view.$.content.textContent, '"string value"');
});
test('multiLineStringValue', function() {
var view = document.createElement('tr-c-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-c-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-c-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-c-a-generic-object-view');
view.object = '[1,2,3]';
assert.equal(view.$.content.children.length, 3);
});
test('booleanValue', function() {
var view = document.createElement('tr-c-a-generic-object-view');
view.object = false;
assert.equal(view.$.content.textContent, 'false');
});
test('numberValue', function() {
var view = document.createElement('tr-c-a-generic-object-view');
view.object = 3.14159;
assert.equal(view.$.content.textContent, '3.14159');
});
test('objectSnapshotValue', function() {
var view = document.createElement('tr-c-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-C-A-ANALYSIS-LINK');
});
test('objectInstanceValue', function() {
var view = document.createElement('tr-c-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-C-A-ANALYSIS-LINK');
});
test('instantiate_emptyArrayValue', function() {
var view = document.createElement('tr-c-a-generic-object-view');
view.object = [];
this.addHTMLOutput(view);
});
test('instantiate_twoValueArrayValue', function() {
var view = document.createElement('tr-c-a-generic-object-view');
view.object = [1, 2];
this.addHTMLOutput(view);
});
test('instantiate_twoValueBArrayValue', function() {
var view = document.createElement('tr-c-a-generic-object-view');
view.object = [1, {x: 1}];
this.addHTMLOutput(view);
});
test('instantiate_arrayValue', function() {
var view = document.createElement('tr-c-a-generic-object-view');
view.object = [1, 2, 'three'];
this.addHTMLOutput(view);
});
test('instantiate_arrayWithSimpleObjectValue', function() {
var view = document.createElement('tr-c-a-generic-object-view');
view.object = [{simple: 'object'}];
this.addHTMLOutput(view);
});
test('instantiate_arrayWithComplexObjectValue', function() {
var view = document.createElement('tr-c-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-c-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-c-a-generic-object-view');
view.object = [{col0: 'object', col1: 0}, {col0: 'Object', col1: 1}];
this.addHTMLOutput(view);
var table = tr.b.findDeepElementMatching(
view.$.content, 'tr-b-ui-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]));
});
test('instantiate_objectValue', function() {
var view = document.createElement('tr-c-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-c-a-generic-object-view');
view.object = new tr.b.units.TimeDuration(3);
assert.isDefined(tr.b.findDeepElementMatching(
view.$.content, 'tr-b-u-time-duration-span'));
});
test('timeStampValue', function() {
var view = document.createElement('tr-c-a-generic-object-view');
view.object = new tr.b.units.TimeStamp(3);
assert.isDefined(tr.b.findDeepElementMatching(
view.$.content, 'tr-b-u-time-stamp-span'));
});
test('sizeInBytesValue', function() {
var view = document.createElement('tr-c-a-generic-object-view');
view.object = new tr.b.units.SizeInBytes(3);
assert.isDefined(tr.b.findDeepElementMatching(
view.$.content, 'tr-b-u-size-in-bytes-span'));
});
});
</script>