test.check生成具有不同节点类型的树

时间:2015-12-30 16:23:17

标签: clojure tree test.check generative-testing

我想生成一个具有不同节点类型的树。对于每个节点类型,存在可以成为该节点的子节点的节点类型的不同可能组合。任何节点类型都可能没有子节点。

recursive-gen本质上迫使我通过一个叶子生成器开始构建树,这个生成器生成一个没有子节点的任何类型的节点。从子生成器创建生成器的函数实质上必须生成所需的父节点类型,并在子生成器上使用such-that,直到它生成了所需的子节点类型。这通常会导致运行时错误,表示{10}尝试后such-that失败。

由于无法从父生成器参数化子生成器,有哪些替代选项?

1 个答案:

答案 0 :(得分:1)

such-that类似的策略可能是生成一个包含无限制子项的完整树,然后通过过滤掉每个级别的不允许的子项来对其进行后处理。

明显的缺点是你最多可能会在大部分时间里获得相当小的树木,以及做大量的一次性工作。