DataGridTestRunner.dumpDataGrid=function(dataGrid){TestRunner.addResult(DataGridTestRunner.dumpDataGridIntoString(dataGrid));};DataGridTestRunner.dumpDataGridIntoString=function(dataGrid){var tableElement=dataGrid.element;var textRows=[];var textWidths=[];var rows=tableElement.getElementsByTagName('tr');for(var i=0;i<rows.length;++i){var row=rows[i];if(!row.offsetHeight||!row.textContent)
continue;var textCols=[];var cols=row.getElementsByTagName('td');for(var j=0;j<cols.length;++j){var col=cols[j];if(!col.offsetHeight)
continue;var index=textCols.length;var content=col.textContent||(col.firstChild&&col.firstChild.title)||'';var text=padding(col)+content;textWidths[index]=Math.max(textWidths[index]||0,text.length);textCols[index]=text;}
if(textCols.length)
textRows.push(textCols);}
function padding(target){var cell=target.enclosingNodeOrSelfWithNodeName('td');if(!cell.classList.contains('disclosure'))
return'';var node=dataGrid.dataGridNodeFromNode(target);var spaces=(node?node.depth:0)*2;return Array(spaces+1).join(' ');}
function alignText(text,width){var spaces=width-text.length;return text+Array(spaces+1).join(' ');}
var output=[];for(var i=0;i<textRows.length;++i){var line='';for(var j=0;j<textRows[i].length;++j){if(j)
line+=' | ';line+=alignText(textRows[i][j],textWidths[j]);}
line+='|';output.push(line);}
return output.join('\n');};DataGridTestRunner.validateDataGrid=function(root){var children=root.children;for(var i=0;i<children.length;++i){var 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);}
var selectedNode=root.dataGrid.selectedNode;if(!root.parent&&selectedNode){if(!selectedNode.selectable)
throw'Selected node is not selectable';for(var node=selectedNode;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);};;