module Main where import Test.Hspec import Test.Hspec.QuickCheck import Control.Monad.Log import System.Random.MWC.Probability import System.Random.MWC.Probability.Transition main :: IO () main = hspec spec spec :: Spec spec = describe "System.Random.MWC.Probability.Transition" $ do it "computes the final state of a sequence of deterministic transitions" $ do (_, z) <- runT01 z `shouldBe` 5 -- prop "ourAdd is commutative" $ \x y -> -- ourAdd x y `shouldBe` ourAdd y x runT01 :: IO ([Double], Double) runT01 = create >>= runTransition (putStrLn . withSeverity id) t01 5 0 t01 :: Monad m => Transition (WithSeverity String) Double m Double t01 = mkTransition modelf statef logf where modelf _ = pure (1 :: Double) statef s t = (t, s + 1) logf s _ _ = WithSeverity Informational (show s)