managed-functions-1.1.0.0: test/Spec/Managed/Probe/ToProbe.hs
module Spec.Managed.Probe.ToProbe where
import Data.Typeable (typeOf)
import Managed hiding (describe)
import Managed.Exception
import Spec.Data
import Test.Hspec
spec :: Spec
spec = do
describe "toProbe" $ do
it "converts a nullary function (constant) to a Probe" $ do
call probeN [] >>= (`shouldBe` show A)
it "converts a unary function to a Probe" $ do
call probeU [show B] >>= (`shouldBe` show B)
it "converts a binary function to a Probe" $ do
call probeB [show A, show B] >>= (`shouldBe` show C)
it "converts an IO function to a Probe" $ do
call probeIO [show A] >>= (`shouldBe` show A)
it "rejects wrong number of parameters" $ do
call probeN [show B] `shouldThrow` (== BadNumberOfArguments 0 1)
call probeU [] `shouldThrow` (== BadNumberOfArguments 1 0)
call probeU [show B, show B] `shouldThrow` (== BadNumberOfArguments 1 2)
call probeB [show B] `shouldThrow` (== BadNumberOfArguments 2 1)
it "creates the correct typeRep" $ do
typeRep probeB `shouldBe` typeOf binary
typeRep probeIO `shouldBe` typeOf unaryIO