Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(354)

Unified Diff: tracing/tracing/value/ui/value_set_table_test.html

Issue 2162963002: [polymer] Merge of master into polymer10-migration (Closed) Base URL: git@github.com:catapult-project/catapult.git@polymer10-migration
Patch Set: Merge polymer10-migration int polymer10-merge Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « tracing/tracing/value/ui/value_set_table.html ('k') | tracing/tracing/value/ui/value_set_view.html » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tracing/tracing/value/ui/value_set_table_test.html
diff --git a/tracing/tracing/value/ui/value_set_table_test.html b/tracing/tracing/value/ui/value_set_table_test.html
new file mode 100644
index 0000000000000000000000000000000000000000..9d0a48340ad280115ae79e949b8c2f9696186949
--- /dev/null
+++ b/tracing/tracing/value/ui/value_set_table_test.html
@@ -0,0 +1,342 @@
+<!DOCTYPE html>
+<!--
+Copyright 2016 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/utils.html">
+<link rel="import" href="/tracing/ui/base/deep_utils.html">
+<link rel="import" href="/tracing/value/ui/value_set_table.html">
+<link rel="import" href="/tracing/value/value_set.html">
+
+<script>
+'use strict';
+
+tr.b.unittest.testSuite(function() {
+ var TEST_NUMERIC_BUILDER = tr.v.NumericBuilder.createLinear(
+ tr.v.Unit.byName.timeDurationInMs_smallerIsBetter,
+ tr.b.Range.fromExplicitRange(0, 1000), 20);
+
+ function getTableRowAtPath(table, path) {
+ var row = table.tableRows[0];
+ for (var index of path)
+ row = row.subRows[index];
+ return row;
+ }
+
+ test('instantiate_1x1', function() {
+ var table = document.createElement('tr-v-ui-value-set-table');
+ var values = new tr.v.ValueSet();
+ assert.isTrue(table.supportsValueSet(values));
+ var numeric = TEST_NUMERIC_BUILDER.build();
+ for (var i = 0; i < 100; ++i)
+ numeric.add(Math.random() * 1000);
+ values.addValue(new tr.v.NumericValue('foo', numeric));
+ table.values = values;
+ this.addHTMLOutput(table);
+ var baseTable = tr.b.findDeepElementMatchingPredicate(
+ table, elem => elem.tagName === 'TR-UI-B-TABLE');
+ assert.strictEqual(baseTable.tableRows.length, 1);
+ });
+
+ // TODO(benjhayden): Test requestSelectionChange.
+ // TODO(benjhayden): Test search keyup.
+
+ test('instantiate_2x2', function() {
+ var table = document.createElement('tr-v-ui-value-set-table');
+ var values = new tr.v.ValueSet();
+ assert.isTrue(table.supportsValueSet(values));
+
+ var numeric0a = TEST_NUMERIC_BUILDER.build();
+ for (var i = 0; i < 100; ++i)
+ numeric0a.add(Math.random() * 1000);
+ var fooA = new tr.v.NumericValue('foo', numeric0a, {
+ description: 'they should have sent a poet'
+ });
+ values.addValue(fooA);
+ new tr.v.d.IterationInfo({
+ label: 'iteration A',
+ benchmarkStartMs: new Date().getTime(),
+ }).addToValue(fooA);
+
+ var numeric1a = TEST_NUMERIC_BUILDER.build();
+ for (var i = 0; i < 100; ++i)
+ numeric1a.add(Math.random() * 1000);
+ var barA = new tr.v.NumericValue('bar', numeric1a, {
+ description: 'indescribable'
+ });
+ values.addValue(barA);
+ new tr.v.d.IterationInfo({
+ label: 'iteration A',
+ benchmarkStartMs: new Date().getTime(),
+ }).addToValue(barA);
+
+ var numeric0b = TEST_NUMERIC_BUILDER.build();
+ for (var i = 0; i < 100; ++i)
+ numeric0b.add(Math.random() * 1000);
+ var fooB = new tr.v.NumericValue('foo', numeric0b, {
+ description: 'they should have sent a poet'
+ });
+ values.addValue(fooB);
+ new tr.v.d.IterationInfo({
+ label: 'iteration B',
+ benchmarkStartMs: new Date().getTime(),
+ }).addToValue(fooB);
+
+ var numeric1b = TEST_NUMERIC_BUILDER.build();
+ for (var i = 0; i < 100; ++i)
+ numeric1b.add(Math.random() * 1000);
+ var barB = new tr.v.NumericValue('bar', numeric1b, {
+ description: 'indescribable'
+ });
+ values.addValue(barB);
+ new tr.v.d.IterationInfo({
+ label: 'iteration B',
+ benchmarkStartMs: new Date().getTime(),
+ }).addToValue(barB);
+
+ table.values = values;
+ this.addHTMLOutput(table);
+
+ var baseTable = tr.b.findDeepElementMatchingPredicate(
+ table, elem => elem.tagName === 'TR-UI-B-TABLE');
+
+ assert.lengthOf(baseTable.tableColumns, 3);
+ assert.strictEqual('Name', baseTable.tableColumns[0].title);
+ assert.strictEqual('iteration A', baseTable.tableColumns[1].title);
+ assert.strictEqual('iteration B', baseTable.tableColumns[2].title);
+ });
+
+ test('instantiation_mergeNumerics', function() {
+ var table = document.createElement('tr-v-ui-value-set-table');
+ var values = new tr.v.ValueSet();
+ // Add 32 NumericValues, all named 'foo', with different IterationInfos.
+ var benchmarkNames = ['bm A', 'bm B'];
+ var storyGroupingKeys0 = ['A', 'B'];
+ var storyGroupingKeys1 = ['C', 'D'];
+ var storyNames = ['story A', 'story B'];
+ var starts = [1439708400000, 1439794800000];
+ var labels = ['label A', 'label B'];
+
+ for (var benchmarkName of benchmarkNames) {
+ for (var storyGroupingKey0 of storyGroupingKeys0) {
+ for (var storyGroupingKey1 of storyGroupingKeys1) {
+ for (var storyName of storyNames) {
+ for (var startMs of starts) {
+ for (var storysetCounter = 0; storysetCounter < 2;
+ ++storysetCounter) {
+ for (var storyCounter = 0; storyCounter < 2; ++storyCounter) {
+ for (var label of labels) {
+ var numeric = TEST_NUMERIC_BUILDER.build();
+ for (var i = 0; i < 100; ++i)
+ numeric.add(Math.random() * 1000);
+
+ var value = new tr.v.NumericValue('foo', numeric);
+ values.addValue(value);
+
+ new tr.v.d.IterationInfo({
+ storyGroupingKeys: {
+ storyGroupingKey0: storyGroupingKey0,
+ storyGroupingKey1: storyGroupingKey1
+ },
+ benchmarkName: benchmarkName,
+ storyDisplayName: storyName,
+ benchmarkStartMs: startMs,
+ storysetRepeatCounter: storysetCounter,
+ storyRepeatCounter: storyCounter,
+ label: label,
+ }).addToValue(value);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ table.values = values;
+ this.addHTMLOutput(table);
+ var baseTable = tr.b.findDeepElementMatchingPredicate(
+ table, elem => elem.tagName === 'TR-UI-B-TABLE');
+
+ assert.lengthOf(baseTable.tableColumns, 3);
+ assert.strictEqual('Name', baseTable.tableColumns[0].title);
+ assert.strictEqual('label A', baseTable.tableColumns[1].title);
+ assert.strictEqual('label B', baseTable.tableColumns[2].title);
+
+ assert.lengthOf(baseTable.tableRows, 1);
+ assert.strictEqual('foo', baseTable.tableRows[0].name);
+ assert.lengthOf(baseTable.tableRows[0].subRows, 2);
+
+ // assertions only report their arguments, which is not enough information
+ // to diagnose problems with nested structures like tableRows -- the path to
+ // the particular row is needed. This code would be a bit simpler if each
+ // row were given a named variable, but the path to each subRow would still
+ // need to be tracked in order to provide for diagnosing.
+ var subRowPath = [];
+ var getSubRow = () => getTableRowAtPath(baseTable, subRowPath);
+
+ for (var i = 0; i < benchmarkNames.length; ++i) {
+ subRowPath.push(i);
+ assert.lengthOf(getSubRow().subRows, 2, subRowPath);
+ assert.strictEqual(benchmarkNames[i], getSubRow().name, subRowPath);
+
+ for (var s = 0; s < storyGroupingKeys0.length; ++s) {
+ subRowPath.push(s);
+ assert.lengthOf(getSubRow().subRows, 2, subRowPath);
+ assert.strictEqual('storyGroupingKey0: ' + storyGroupingKeys0[s],
+ getSubRow().name, subRowPath);
+
+ for (var t = 0; t < storyGroupingKeys1.length; ++t) {
+ subRowPath.push(t);
+ assert.lengthOf(getSubRow().subRows, 2, subRowPath);
+ assert.strictEqual('storyGroupingKey1: ' + storyGroupingKeys1[t],
+ getSubRow().name, subRowPath);
+
+ for (var j = 0; j < storyNames.length; ++j) {
+ subRowPath.push(j);
+ assert.lengthOf(getSubRow().subRows, 2, subRowPath);
+ assert.strictEqual(storyNames[j], getSubRow().name, subRowPath);
+
+ for (var k = 0; k < starts.length; ++k) {
+ subRowPath.push(k);
+ assert.lengthOf(getSubRow().subRows, 2, subRowPath);
+ assert.strictEqual(tr.b.formatDate(new Date(starts[k])),
+ getSubRow().name, subRowPath);
+
+ for (var l = 0; l < 2; ++l) {
+ subRowPath.push(l);
+ assert.lengthOf(getSubRow().subRows, 2, subRowPath);
+ assert.strictEqual('storyset repeat ' + l, getSubRow().name,
+ subRowPath);
+
+ for (var m = 0; m < 2; ++m) {
+ subRowPath.push(m);
+ assert.lengthOf(getSubRow().subRows, 1, subRowPath);
+ assert.strictEqual('story repeat ' + m, getSubRow().name,
+ subRowPath);
+
+ subRowPath.push(0);
+ assert.strictEqual('iteration', getSubRow().name, subRowPath);
+ subRowPath.pop();
+
+ subRowPath.pop();
+ }
+ subRowPath.pop();
+ }
+ subRowPath.pop();
+ }
+ subRowPath.pop();
+ }
+ subRowPath.pop();
+ }
+ subRowPath.pop();
+ }
+ subRowPath.pop();
+ }
+ });
+
+ test('instantiation_mergeScalarNumerics', function() {
+ var table = document.createElement('tr-v-ui-value-set-table');
+ var values = new tr.v.ValueSet();
+ // Add 32 NumericValues, all named 'foo', with different IterationInfos.
+ var benchmarkNames = ['bm A', 'bm B'];
+ var storyNames = ['story A', 'story B'];
+ var starts = [1439708400000, 1439794800000];
+ var labels = ['label A', 'label B'];
+
+ for (var benchmarkName of benchmarkNames) {
+ for (var storyName of storyNames) {
+ for (var startMs of starts) {
+ for (var storysetCounter = 0; storysetCounter < 2;
+ ++storysetCounter) {
+ for (var storyCounter = 0; storyCounter < 2; ++storyCounter) {
+ for (var label of labels) {
+ var numeric = new tr.v.ScalarNumeric(
+ tr.v.Unit.byName.timeDurationInMs_smallerIsBetter,
+ Math.random() * 1000);
+ var value = new tr.v.NumericValue('foo', numeric);
+ values.addValue(value);
+
+ new tr.v.d.IterationInfo({
+ benchmarkName: benchmarkName,
+ storyDisplayName: storyName,
+ benchmarkStartMs: startMs,
+ storysetRepeatCounter: storysetCounter,
+ storyRepeatCounter: storyCounter,
+ label: label,
+ }).addToValue(value);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ table.values = values;
+ this.addHTMLOutput(table);
+ var baseTable = tr.b.findDeepElementMatchingPredicate(
+ table, elem => elem.tagName === 'TR-UI-B-TABLE');
+
+ assert.lengthOf(baseTable.tableColumns, 3);
+ assert.strictEqual('Name', baseTable.tableColumns[0].title);
+ assert.strictEqual('label A', baseTable.tableColumns[1].title);
+ assert.strictEqual('label B', baseTable.tableColumns[2].title);
+
+ assert.lengthOf(baseTable.tableRows, 1);
+ assert.strictEqual('foo', baseTable.tableRows[0].name);
+ assert.lengthOf(baseTable.tableRows[0].subRows, 2);
+
+ // assertions only report their arguments, which is not enough information
+ // to diagnose problems with nested structures like tableRows -- the path to
+ // the particular row is needed. This code would be a bit simpler if each
+ // row were given a named variable, but the path to each subRow would still
+ // need to be tracked in order to provide for diagnosing.
+ var subRowPath = [];
+ var getSubRow = () => getTableRowAtPath(baseTable, subRowPath);
+
+ for (var i = 0; i < benchmarkNames.length; ++i) {
+ subRowPath.push(i);
+ assert.lengthOf(getSubRow().subRows, 2, subRowPath);
+ assert.strictEqual(benchmarkNames[i], getSubRow().name, subRowPath);
+
+ for (var j = 0; j < storyNames.length; ++j) {
+ subRowPath.push(j);
+ assert.lengthOf(getSubRow().subRows, 2, subRowPath);
+ assert.strictEqual(storyNames[j], getSubRow().name, subRowPath);
+
+ for (var k = 0; k < starts.length; ++k) {
+ subRowPath.push(k);
+ assert.lengthOf(getSubRow().subRows, 2, subRowPath);
+ assert.strictEqual(tr.b.formatDate(new Date(starts[k])),
+ getSubRow().name, subRowPath);
+
+ for (var l = 0; l < 2; ++l) {
+ subRowPath.push(l);
+ assert.lengthOf(getSubRow().subRows, 2, subRowPath);
+ assert.strictEqual('storyset repeat ' + l, getSubRow().name,
+ subRowPath);
+
+ for (var m = 0; m < 2; ++m) {
+ subRowPath.push(m);
+ assert.lengthOf(getSubRow().subRows, 1, subRowPath);
+ assert.strictEqual('story repeat ' + m, getSubRow().name,
+ subRowPath);
+ subRowPath.push(0);
+ assert.strictEqual('iteration', getSubRow().name, subRowPath);
+ subRowPath.pop();
+ subRowPath.pop();
+ }
+ subRowPath.pop();
+ }
+ subRowPath.pop();
+ }
+ subRowPath.pop();
+ }
+ subRowPath.pop();
+ }
+ });
+});
+</script>
« no previous file with comments | « tracing/tracing/value/ui/value_set_table.html ('k') | tracing/tracing/value/ui/value_set_view.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698