blob: f9d471eaa0a368e62e276ab62affa948ca0f2991 [file] [log] [blame]
// Copyright 2019 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.
import 'package:devtools_app/src/trees.dart';
import 'package:test/test.dart';
void main() {
group('TreeNode', () {
test('depth', () {
expect(testTreeNode.depth, equals(4));
expect(treeNode2.depth, equals(3));
expect(treeNode3.depth, equals(1));
});
test('root', () {
expect(treeNode2.root, equals(treeNode0));
});
test('level', () {
expect(testTreeNode.level, equals(0));
expect(treeNode2.level, equals(1));
expect(treeNode5.level, equals(3));
});
test('expand and collapse', () {
expect(testTreeNode.isExpanded, isFalse);
testTreeNode.expand();
expect(testTreeNode.isExpanded, isTrue);
testTreeNode.collapse();
expect(testTreeNode.isExpanded, isFalse);
breadthFirstTraversal<TestTreeNode>(testTreeNode,
action: (TreeNode node) {
expect(node.isExpanded, isFalse);
});
testTreeNode.expandCascading();
breadthFirstTraversal<TestTreeNode>(testTreeNode,
action: (TreeNode node) {
expect(node.isExpanded, isTrue);
});
testTreeNode.collapseCascading();
breadthFirstTraversal<TestTreeNode>(testTreeNode,
action: (TreeNode node) {
expect(node.isExpanded, isFalse);
});
});
test('addChild', () {
final parent = TestTreeNode();
final child = TestTreeNode();
expect(parent.children, isEmpty);
expect(child.parent, isNull);
parent.addChild(child);
expect(parent.children, isNotEmpty);
expect(parent.children.first, equals(child));
expect(child.parent, equals(parent));
});
});
test('containsChildWithCondition', () {
expect(
treeNode0.containsChildWithCondition((TestTreeNode node) {
return node == treeNode1;
}),
isTrue,
);
expect(
treeNode0.containsChildWithCondition((TestTreeNode node) {
return node.children.length == 2;
}),
isTrue,
);
expect(
treeNode0.containsChildWithCondition((TestTreeNode node) {
return node.isExpanded;
}),
isFalse,
);
});
}
final treeNode0 = TestTreeNode();
final treeNode1 = TestTreeNode();
final treeNode2 = TestTreeNode();
final treeNode3 = TestTreeNode();
final treeNode4 = TestTreeNode();
final treeNode5 = TestTreeNode();
final TreeNode testTreeNode = treeNode0
..addChild(treeNode1)
..addChild(
treeNode2..addChild(treeNode3)..addChild(treeNode4..addChild(treeNode5)));
class TestTreeNode extends TreeNode<TestTreeNode> {}