packages feed

hedgehog-classes-0.2.3: test/Spec/Category.hs

module Spec.Category (testCategory, testCommutativeCategory) where

import Control.Category
import Hedgehog
import Hedgehog.Classes
import Prelude hiding ((.), id)

testCategory :: [(String, [Laws])]
testCategory =
  [ ("ProxyC", [categoryLaws genProxyC])
  ]

testCommutativeCategory :: [(String, [Laws])]
testCommutativeCategory =
  [ ("ProxyC", [commutativeCategoryLaws genProxyC])
  ]

data ProxyC a b = ProxyC
  deriving (Eq, Show)

instance Category ProxyC where
  id = ProxyC
  _ . _ = ProxyC

genProxyC :: Gen a -> Gen b -> Gen (ProxyC a b)
genProxyC _ _ = pure ProxyC