【问题标题】:How do I generate test cases for pictures using the RGBA constructor in the Gloss library?如何使用 Gloss 库中的 RGBA 构造函数为图片生成测试用例?
【发布时间】:2017-07-20 20:32:49
【问题描述】:

我正在尝试在 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

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

【问题讨论】:

    标签: haskell gloss


    【解决方案1】:

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

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

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

    【讨论】:

    • There is such a constructor,定义在gloss的依赖中,但Color是抽象的,构造函数没有导出。实际上,“没有这样的构造函数”是一个真实的陈述,但也许这种迂腐的区别对某人的理解是有用的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多