テストに関する質問です。

data TX = DX TY
data TY = 何か

このような型定義が同じモジュールでなされています。
型コンストラクタTXや、関数f::Int -> TXなどはエクスポートされていますが、
型コンストラクタTYはエクスポートされていません。

ここで、ある範囲内の値に関数fを適用したときに
同一のTX型の値が返ってくることをテストしたいです。

ただし、実際にアプリケーションが稼動しているときには必要ないので、
TX型もTY型もEq型クラスのインスタンスにはしていません。

よって、このままでは、テストのためにこのモジュールをインポートしているファイル内で
deriving instance Eq TX としてもエラーが出ます(型コンストラクタTYが公開されていないので)。


私は下記のどちらかを諦める必要があるのでは、と思いました。
  1. 型コンストラクタTYをエクスポートしないこと
  2. TX型やTY型をEq型クラスのインスタンスにしないこと
(他の方法もいくつか思いつきましたが諸事情で不採用にしました)

しかし、もしかしたら、これらのことを諦めずに解決するような、
私の知らない方法があるのかも知れません。

例えば、プラグマやコンパイルオプションなどで何かしら宣言すると、
エクスポートされていないの型や関数などが限定的に使えるとか。
cabal ファイルのTest-Suiteで何か宣言すればエクスポートの範囲が変化するとか。

何かないでしょうか。