blob: 8a11a8f8cc707ff00504bd519d247777fc5a8a6a [file] [log] [blame]
// Copyright 2017 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.
/**
* @fileoverview using private properties isn't a Closure violation in tests.
* @suppress {accessControls}
*/
DataGridTestRunner.dumpDataGrid = function(root, descentIntoCollapsed, prefix) {
if (!prefix)
prefix = '';
const suffix = root.selected ? ' <- selected' : '';
const columnKeys = root.dataGrid._columnsArray.map(column => column.id);
const outputColumns = [];
for (const key of columnKeys) {
if (key in root.data)
outputColumns.push(root.data[key]);
}
if (outputColumns.length)
TestRunner.addResult(prefix + outputColumns.join(' | ') + suffix);
if (!descentIntoCollapsed && !root.expanded)
return;
for (const child of root.children)
DataGridTestRunner.dumpDataGrid(child, descentIntoCollapsed, prefix + ' ');
};
DataGridTestRunner.validateDataGrid = function(root) {
const children = root.children;
for (let i = 0; i < children.length; ++i) {
const child = children[i];
if (child.parent !== root)
throw 'Wrong parent for child ' + child.data.id + ' of ' + root.data.id;
if (child.nextSibling !== ((i + 1 === children.length ? null : children[i + 1])))
throw 'Wrong child.nextSibling for ' + child.data.id + ' (' + i + ' of ' + children.length + ') ';
if (child.previousSibling !== ((i ? children[i - 1] : null)))
throw 'Wrong child.previousSibling for ' + child.data.id + ' (' + i + ' of ' + children.length + ') ';
if (child.parent && !child.parent._isRoot && child.depth !== root.depth + 1)
throw 'Wrong depth for ' + child.data.id + ' expected ' + (root.depth + 1) + ' but got ' + child.depth;
DataGridTestRunner.validateDataGrid(child);
}
const selectedNode = root.dataGrid.selectedNode;
if (!root.parent && selectedNode) {
if (!selectedNode.selectable)
throw 'Selected node is not selectable';
let node = selectedNode;
for (; node && node !== root; node = node.parent) {
}
if (!node)
throw 'Selected node (' + selectedNode.data.id + ') is not within the DataGrid';
}
};
DataGridTestRunner.dumpAndValidateDataGrid = function(root) {
DataGridTestRunner.dumpDataGrid(root);
DataGridTestRunner.validateDataGrid(root);
};