【发布时间】:2013-12-30 16:25:08
【问题描述】:
给定一个非常简单的结构,例如:
public class TreeNode
{
public int ID { get; set; }
public List<TreeNode> Children { get; set; }
}
TreeNode 可能有其他属性。
当以下列方式使用时:
var tree = new List<TreeNode>(); //no root node
如果我根据特定标准对树执行添加/更新/删除操作。例如,基于我上面提到的一个或多个其他属性删除节点,我想比较更改前后的树图,然后通过单元测试验证一些关注:
- 树保持不变
- 指定的节点被移除
- 已添加指定节点
- 指定节点已更新
- 上述 3 项同时还验证了树的其余部分是否未更改。
理想情况下,我会抛出一个期望,列出未找到、未预期等的节点。但是,在这个阶段,我会对我的检查结果为真/假感到满意。
现有项目是否有任何已知的模式/算法可以帮助解决这个问题?
我很高兴使用其他语言的伪代码或示例,只要它们不依赖我无法在 .NET 中复制的功能。
我的树的深度不太可能超过 7 或 8 层,总共不超过一百个节点,因为它将是测试数据,所以蛮力循环很好,此时性能不是考虑因素。
我真的在寻找有关如何解决此问题的提示、技巧、建议和代码。
TIA
【问题讨论】:
标签: c# unit-testing tree c#-3.0 pattern-matching