在Prolog中测试。如何运行单元测试以检查我的输出文件是否与我的文本文件匹配?

时间:2018-12-10 08:15:54

标签: unit-testing testing prolog swi-prolog plunit

我正在使用prolog(swipl)实现自然语言生成器。

我有一个.txt测试文件,其中包含一些我应该能够以这种格式生成的短语:

[goal,identify,type_object,animal,object,cat,event,ran away,when,[last,mont],where,[]]
[which,cats,ran away,last,month,?]

[goal,identify,type_object,animal,object,dog,event,ran,when,[last,mont],where,[]]
[which,dogs,ran away,last,year,?]

以此类推...

如何使用plunit(或其他方法?)检查测试文件中的所有元素是否都在返回true / false的输出文件中?

1 个答案:

答案 0 :(得分:1)

read/1可能就是您想要的:

假设我定义了一个事实p/1

p([a,b,c]).

然后我可以从标准输入中读取一个术语并进行比较(以|:开头的行由SWI Prolog表示为用户输入,您的实现可能有所不同):

?- read(X), p(X).
|: [a,b,c].

X = [a, b, c].

?- read(X), p(X).
|: [].

false.