0

我正在尝试在 Haskell 中使用 HUnit 为使用 Gloss Graphics 库的函数编写一些测试用例。

功能:

makePicture :: Color -> Picture
makePicture c = Color c $ Circle 80

如果我在控制台中使用参数“black”显示对该函数的调用,您会看到如下内容:

Color (RGBA 0.0 0.0 0.0 1.0) (Circle 80.0)

它具有图片的类型。我的问题是如何正确编写这样的测试用例?

如果我尝试编写如下测试,则会出现问题:

test = TestCase $ assertEqual "makePicture" (Color (RGBA 0.0 0.0 0.0 1.0) (Circle 80.0)) (makePicture black)

它无法编译,因为它说以下内容:

error: Data constructor not in scope: RGBA

任何人都知道如何为我的函数编写测试用例?

4

1 回答 1

2

我不知道你从哪里得到RGBA构造函数,但是看看黑线鳕没有这样的构造函数Color。您可能需要以下makeColor功能:

makeColor :: Float -> Float -> Float -> Float -> Color

编辑:是的,user24...38 是正确的,RGBA但在 Gloss 版本中,我正在查看它是Internal模块的一部分,而不是在其他地方导出。作为一般规则,外部用户不应利用Internal模块,因为 API 可能会更改,或者接口可能会在某种程度上不安全(例如:不维护不变量)。

于 2017-03-01T15:21:28.450 回答