gpt4 book ai didi

unit-testing - 具有多种结构的 SML 签名

转载 作者:行者123 更新时间:2023-12-04 04:23:37 25 4
gpt4 key购买 nike

假设我有一个 SML 签名 ALPHA。但我也有多个结构/仿函数 alpha1、alpha2 等,我希望与 ALPHA 一起使用。

我的问题是,如果我有一个在这些模块之外执行单元测试的结构,我将如何单独测试 ALPHA 签名而不必指定我正在使用的结构?

为了正确看待事情,这里有一些代码:

signature ALPHA = 
sig
val func1
val func2
end


structure alpha1 :> ALPHA =
struct
fun func1 = (* Implementation *)
fun func1 = (* Implementation *)
end

functor alpha2 (D: DATA) :> ALPHA =
struct
fun func1 = D.x
fun func2 = D.y
end

(** Unit testing module **)

structure Tester =
struct

(** What test cases do I put here? **)

end

最佳答案

您可以使 Tester 成为一个仿函数,将带有签名 ALPHA 的结构作为输入。例如:

signature TESTSUITE =
sig
val tests : bool list
end

functor AlphaTester (Alpha : ALPHA) :> TESTSUITE =
struct
val func1_test_1 = Alpha.func1 ... = expected1
val func2_test_2 = Alpha.func2 ... = expected2
val tests = [ func1_test_1
, func2_test_1 ]
end

structure Alpha1Tester = AlphaTester(Alpha1)
structure Alpha2Tester = AlphaTester(Alpha2(SomeD))
structure AllTests :> TESTSUITE =
struct
val tests = AlphaTester1.tests @ AlphaTester2.tests
end

关于unit-testing - 具有多种结构的 SML 签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33163874/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com