2017-03-01 2 views
0

私はHaskellでHUnitを使っていくつかのテストケースを書いて、Gloss Graphicsライブラリを使った関数を書こうとしています。GlossライブラリのRGBAコンストラクタを使用して画像のテストケースを生成するにはどうすればよいですか?

機能:画像の種類を持っている

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

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

私はあなたのようなものが表示されるコンソールで引数「黒」で、この関数の呼び出しが表示された場合。私の質問は、どうすればこのようなものに対してテストケースを適切に書くのですか?私は書くことができますどのように

error: Data constructor not in scope: RGBA 

誰もが任意のアイデアを持っている:それはコンパイルできない

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

それは次のよう言うので、私のようなテストを書くためにしようとした場合

問題が発生します私の機能のためのテストケース?

答えて

2

RGBAコンストラクタを取得する場所はわかりませんが、haddocksを見ると、Colorのコンストラクタはありません。

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

EDIT:あなたはおそらくmakeColor機能が欲しいRGBAが存在するが、グロスのバージョンでは、私はそれを探していますはい、user24 ... 38はすぐそこですInternalモジュールの一部とではありません他の場所にエクスポートされます。一般的なルールとして、外部ユーザーはInternalモジュールを利用するべきではありません。これは、APIが変更されたり、インターフェイスが何らかの形で安全でない(例:不変条件を保持しない)ためです。

+0

[このようなコンストラクタがあります](https://hackage.haskell.org/package/gloss-rendering-1.10.3.5/docs/src/Graphics-Gloss-Internals-Data-Color.html#Color)それは光沢の依存関係で定義されますが、 'Color'は抽象であり、コンストラクタはエクスポートされません。実際には、「そのようなコンストラクタはありません」という言葉は真実ですが、おそらく、この小柄な区別は、誰かの理解に役立つでしょう。 – user2407038

関連する問題